diff --git a/conf.d/sdk.fish b/conf.d/sdk.fish index af3d753..c03a755 100644 --- a/conf.d/sdk.fish +++ b/conf.d/sdk.fish @@ -23,7 +23,7 @@ if test -f "$sdkman_init" end # Declare the sdk command for fish - function sdk + function sdk -d "Manage SDKs" # We need to leave stdin and stdout of sdk free for user interaction. # So, pipe PATH (which might have changed) through a file. # Now, getting the exit code of sdk itself is a hassle so pipe it as well. @@ -34,7 +34,6 @@ if test -f "$sdkman_init" set bashPath $bashDump[1] set sdkStatus $bashDump[2] - # If SDKMAN! succeeded, copy PATH here (might have changed) if [ $sdkStatus = 0 ] set newPath (string split : "$bashPath") diff --git a/test/wrapper.fish b/test/wrapper.fish new file mode 100644 index 0000000..8a0d4d3 --- /dev/null +++ b/test/wrapper.fish @@ -0,0 +1,40 @@ +set test_commands \ + "sdk" \ + "sdk version" \ + "sdk list java" \ + "sdk update" \ + "sdk use ant 1.9.9" +set test_count (count $test_commands) +set check_count (math "3 * $test_count") + +set sdk_init "$HOME/.sdkman/bin/sdkman-init.sh" + +function checksum -a file + sha256sum $file | cut -d " " -f 1 +end + +echo "Testing the sdk wrapper" +set failures 0 +for sdk_cmd in $test_commands + echo " Testing '$sdk_cmd'" + bash -c "source \"$sdk_init\" && $sdk_cmd > sout_bash; echo \"\$?\" > status_bash; echo "\$PATH" > path_bash" + fish -c "$sdk_cmd > sout_fish; echo \"\$status\" > status_fish; echo "\$PATH" > path_fish" + + # Adjust for different path syntax: replace spaces with colons + string join : (string split " " (cat path_fish)) > path_fish + + for out in sout status path + if [ (checksum "$out"_bash) != (checksum "$out"_fish) ] + echo " - $out bad:" + diff "$out"_bash "$out"_fish | sed -e 's/^/ /' + set failures (math $failures + 1) + else + echo " - $out ok!" + end + end + echo "" +end + +echo "Ran $test_count commands with 3 checks each." +echo "$failures/$check_count checks failed." +exit (math $failures != 0) \ No newline at end of file