1require File.expand_path('../helper', __FILE__)
2require 'open3'
3
4class TestRakeReduceCompat < Rake::TestCase
5  # TODO: factor out similar code in test_rake_functional.rb
6  def rake(*args)
7    Open3.popen3(RUBY, "-I", @rake_lib, @rake_exec, *args) { |_, out, _, _|
8      out.read
9    }
10  end
11
12  def invoke_normal(task_name)
13    rake task_name.to_s
14  end
15
16  def invoke_reduce_compat(task_name)
17    rake "--reduce-compat", task_name.to_s
18  end
19
20  def test_no_deprecated_dsl
21    rakefile %q{
22      task :check_task do
23        Module.new { p defined?(task) }
24      end
25
26      task :check_file do
27        Module.new { p defined?(file) }
28      end
29    }
30
31    assert_equal %{"method"}, invoke_normal(:check_task).chomp
32    assert_equal %{"method"}, invoke_normal(:check_file).chomp
33
34    assert_equal "nil", invoke_reduce_compat(:check_task).chomp
35    assert_equal "nil", invoke_reduce_compat(:check_file).chomp
36  end
37
38  def test_no_classic_namespace
39    rakefile %q{
40      task :check_task do
41        begin
42          Task
43          print "present"
44        rescue NameError
45          print "absent"
46        end
47      end
48
49      task :check_file_task do
50        begin
51          FileTask
52          print "present"
53        rescue NameError
54          print "absent"
55        end
56      end
57    }
58
59    assert_equal "present", invoke_normal(:check_task)
60    assert_equal "present", invoke_normal(:check_file_task)
61
62    assert_equal "absent", invoke_reduce_compat(:check_task)
63    assert_equal "absent", invoke_reduce_compat(:check_file_task)
64  end
65end
66