[PRISM] Modify test_coverage to take prism into account
This commit is contained in:
parent
94d6295b2d
commit
6509634eba
11
test/.excludes-prism/TestCoverage.rb
Normal file
11
test/.excludes-prism/TestCoverage.rb
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
exclude(:test_clear_with_branches, "unknown")
|
||||||
|
exclude(:test_eval, "unknown")
|
||||||
|
exclude(:test_branch_coverage_for_while_statement, "branch coverage in while")
|
||||||
|
exclude(:test_coverage_optimized_branch, "branch coverage in &.")
|
||||||
|
exclude(:test_branch_coverage_for_if_statement, "branch coverage in if")
|
||||||
|
exclude(:test_branch_coverage_for_safe_method_invocation, "branch coverage in &.")
|
||||||
|
exclude(:test_branch_coverage_for_pattern_matching, "branch coverage in pattern matching")
|
||||||
|
exclude(:test_tag_break_with_branch_coverage, "branch coverage in &.")
|
||||||
|
exclude(:test_branch_coverage_for_case_statement, "branch coverage in case")
|
||||||
|
exclude(:test_coverage_ensure_if_return, "branch coverage in if")
|
||||||
|
exclude(:test_branch_coverage_in_ensure_clause, "branch coverage in ensure")
|
@ -5,22 +5,33 @@ require "tmpdir"
|
|||||||
require "envutil"
|
require "envutil"
|
||||||
|
|
||||||
class TestCoverage < Test::Unit::TestCase
|
class TestCoverage < Test::Unit::TestCase
|
||||||
|
# The command-line arguments that we will pass to the ruby subprocess invoked
|
||||||
|
# by assert_in_out_err. In general this is just requiring the coverage
|
||||||
|
# library, but if prism is enabled we want to additionally pass that option
|
||||||
|
# through.
|
||||||
|
ARGV = ["-rcoverage"]
|
||||||
|
|
||||||
|
if RubyVM::InstructionSequence.compile('').to_a[4][:parser] == :prism
|
||||||
|
ARGV << "-W:no-experimental"
|
||||||
|
ARGV << "--parser=prism"
|
||||||
|
end
|
||||||
|
|
||||||
def test_result_without_start
|
def test_result_without_start
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [], /coverage measurement is not enabled/)
|
assert_in_out_err(ARGV, <<-"end;", [], /coverage measurement is not enabled/)
|
||||||
Coverage.result
|
Coverage.result
|
||||||
p :NG
|
p :NG
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_peek_result_without_start
|
def test_peek_result_without_start
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [], /coverage measurement is not enabled/)
|
assert_in_out_err(ARGV, <<-"end;", [], /coverage measurement is not enabled/)
|
||||||
Coverage.peek_result
|
Coverage.peek_result
|
||||||
p :NG
|
p :NG
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_result_with_nothing
|
def test_result_with_nothing
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", ["{}"], [])
|
assert_in_out_err(ARGV, <<-"end;", ["{}"], [])
|
||||||
Coverage.start
|
Coverage.start
|
||||||
p Coverage.result
|
p Coverage.result
|
||||||
end;
|
end;
|
||||||
@ -34,7 +45,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_coverage_running?
|
def test_coverage_running?
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", ["false", "true", "true", "false"], [])
|
assert_in_out_err(ARGV, <<-"end;", ["false", "true", "true", "false"], [])
|
||||||
p Coverage.running?
|
p Coverage.running?
|
||||||
Coverage.start
|
Coverage.start
|
||||||
p Coverage.running?
|
p Coverage.running?
|
||||||
@ -56,7 +67,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", ["[1, 0, nil]", "[1, 1, nil]", "[1, 1, nil]"], [])
|
assert_in_out_err(ARGV, <<-"end;", ["[1, 0, nil]", "[1, 1, nil]", "[1, 1, nil]"], [])
|
||||||
Coverage.start
|
Coverage.start
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
require tmp + "/test.rb"
|
require tmp + "/test.rb"
|
||||||
@ -92,7 +103,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
exp1 = { "#{tmp}/test.rb" => [1, 0, nil] }.inspect
|
exp1 = { "#{tmp}/test.rb" => [1, 0, nil] }.inspect
|
||||||
exp2 = {}.inspect
|
exp2 = {}.inspect
|
||||||
exp3 = { "#{tmp}/test2.rb" => [1] }.inspect
|
exp3 = { "#{tmp}/test2.rb" => [1] }.inspect
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [exp1, exp2, exp3], [])
|
assert_in_out_err(ARGV, <<-"end;", [exp1, exp2, exp3], [])
|
||||||
Coverage.start
|
Coverage.start
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
require tmp + "/test.rb"
|
require tmp + "/test.rb"
|
||||||
@ -124,7 +135,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
f.puts "])"
|
f.puts "])"
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", ["10003"], [])
|
assert_in_out_err(ARGV, <<-"end;", ["10003"], [])
|
||||||
Coverage.start
|
Coverage.start
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
require tmp + '/test.rb'
|
require tmp + '/test.rb'
|
||||||
@ -153,7 +164,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
f.puts 'end'
|
f.puts 'end'
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_in_out_err(%w[-W0 -rcoverage], <<-"end;", ["[1, 1, 1, 400, nil, nil, nil, nil, nil, nil, nil]"], [], bug13305)
|
assert_in_out_err(["-W0", *ARGV], <<-"end;", ["[1, 1, 1, 400, nil, nil, nil, nil, nil, nil, nil]"], [], bug13305)
|
||||||
Coverage.start(:all)
|
Coverage.start(:all)
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
require tmp + '/test.rb'
|
require tmp + '/test.rb'
|
||||||
@ -165,7 +176,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_eval_coverage
|
def test_eval_coverage
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", ["[1, 1, 1, nil, 0, nil]"], [])
|
assert_in_out_err(ARGV, <<-"end;", ["[1, 1, 1, nil, 0, nil]"], [])
|
||||||
Coverage.start(eval: true, lines: true)
|
Coverage.start(eval: true, lines: true)
|
||||||
|
|
||||||
eval(<<-RUBY, TOPLEVEL_BINDING, "test.rb")
|
eval(<<-RUBY, TOPLEVEL_BINDING, "test.rb")
|
||||||
@ -242,7 +253,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
Dir.chdir(tmp) {
|
Dir.chdir(tmp) {
|
||||||
File.write("test.rb", code)
|
File.write("test.rb", code)
|
||||||
|
|
||||||
assert_in_out_err(%w[-W0 -rcoverage], <<-"end;", stdout, [])
|
assert_in_out_err(["-W0", *ARGV], <<-"end;", stdout, [])
|
||||||
Coverage.start(#{ opt })
|
Coverage.start(#{ opt })
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
require tmp + '/test.rb'
|
require tmp + '/test.rb'
|
||||||
@ -642,7 +653,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
"{:lines=>[0, 1, 1, nil, 0, nil, nil]}",
|
"{:lines=>[0, 1, 1, nil, 0, nil, nil]}",
|
||||||
"{:lines=>[0, 1, 0, nil, 1, nil, nil]}",
|
"{:lines=>[0, 1, 0, nil, 1, nil, nil]}",
|
||||||
]
|
]
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", exp, [])
|
assert_in_out_err(ARGV, <<-"end;", exp, [])
|
||||||
Coverage.start(lines: true)
|
Coverage.start(lines: true)
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
f = tmp + "/test.rb"
|
f = tmp + "/test.rb"
|
||||||
@ -676,7 +687,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
"{:branches=>{[:if, 0, 2, 2, 6, 5]=>{[:then, 1, 3, 4, 3, 8]=>0, [:else, 2, 5, 4, 5, 12]=>1}}}",
|
"{:branches=>{[:if, 0, 2, 2, 6, 5]=>{[:then, 1, 3, 4, 3, 8]=>0, [:else, 2, 5, 4, 5, 12]=>1}}}",
|
||||||
"{:branches=>{[:if, 0, 2, 2, 6, 5]=>{[:then, 1, 3, 4, 3, 8]=>0, [:else, 2, 5, 4, 5, 12]=>1}}}",
|
"{:branches=>{[:if, 0, 2, 2, 6, 5]=>{[:then, 1, 3, 4, 3, 8]=>0, [:else, 2, 5, 4, 5, 12]=>1}}}",
|
||||||
]
|
]
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", exp, [])
|
assert_in_out_err(ARGV, <<-"end;", exp, [])
|
||||||
Coverage.start(branches: true)
|
Coverage.start(branches: true)
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
f = tmp + "/test.rb"
|
f = tmp + "/test.rb"
|
||||||
@ -712,7 +723,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
"{:methods=>{[Object, :foo, 1, 0, 7, 3]=>1}}",
|
"{:methods=>{[Object, :foo, 1, 0, 7, 3]=>1}}",
|
||||||
"{:methods=>{[Object, :foo, 1, 0, 7, 3]=>1}}"
|
"{:methods=>{[Object, :foo, 1, 0, 7, 3]=>1}}"
|
||||||
]
|
]
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", exp, [])
|
assert_in_out_err(ARGV, <<-"end;", exp, [])
|
||||||
Coverage.start(methods: true)
|
Coverage.start(methods: true)
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
f = tmp + "/test.rb"
|
f = tmp + "/test.rb"
|
||||||
@ -748,7 +759,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
"{:oneshot_lines=>[5]}",
|
"{:oneshot_lines=>[5]}",
|
||||||
"{:oneshot_lines=>[]}",
|
"{:oneshot_lines=>[]}",
|
||||||
]
|
]
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", exp, [])
|
assert_in_out_err(ARGV, <<-"end;", exp, [])
|
||||||
Coverage.start(oneshot_lines: true)
|
Coverage.start(oneshot_lines: true)
|
||||||
tmp = Dir.pwd
|
tmp = Dir.pwd
|
||||||
f = tmp + "/test.rb"
|
f = tmp + "/test.rb"
|
||||||
@ -924,7 +935,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_coverage_state
|
def test_coverage_state
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [":idle", ":running", ":running", ":idle"], [])
|
assert_in_out_err(ARGV, <<-"end;", [":idle", ":running", ":running", ":idle"], [])
|
||||||
p Coverage.state
|
p Coverage.state
|
||||||
Coverage.start
|
Coverage.start
|
||||||
p Coverage.state
|
p Coverage.state
|
||||||
@ -934,7 +945,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
p Coverage.state
|
p Coverage.state
|
||||||
end;
|
end;
|
||||||
|
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [":idle", ":suspended", ":running", ":suspended", ":running", ":suspended", ":idle"], [])
|
assert_in_out_err(ARGV, <<-"end;", [":idle", ":suspended", ":running", ":suspended", ":running", ":suspended", ":idle"], [])
|
||||||
p Coverage.state
|
p Coverage.state
|
||||||
Coverage.setup
|
Coverage.setup
|
||||||
p Coverage.state
|
p Coverage.state
|
||||||
@ -952,14 +963,14 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_result_without_resume
|
def test_result_without_resume
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", ["{}"], [])
|
assert_in_out_err(ARGV, <<-"end;", ["{}"], [])
|
||||||
Coverage.setup
|
Coverage.setup
|
||||||
p Coverage.result
|
p Coverage.result
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_result_after_suspend
|
def test_result_after_suspend
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", ["{}"], [])
|
assert_in_out_err(ARGV, <<-"end;", ["{}"], [])
|
||||||
Coverage.start
|
Coverage.start
|
||||||
Coverage.suspend
|
Coverage.suspend
|
||||||
p Coverage.result
|
p Coverage.result
|
||||||
@ -967,21 +978,21 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_resume_without_setup
|
def test_resume_without_setup
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [], /coverage measurement is not set up yet/)
|
assert_in_out_err(ARGV, <<-"end;", [], /coverage measurement is not set up yet/)
|
||||||
Coverage.resume
|
Coverage.resume
|
||||||
p :NG
|
p :NG
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_suspend_without_setup
|
def test_suspend_without_setup
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [], /coverage measurement is not running/)
|
assert_in_out_err(ARGV, <<-"end;", [], /coverage measurement is not running/)
|
||||||
Coverage.suspend
|
Coverage.suspend
|
||||||
p :NG
|
p :NG
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_double_resume
|
def test_double_resume
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [], /coverage measurement is already running/)
|
assert_in_out_err(ARGV, <<-"end;", [], /coverage measurement is already running/)
|
||||||
Coverage.start
|
Coverage.start
|
||||||
Coverage.resume
|
Coverage.resume
|
||||||
p :NG
|
p :NG
|
||||||
@ -989,7 +1000,7 @@ class TestCoverage < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_double_suspend
|
def test_double_suspend
|
||||||
assert_in_out_err(%w[-rcoverage], <<-"end;", [], /coverage measurement is not running/)
|
assert_in_out_err(ARGV, <<-"end;", [], /coverage measurement is not running/)
|
||||||
Coverage.setup
|
Coverage.setup
|
||||||
Coverage.suspend
|
Coverage.suspend
|
||||||
p :NG
|
p :NG
|
||||||
|
Loading…
x
Reference in New Issue
Block a user