-
-
Notifications
You must be signed in to change notification settings - Fork 920
/
test_backquote.rb
62 lines (54 loc) · 1.66 KB
/
test_backquote.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
require 'test/unit'
require 'test/test_helper'
require 'rbconfig'
class TestBackquote < Test::Unit::TestCase
include TestHelper
WINDOWS = Config::CONFIG['host_os'] =~ /Windows|mswin/
def test_backquote_special_commands
if File.exists?("/bin/echo")
output = `/bin/echo hello`
assert_equal("hello\n", output)
end
end
def test_system_special_commands
if File.exists?("/bin/true")
assert(system("/bin/true"))
assert_equal(0, $?.exitstatus)
end
if File.exists?("/bin/false")
assert(! system("/bin/false"))
assert($?.exitstatus > 0)
end
end
def test_backquote_ruby
assert_equal "true\n", `ruby -e "puts true"`
end
#JRUBY-2251
def test_empty_backquotes
if (!WINDOWS)
assert_equal("", ``) # empty
assert_equal("", ` `) # spaces
assert_equal("", `\n`)
else # we just check that empty backquotes won't blow up JRuby
`` rescue nil
` ` rescue nil
`\n` rescue nil
end
end
# http://jira.codehaus.org/browse/JRUBY-1557
def test_backquotes_with_redirects_pass_through_shell
if File.exists?("/dev/null")
File.open("arguments", "w") do |f|
f << %q{#!/bin/sh} << "\n"
f << %q{echo "arguments: $@"}
end
File.chmod 0755, "arguments"
assert_equal "arguments: one two\n", `./arguments one two 2> /dev/null`
assert_equal "", `./arguments three four > /dev/null`
ruby = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
assert_equal "arguments: five six\n", jruby(%{-e 'puts "arguments: five six"' 2> /dev/null})
end
ensure
File.delete("arguments") rescue nil
end
end