aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2018-04-09 10:54:39 -0400
committerShea Levy <shea@shealevy.com>2018-04-09 10:54:39 -0400
commit7459388448278914662f796353279e84a49a5c99 (patch)
tree02157687950eefe6caa19922e9cb54b582563aef /tests
parentfd98fca7bbcea393957e63f25e36d82ada43e255 (diff)
parenta4c9b2595e6e22250e4e744a35fff3c7f9cd85d9 (diff)
Merge branch 'fix/ruby-shebang' of git://github.com/samueldr/nix
Diffstat (limited to 'tests')
-rw-r--r--tests/nix-shell.sh9
-rw-r--r--tests/shell.nix7
-rw-r--r--tests/shell.shebang.rb7
3 files changed, 23 insertions, 0 deletions
diff --git a/tests/nix-shell.sh b/tests/nix-shell.sh
index 063e97ce2..d25c456ce 100644
--- a/tests/nix-shell.sh
+++ b/tests/nix-shell.sh
@@ -39,3 +39,12 @@ chmod a+rx $TEST_ROOT/shell.shebang.sh
output=$($TEST_ROOT/shell.shebang.sh abc def)
[ "$output" = "foo bar abc def" ]
+
+# Test nix-shell shebang mode for ruby
+# This uses a fake interpreter that returns the arguments passed
+# This, in turn, verifies the `rc` script is valid and the `load()` script (given using `-e`) is as expected.
+sed -e "s|@SHELL_PROG@|$(type -p nix-shell)|" shell.shebang.rb > $TEST_ROOT/shell.shebang.rb
+chmod a+rx $TEST_ROOT/shell.shebang.rb
+
+output=$($TEST_ROOT/shell.shebang.rb abc ruby)
+[ "$output" = '-e load("'"$TEST_ROOT"'/shell.shebang.rb") -- abc ruby' ]
diff --git a/tests/shell.nix b/tests/shell.nix
index 5845d36fc..eb39f9039 100644
--- a/tests/shell.nix
+++ b/tests/shell.nix
@@ -45,5 +45,12 @@ let pkgs = rec {
bash = shell;
+ # ruby "interpreter" that outputs "$@"
+ ruby = runCommand "ruby" {} ''
+ mkdir -p $out/bin
+ echo 'printf -- "$*"' > $out/bin/ruby
+ chmod a+rx $out/bin/ruby
+ '';
+
inherit pkgs;
}; in pkgs
diff --git a/tests/shell.shebang.rb b/tests/shell.shebang.rb
new file mode 100644
index 000000000..ea67eb09c
--- /dev/null
+++ b/tests/shell.shebang.rb
@@ -0,0 +1,7 @@
+#! @SHELL_PROG@
+#! ruby
+#! nix-shell -I nixpkgs=shell.nix --no-substitute
+#! nix-shell --pure -p ruby -i ruby
+
+# Contents doesn't matter.
+abort("This shouldn't be executed.")