Permalink
Browse files

clear ARGV to prevent mintest autorun errors:

Minitest expects the first argument in `ARGV` to be the path to a test file.
Because `rails benchmarker` and `rails profiler` define an on-the-fly test-case,
using the first `ARGV` to pass the code to execute this results in:

```
/Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': file not found: 1000.times{"a string"} (ArgumentError)
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:146:in `map!'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:146:in `non_options'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:207:in `non_options'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:52:in `process_args'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/minitest/unit.rb:891:in `_run'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/minitest/unit.rb:884:in `run'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:21:in `run'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:326:in `block (2 levels) in autorun'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:27:in `run_once'
	from /Users/senny/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/test/unit.rb:325:in `block in autorun'
```

clearing ARGV after defining the test-case solves this issue.
  • Loading branch information...
senny committed Jun 27, 2013
1 parent 1db54d7 commit b47f8d035ec6a38a69eb5b3bdb1e27bb40e574c7
Showing with 8 additions and 0 deletions.
  1. +6 −0 railties/CHANGELOG.md
  2. +1 −0 railties/lib/rails/commands/benchmarker.rb
  3. +1 −0 railties/lib/rails/commands/profiler.rb
View
@@ -1,5 +1,11 @@
## unreleased ##
+* Fix bugs that crashed `rake test:benchmark`, `rails profiler` and
+ `rails benchmarker`.
+ Fixes #4938.
+
+ *Yves Senn*
+
* Add support for runner hook.
Backport #7695.
@@ -30,4 +30,5 @@ def test_#{expression.parameterize('_')}
end
RUBY
end
+ ARGV.clear
end
@@ -29,4 +29,5 @@ def test_#{expression.parameterize('_')}
end
RUBY
end
+ ARGV.clear
end

0 comments on commit b47f8d0

Please sign in to comment.