From 23e79f2f740a7800c044c78661cc430c610c1782 Mon Sep 17 00:00:00 2001 From: Jim Weirich Date: Sun, 5 Jun 2011 19:28:22 -0400 Subject: [PATCH] Added global DSL warning to list of warnings suppressed by --no-deprecate. --- lib/rake/dsl_definition.rb | 14 ++++++++------ test/test_rake_dsl.rb | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/rake/dsl_definition.rb b/lib/rake/dsl_definition.rb index 441cfd2f1..e0b9c6fd0 100644 --- a/lib/rake/dsl_definition.rb +++ b/lib/rake/dsl_definition.rb @@ -145,14 +145,16 @@ module DeprecatedObjectDSL line = __LINE__+1 class_eval %{ def #{name}(*args, &block) - unless @rake_dsl_warning - $stderr.puts "WARNING: Global access to Rake DSL methods is deprecated. Please include" - $stderr.puts " ... Rake::DSL into classes and modules which use the Rake DSL methods." - @rake_dsl_warning = true + unless Rake.application.options.ignore_deprecate + unless @rake_dsl_warning + $stderr.puts "WARNING: Global access to Rake DSL methods is deprecated. Please include" + $stderr.puts " ... Rake::DSL into classes and modules which use the Rake DSL methods." + @rake_dsl_warning = true + end + $stderr.puts "WARNING: DSL method \#{self.class}##{name} called at \#{caller.first}" end - $stderr.puts "WARNING: DSL method \#{self.class}##{name} called at \#{caller.first}" Rake::DeprecatedObjectDSL::Commands.send(:#{name}, *args, &block) - end + end private :#{name} }, __FILE__, line end diff --git a/test/test_rake_dsl.rb b/test/test_rake_dsl.rb index fc7b57fce..294ff2bd0 100644 --- a/test/test_rake_dsl.rb +++ b/test/test_rake_dsl.rb @@ -2,6 +2,11 @@ class TestRakeDsl < Rake::TestCase + def setup + super + Rake::Task.clear + end + def test_namespace_command namespace "n" do task "t" @@ -50,4 +55,19 @@ def test_deprecated_object_dsl assert_match(/Foo\#file/, err) assert_match(/test_rake_dsl\.rb:\d+/, err) end + + def test_deprecated_object_dsl_with_suppressed_warnings + Rake.application.options.ignore_deprecate = true + out, err = capture_io do + Foo.new + Rake.application.invoke_task :foo_deprecated_a + end + assert_equal("ba", out) + refute_match(/deprecated/, err) + refute_match(/Foo\#task/, err) + refute_match(/Foo\#file/, err) + refute_match(/test_rake_dsl\.rb:\d+/, err) + ensure + Rake.application.options.ignore_deprecate = false + end end