m 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/m.rb +37 -10
- data/lib/m/test_method.rb +0 -2
- data/m.gemspec +2 -2
- data/test/options_test.rb +33 -0
- data/test/test_helper.rb +1 -0
- metadata +18 -16
data/lib/m.rb
CHANGED
@@ -15,14 +15,14 @@
|
|
15
15
|
#If you're using Bundler, you'll need to include it in your Gemfile. Toss it into the `test` group:
|
16
16
|
#
|
17
17
|
# group :test do
|
18
|
-
# gem 'm', '~> 1.
|
18
|
+
# gem 'm', '~> 1.2'
|
19
19
|
# end
|
20
20
|
#
|
21
21
|
#Developing a RubyGem? Add `m` as a development dependency.
|
22
22
|
#
|
23
23
|
# Gem::Specification.new do |gem|
|
24
24
|
# # ...
|
25
|
-
# gem.add_development_dependency "m", "~> 1.
|
25
|
+
# gem.add_development_dependency "m", "~> 1.2"
|
26
26
|
# end
|
27
27
|
#
|
28
28
|
#`m` is Ruby 1.9+ only. Sorry, but `method_source`, `sourcify`, and `ruby_parser`
|
@@ -38,12 +38,12 @@
|
|
38
38
|
#
|
39
39
|
# $ cat -n test/example_test.rb
|
40
40
|
# 1 require 'test/unit'
|
41
|
-
# 2
|
41
|
+
# 2
|
42
42
|
# 3 class ExampleTest < Test::Unit::TestCase
|
43
43
|
# 4 def test_apple
|
44
44
|
# 5 assert_equal 1, 1
|
45
45
|
# 6 end
|
46
|
-
# 7
|
46
|
+
# 7
|
47
47
|
# 8 def test_banana
|
48
48
|
# 9 assert_equal 1, 1
|
49
49
|
# 10 end
|
@@ -73,7 +73,7 @@
|
|
73
73
|
#Want to run the whole test? Just leave off the line number.
|
74
74
|
#
|
75
75
|
# $ m test/example_test.rb
|
76
|
-
# Run options:
|
76
|
+
# Run options:
|
77
77
|
#
|
78
78
|
# # Running tests:
|
79
79
|
#
|
@@ -98,7 +98,7 @@
|
|
98
98
|
### M, your metal test runner
|
99
99
|
# Maybe this gem should have a longer name? Metal?
|
100
100
|
module M
|
101
|
-
VERSION = "1.
|
101
|
+
VERSION = "1.2.0" unless defined?(VERSION)
|
102
102
|
|
103
103
|
# Accept arguments coming from bin/m and run tests.
|
104
104
|
def self.run(argv)
|
@@ -128,9 +128,11 @@ module M
|
|
128
128
|
# Just shell out to `rake test`.
|
129
129
|
exec "rake test"
|
130
130
|
else
|
131
|
+
parse_options! @argv
|
132
|
+
|
131
133
|
# Parse out ARGV, it should be coming in in a format like `test/test_file.rb:9`
|
132
134
|
@file, line = @argv.first.split(':')
|
133
|
-
@line
|
135
|
+
@line ||= line.to_i
|
134
136
|
|
135
137
|
# If this file is a directory, not a file, run the tests inside of this directory
|
136
138
|
if Dir.exist?(@file)
|
@@ -147,6 +149,31 @@ module M
|
|
147
149
|
end
|
148
150
|
end
|
149
151
|
|
152
|
+
def parse_options!(argv)
|
153
|
+
require 'optparse'
|
154
|
+
|
155
|
+
OptionParser.new do |opts|
|
156
|
+
opts.banner = 'Options:'
|
157
|
+
opts.version = M::VERSION
|
158
|
+
|
159
|
+
opts.on '-h', '--help', 'Display this help.' do
|
160
|
+
puts "Usage: m [OPTIONS] [FILES]\n\n", opts
|
161
|
+
exit
|
162
|
+
end
|
163
|
+
|
164
|
+
opts.on '--version', 'Display the version.' do
|
165
|
+
puts "m #{M::VERSION}"
|
166
|
+
exit
|
167
|
+
end
|
168
|
+
|
169
|
+
opts.on '-l', '--line LINE', Integer, 'Line number for file.' do |line|
|
170
|
+
@line = line
|
171
|
+
end
|
172
|
+
|
173
|
+
opts.parse! argv
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
150
177
|
def execute
|
151
178
|
# Locate tests to run that may be inside of this line. There could be more than one!
|
152
179
|
tests_to_run = tests.within(@line)
|
@@ -196,10 +223,10 @@ module M
|
|
196
223
|
end
|
197
224
|
|
198
225
|
# Figure out what test framework we're using
|
199
|
-
if defined?(
|
200
|
-
suites = Test::Unit::TestCase.test_suites
|
201
|
-
elsif defined?(MiniTest)
|
226
|
+
if defined?(MiniTest)
|
202
227
|
suites = MiniTest::Unit::TestCase.test_suites
|
228
|
+
elsif defined?(Test)
|
229
|
+
suites = Test::Unit::TestCase.test_suites
|
203
230
|
else
|
204
231
|
not_supported
|
205
232
|
end
|
data/lib/m/test_method.rb
CHANGED
data/m.gemspec
CHANGED
@@ -12,14 +12,14 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.require_paths = ["lib"]
|
13
13
|
gem.version = M::VERSION
|
14
14
|
|
15
|
-
gem.add_runtime_dependency "method_source", "
|
15
|
+
gem.add_runtime_dependency "method_source", ">= 0.6.7"
|
16
16
|
gem.add_runtime_dependency "rake", ">= 0.9.2.2", "< 1.0.0"
|
17
17
|
gem.add_development_dependency "activesupport"
|
18
18
|
gem.add_development_dependency "rdiscount"
|
19
19
|
gem.add_development_dependency "rocco"
|
20
20
|
gem.add_development_dependency "minitest"
|
21
21
|
|
22
|
-
gem.required_ruby_version = "
|
22
|
+
gem.required_ruby_version = ">= 1.9"
|
23
23
|
|
24
24
|
gem.summary = description = %q{Run test/unit tests by line number. Metal!}
|
25
25
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class OptionsTest < MTest
|
4
|
+
def test_short_help_option
|
5
|
+
output = m('-h')
|
6
|
+
assert_output /^Usage: m \[OPTIONS\] \[FILES\]/, output
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_long_help_option
|
10
|
+
output = m('--help')
|
11
|
+
assert_output /^Usage: m \[OPTIONS\] \[FILES\]/, output
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_verbose_option
|
15
|
+
output = m('--version')
|
16
|
+
assert_output /^m #{M::VERSION}/, output
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_short_line_option
|
20
|
+
output = m('-l19 examples/minitest_example_test.rb')
|
21
|
+
assert_output /1 tests, 1 assertions/, output
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_long_line_option
|
25
|
+
output = m('--line 19 examples/minitest_example_test.rb')
|
26
|
+
assert_output /1 tests, 1 assertions/, output
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_line_option_has_precedence_over_colon_format
|
30
|
+
output = m('--line 19 examples/minitest_example_test.rb:2')
|
31
|
+
assert_output /1 tests, 1 assertions/, output
|
32
|
+
end
|
33
|
+
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: m
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: method_source
|
16
|
-
requirement: &
|
16
|
+
requirement: &70302923866320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 0.6.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70302923866320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70302923874700 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: 1.0.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *70302923874700
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: activesupport
|
41
|
-
requirement: &
|
41
|
+
requirement: &70302923893880 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ! '>='
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
version: '0'
|
47
47
|
type: :development
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *70302923893880
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: rdiscount
|
52
|
-
requirement: &
|
52
|
+
requirement: &70302923912060 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
@@ -57,10 +57,10 @@ dependencies:
|
|
57
57
|
version: '0'
|
58
58
|
type: :development
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *70302923912060
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rocco
|
63
|
-
requirement: &
|
63
|
+
requirement: &70302923918460 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ! '>='
|
@@ -68,10 +68,10 @@ dependencies:
|
|
68
68
|
version: '0'
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *70302923918460
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: minitest
|
74
|
-
requirement: &
|
74
|
+
requirement: &70302923922180 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ! '>='
|
@@ -79,7 +79,7 @@ dependencies:
|
|
79
79
|
version: '0'
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
|
-
version_requirements: *
|
82
|
+
version_requirements: *70302923922180
|
83
83
|
description:
|
84
84
|
email:
|
85
85
|
- nick@quaran.to
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- test/examples/test_unit_example_test.rb
|
116
116
|
- test/minitest_test.rb
|
117
117
|
- test/multiple_test.rb
|
118
|
+
- test/options_test.rb
|
118
119
|
- test/test_helper.rb
|
119
120
|
- test/test_unit_test.rb
|
120
121
|
homepage: https://github.com/qrush/m
|
@@ -126,7 +127,7 @@ require_paths:
|
|
126
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
127
128
|
none: false
|
128
129
|
requirements:
|
129
|
-
- -
|
130
|
+
- - ! '>='
|
130
131
|
- !ruby/object:Gem::Version
|
131
132
|
version: '1.9'
|
132
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -155,6 +156,7 @@ test_files:
|
|
155
156
|
- test/examples/test_unit_example_test.rb
|
156
157
|
- test/minitest_test.rb
|
157
158
|
- test/multiple_test.rb
|
159
|
+
- test/options_test.rb
|
158
160
|
- test/test_helper.rb
|
159
161
|
- test/test_unit_test.rb
|
160
162
|
has_rdoc:
|