1require "test/unit" 2require "coverage" 3require "tmpdir" 4 5class TestCoverage < Test::Unit::TestCase 6 def test_result_without_start 7 assert_raise(RuntimeError) {Coverage.result} 8 end 9 def test_result_with_nothing 10 Coverage.start 11 result = Coverage.result 12 assert_kind_of(Hash, result) 13 result.each do |key, val| 14 assert_kind_of(String, key) 15 assert_kind_of(Array, val) 16 end 17 end 18 19 def test_restarting_coverage 20 loaded_features = $".dup 21 22 Dir.mktmpdir {|tmp| 23 Dir.chdir(tmp) { 24 File.open("test.rb", "w") do |f| 25 f.puts <<-EOS 26 def coverage_test_method 27 :ok 28 end 29 EOS 30 end 31 32 Coverage.start 33 require tmp + '/test.rb' 34 assert_equal 3, Coverage.result[tmp + '/test.rb'].size 35 Coverage.start 36 coverage_test_method 37 assert_equal 0, Coverage.result[tmp + '/test.rb'].size 38 } 39 } 40 ensure 41 $".replace loaded_features 42 end 43 44 def test_big_code 45 loaded_features = $".dup 46 47 Dir.mktmpdir {|tmp| 48 Dir.chdir(tmp) { 49 File.open("test.rb", "w") do |f| 50 f.puts "__id__\n" * 10000 51 f.puts "def ignore(x); end" 52 f.puts "ignore([1" 53 f.puts "])" 54 end 55 56 Coverage.start 57 require tmp + '/test.rb' 58 assert_equal 10003, Coverage.result[tmp + '/test.rb'].size 59 } 60 } 61 ensure 62 $".replace loaded_features 63 end 64end 65