diff --git a/docs/creating-plugins.md b/docs/creating-plugins.md index ea43b165..fece8b32 100644 --- a/docs/creating-plugins.md +++ b/docs/creating-plugins.md @@ -68,13 +68,14 @@ This must be used wisely. For now AFAIK, it's only being used in the Elixir plug You can use it as follows ```sh -asdf plugin-test +asdf plugin-test [test-command] ``` -So for example to test the Elixir plugin, we would run +The two first arguments are required. A command can also be passed to check it runs correctly. +For example to test the NodeJS plugin, we could run ```sh -asdf plugin-test elixir https://github.com/asdf-vm/asdf-elixir.git +asdf plugin-test nodejs https://github.com/asdf-vm/asdf-nodejs.git 'node --version' ``` We strongly recommend you test your plugin on TravisCI, to make sure it works @@ -84,7 +85,7 @@ Here is a sample `.travis.yml` file, customize it to your needs ```yaml language: c -script: asdf plugin-test elixir https://github.com/asdf-vm/asdf-elixir.git +script: asdf plugin-test nodejs https://github.com/asdf-vm/asdf-nodejs.git 'node --version' before_script: - git clone https://github.com/asdf-vm/asdf.git asdf - . asdf/asdf.sh diff --git a/lib/commands/plugin-test.sh b/lib/commands/plugin-test.sh index 07bd1f47..86af4029 100644 --- a/lib/commands/plugin-test.sh +++ b/lib/commands/plugin-test.sh @@ -6,9 +6,11 @@ fail_test() { plugin_test_command() { export ASDF_DIR=$(mktemp -dt asdf.XXXX) + git clone https://github.com/asdf-vm/asdf.git $ASDF_DIR local plugin_name=$1 local plugin_url=$2 + local plugin_command="${@:3}" if [ -z "$plugin_name" -o -z "$plugin_url" ]; then fail_test "please provide a plugin name and url" @@ -33,11 +35,32 @@ plugin_test_command() { fail_test "list-all did not return any version" fi - (asdf install $plugin_name ${versions[0]}) + latest_version=${versions[${#versions[@]} - 1]} + + (asdf install $plugin_name $latest_version) if [ $? -ne 0 ]; then fail_test "install exited with an error" fi + cd $ASDF_DIR + (asdf local $plugin_name $latest_version) + if [ $? -ne 0 ]; then + fail_test "install did not add the requested version" + fi + + (asdf reshim $plugin_name) + if [ $? -ne 0 ]; then + fail_test "could not reshim plugin" + fi + + if [ -n "$plugin_command" ]; then + (PATH="$ASDF_DIR/bin":"$ASDF_DIR/shims":$PATH eval "$plugin_command") + exit_code=$? + if [ $exit_code -ne 0 ]; then + fail_test "$plugin_command failed with exit code $?" + fi + fi + rm -rf $ASDF_DIR }