summaryrefslogtreecommitdiff
path: root/test/ruby/test_system.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_system.rb')
-rw-r--r--test/ruby/test_system.rb77
1 files changed, 77 insertions, 0 deletions
diff --git a/test/ruby/test_system.rb b/test/ruby/test_system.rb
new file mode 100644
index 0000000000..5377c60a92
--- /dev/null
+++ b/test/ruby/test_system.rb
@@ -0,0 +1,77 @@
+require 'test/unit'
+
+$KCODE = 'none'
+
+class TestSystem < Test::Unit::TestCase
+ def test_system
+ assert(`echo foobar` == "foobar\n")
+ assert(`./miniruby -e 'print "foobar"'` == 'foobar')
+
+ tmp = open("script_tmp", "w")
+ tmp.print "print $zzz\n";
+ tmp.close
+
+ assert(`./miniruby -s script_tmp -zzz` == 'true')
+ assert(`./miniruby -s script_tmp -zzz=555` == '555')
+
+ tmp = open("script_tmp", "w")
+ tmp.print "#! /usr/local/bin/ruby -s\n";
+ tmp.print "print $zzz\n";
+ tmp.close
+
+ assert(`./miniruby script_tmp -zzz=678` == '678')
+
+ tmp = open("script_tmp", "w")
+ tmp.print "this is a leading junk\n";
+ tmp.print "#! /usr/local/bin/ruby -s\n";
+ tmp.print "print $zzz\n";
+ tmp.print "__END__\n";
+ tmp.print "this is a trailing junk\n";
+ tmp.close
+
+ assert(`./miniruby -x script_tmp` == 'nil')
+ assert(`./miniruby -x script_tmp -zzz=555` == '555')
+
+ tmp = open("script_tmp", "w")
+ for i in 1..5
+ tmp.print i, "\n"
+ end
+ tmp.close
+
+ `./miniruby -i.bak -pe 'sub(/^[0-9]+$/){$&.to_i * 5}' script_tmp`
+ done = true
+ tmp = open("script_tmp", "r")
+ while tmp.gets
+ if $_.to_i % 5 != 0
+ done = false
+ break
+ end
+ end
+ tmp.close
+ assert(done)
+
+ File.unlink "script_tmp" or `/bin/rm -f "script_tmp"`
+ File.unlink "script_tmp.bak" or `/bin/rm -f "script_tmp.bak"`
+
+ $bad = false
+ if (dir = File.dirname(File.dirname($0))) == '.'
+ dir = ""
+ else
+ dir << "/"
+ end
+
+ def valid_syntax?(code, fname)
+ eval("BEGIN {return true}\n#{code}", nil, fname, 0)
+ rescue Exception
+ puts $!.message
+ false
+ end
+
+ for script in Dir["#{dir}{lib,sample,ext}/**/*.rb"]
+ unless valid_syntax? IO::read(script), script
+ $bad = true
+ end
+ end
+ assert(!$bad)
+ end
+end