1require 'test/unit'
2require 'tmpdir'
3require_relative 'ruby/envutil'
4
5class TestTracer < Test::Unit::TestCase
6  include EnvUtil
7
8  def test_tracer_with_option_r
9    assert_in_out_err(%w[-rtracer -e 1]) do |(*lines),|
10      case lines.size
11      when 1
12        # do nothing
13      else
14        assert_match(%r{rubygems/core_ext/kernel_require\.rb:\d+:Kernel:-:}, lines[0])
15      end
16      assert_equal "#0:-e:1::-: 1", lines.last
17    end
18  end
19
20  def test_tracer_with_option_r_without_gems
21    assert_in_out_err(%w[--disable-gems -rtracer -e 1]) do |(*lines),|
22      case lines.size
23      when 1
24        # do nothing
25      else
26        flunk "unexpected output from `ruby --disable-gems -rtracer -e 1`"
27      end
28      assert_equal "#0:-e:1::-: 1", lines.last
29    end
30  end
31
32  def test_tracer_with_require
33    Dir.mktmpdir("test_ruby_tracer") do |dir|
34      script = File.join(dir, "require_tracer.rb")
35      open(script, "w") do |f|
36        f.print <<-EOF
37require 'tracer'
381
39        EOF
40      end
41      assert_in_out_err([script]) do |(*lines),|
42        assert_empty(lines)
43      end
44    end
45  end
46
47  def test_tracer_with_require_without_gems
48    Dir.mktmpdir("test_ruby_tracer") do |dir|
49      script = File.join(dir, "require_tracer.rb")
50      open(script, "w") do |f|
51        f.print <<-EOF
52require 'tracer'
531
54        EOF
55      end
56      assert_in_out_err(["--disable-gems", script]) do |(*lines),|
57        assert_empty(lines)
58      end
59    end
60  end
61end
62