summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/ruby/command_line/dash_e_spec.rb2
-rw-r--r--spec/ruby/language/if_spec.rb17
-rw-r--r--spec/ruby/language/precedence_spec.rb10
-rw-r--r--test/ruby/test_flip.rb14
-rw-r--r--test/ruby/test_jit.rb3
5 files changed, 34 insertions, 12 deletions
diff --git a/spec/ruby/command_line/dash_e_spec.rb b/spec/ruby/command_line/dash_e_spec.rb
index 9f600eb414..70ecdd5dce 100644
--- a/spec/ruby/command_line/dash_e_spec.rb
+++ b/spec/ruby/command_line/dash_e_spec.rb
@@ -25,7 +25,7 @@ describe "The -e command line option" do
describe "with -n and a Fixnum range" do
before :each do
- @script = "-ne 'print if %s' #{fixture(__FILE__, "conditional_range.txt")}"
+ @script = "-W0 -ne 'print if %s' #{fixture(__FILE__, "conditional_range.txt")}"
end
it "mimics an awk conditional by comparing an inclusive-end range with $." do
diff --git a/spec/ruby/language/if_spec.rb b/spec/ruby/language/if_spec.rb
index 7f1ce8056d..fe207e77d5 100644
--- a/spec/ruby/language/if_spec.rb
+++ b/spec/ruby/language/if_spec.rb
@@ -235,19 +235,22 @@ describe "The if expression" do
describe "with a boolean range ('flip-flop' operator)" do
before :each do
ScratchPad.record []
+ @verbose = $VERBOSE
+ $VERBOSE = nil
end
after :each do
ScratchPad.clear
+ $VERBOSE = @verbose
end
it "mimics an awk conditional with a single-element inclusive-end range" do
- 10.times { |i| ScratchPad << i if (i == 4)..(i == 4) }
+ eval "10.times { |i| ScratchPad << i if (i == 4)..(i == 4) }"
ScratchPad.recorded.should == [4]
end
it "mimics an awk conditional with a many-element inclusive-end range" do
- 10.times { |i| ScratchPad << i if (i == 4)..(i == 7) }
+ eval "10.times { |i| ScratchPad << i if (i == 4)..(i == 7) }"
ScratchPad.recorded.should == [4, 5, 6, 7]
end
@@ -257,12 +260,12 @@ describe "The if expression" do
end
it "mimics a sed conditional with a many-element exclusive-end range" do
- 10.times { |i| ScratchPad << i if (i == 4)...(i == 5) }
+ eval "10.times { |i| ScratchPad << i if (i == 4)...(i == 5) }"
ScratchPad.recorded.should == [4, 5]
end
it "allows combining two flip-flops" do
- 10.times { |i| ScratchPad << i if (i == 4)...(i == 5) or (i == 7)...(i == 8) }
+ eval "10.times { |i| ScratchPad << i if (i == 4)...(i == 5) or (i == 7)...(i == 8) }"
ScratchPad.recorded.should == [4, 5, 7, 8]
end
@@ -280,18 +283,18 @@ describe "The if expression" do
it "evaluates the second conditions lazily with inclusive-end range" do
collector = proc { |i| ScratchPad << i }
- 10.times { |i| i if (i == 4)...collector[i] }
+ eval "10.times { |i| i if (i == 4)...collector[i] }"
ScratchPad.recorded.should == [5]
end
it "evaluates the second conditions lazily with exclusive-end range" do
collector = proc { |i| ScratchPad << i }
- 10.times { |i| i if (i == 4)..collector[i] }
+ eval "10.times { |i| i if (i == 4)..collector[i] }"
ScratchPad.recorded.should == [4]
end
it "scopes state by flip-flop" do
- store_me = proc { |i| ScratchPad << i if (i == 4)..(i == 7) }
+ store_me = eval("proc { |i| ScratchPad << i if (i == 4)..(i == 7) }")
store_me[1]
store_me[4]
proc { store_me[1] }.call
diff --git a/spec/ruby/language/precedence_spec.rb b/spec/ruby/language/precedence_spec.rb
index 2dcb9975bc..19edaf2efa 100644
--- a/spec/ruby/language/precedence_spec.rb
+++ b/spec/ruby/language/precedence_spec.rb
@@ -301,8 +301,14 @@ describe "Operators" do
from = 1
to = 2
# These are Range instances, not flip-flop
- (from..to ? 3 : 4).should == 3
- (from...to ? 3 : 4).should == 3
+ @verbose = $VERBOSE
+ $VERBOSE = nil
+ begin
+ (eval("from..to") ? 3 : 4).should == 3
+ (eval("from...to") ? 3 : 4).should == 3
+ ensure
+ $VERBOSE = @verbose
+ end
end
it "? : is right-associative" do
diff --git a/test/ruby/test_flip.rb b/test/ruby/test_flip.rb
index b8b05aed6d..8ea6416bdb 100644
--- a/test/ruby/test_flip.rb
+++ b/test/ruby/test_flip.rb
@@ -2,7 +2,16 @@
require 'test/unit'
class TestFlip < Test::Unit::TestCase
+ def setup
+ @verbose_bak, $VERBOSE = $VERBOSE, nil
+ end
+
+ def teardown
+ $VERBOSE = @verbose_bak
+ end
+
def test_flip_flop
+ eval <<-END
assert_equal [4,5], (1..9).select {|n| true if (n==4)..(n==5)}
assert_equal [4,5], (1..9).select {|n| true if (n==4)...(n==5)}
assert_equal [2], (1..9).select {|n| true if (n==2)..(n%2).zero?}
@@ -10,6 +19,7 @@ class TestFlip < Test::Unit::TestCase
assert_equal [4,5,7,8], (1..9).select {|n| true if (n==4)...(n==5) or (n==7)...(n==8)}
assert_equal [nil, 2, 3, 4, nil], (1..5).map {|x| x if (x==2..x==4)}
assert_equal [1, nil, nil, nil, 5], (1..5).map {|x| x if !(x==2..x==4)}
+ END
end
def test_hidden_key
@@ -25,13 +35,13 @@ class TestFlip < Test::Unit::TestCase
def test_shared_eval
bug7671 = '[ruby-core:51296]'
vs = (1..9).to_a
- vs.select {|n| if n==2..n==16 then 1 end}
+ eval("vs.select {|n| if n==2..n==16 then 1 end}")
v = eval("vs.select {|n| if n==3..n==6 then 1 end}")
assert_equal([*3..6], v, bug7671)
end
def test_shared_thread
- ff = proc {|n| true if n==3..n==5}
+ ff = eval("proc {|n| true if n==3..n==5}")
v = 1..9
a = true
th = Thread.new {
diff --git a/test/ruby/test_jit.rb b/test/ruby/test_jit.rb
index f212a3f21f..9bd50fe382 100644
--- a/test/ruby/test_jit.rb
+++ b/test/ruby/test_jit.rb
@@ -94,10 +94,13 @@ class TestJIT < Test::Unit::TestCase
end
def test_compile_insn_setspecial
+ verbose_bak, $VERBOSE = $VERBOSE, nil
assert_compile_once("#{<<~"begin;"}\n#{<<~"end;"}", result_inspect: 'true', insns: %i[setspecial])
begin;
true if nil.nil?..nil.nil?
end;
+ ensure
+ $VERBOSE = verbose_bak
end
def test_compile_insn_instancevariable