From 4ed0f366892a422dd81a50ebe0552d1b8caf0d93 Mon Sep 17 00:00:00 2001 From: "yuuji.yaginuma" Date: Mon, 23 Jan 2017 15:05:46 +0900 Subject: [PATCH] add warnings option to test runner --- railties/CHANGELOG.md | 4 ++++ railties/lib/rails/test_unit/minitest_plugin.rb | 5 +++++ railties/test/application/test_runner_test.rb | 11 +++++++++++ railties/test/generators/plugin_test_runner_test.rb | 11 +++++++++++ 4 files changed, 31 insertions(+) diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index 9df6194b9b0ed..0b2fb3e9c866e 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,3 +1,7 @@ +* Add option to configure Ruby's warning behaviour to test runner. + + *Yuji Yaginuma* + * Initialize git repo when generating new app, if option `--skip-git` is not provided. diff --git a/railties/lib/rails/test_unit/minitest_plugin.rb b/railties/lib/rails/test_unit/minitest_plugin.rb index 6e196a32ab663..e3c70b0b3d4bd 100644 --- a/railties/lib/rails/test_unit/minitest_plugin.rb +++ b/railties/lib/rails/test_unit/minitest_plugin.rb @@ -52,6 +52,11 @@ def self.plugin_rails_options(opts, options) options[:color] = value end + opts.on("-w", "--warnings", + "Enable ruby warnings") do + $VERBOSE = true + end + options[:color] = true options[:output_inline] = true options[:patterns] = defined?(@rake_patterns) ? @rake_patterns : opts.order! diff --git a/railties/test/application/test_runner_test.rb b/railties/test/application/test_runner_test.rb index 0939587960c73..4e36d126fc275 100644 --- a/railties/test/application/test_runner_test.rb +++ b/railties/test/application/test_runner_test.rb @@ -536,6 +536,17 @@ def test_rake_passes_multiple_TESTOPTS_to_minitest assert_match "seed=1234", output, "passing TEST= should run selected test" end + def test_warnings_option + app_file "test/models/warnings_test.rb", <<-RUBY + require 'test_helper' + def test_warnings + a = 1 + end + RUBY + assert_match(/warning: assigned but unused variable/, + capture(:stderr) { run_test_command("test/models/warnings_test.rb -w") }) + end + private def run_test_command(arguments = "test/unit/test_test.rb") Dir.chdir(app_path) { `bin/rails t #{arguments}` } diff --git a/railties/test/generators/plugin_test_runner_test.rb b/railties/test/generators/plugin_test_runner_test.rb index 0bdf3b272646a..0bdd2a77d2244 100644 --- a/railties/test/generators/plugin_test_runner_test.rb +++ b/railties/test/generators/plugin_test_runner_test.rb @@ -92,6 +92,17 @@ def test_executed_only_once assert_equal 1, result.scan(/1 runs, 1 assertions, 0 failures/).length end + def test_warnings_option + plugin_file "test/models/warnings_test.rb", <<-RUBY + require 'test_helper' + def test_warnings + a = 1 + end + RUBY + assert_match(/warning: assigned but unused variable/, + capture(:stderr) { run_test_command("test/models/warnings_test.rb -w") }) + end + private def plugin_path "#{@destination_root}/bukkits"