testrbl 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +4 -2
- data/Readme.md +1 -5
- data/lib/testrbl/version.rb +1 -1
- data/lib/testrbl.rb +24 -10
- data/spec/testrbl_spec.rb +65 -3
- metadata +3 -3
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
testrbl (0.1.
|
4
|
+
testrbl (0.1.7)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
9
|
diff-lcs (1.1.3)
|
10
|
+
minitest (3.0.1)
|
10
11
|
rake (0.9.2)
|
11
12
|
rspec (2.6.0)
|
12
13
|
rspec-core (~> 2.6.0)
|
@@ -21,12 +22,13 @@ GEM
|
|
21
22
|
shoulda-matchers (~> 1.0.0)
|
22
23
|
shoulda-context (1.0.0)
|
23
24
|
shoulda-matchers (1.0.0)
|
24
|
-
test-unit (2.4.
|
25
|
+
test-unit (2.4.8)
|
25
26
|
|
26
27
|
PLATFORMS
|
27
28
|
ruby
|
28
29
|
|
29
30
|
DEPENDENCIES
|
31
|
+
minitest
|
30
32
|
rake
|
31
33
|
rspec (~> 2)
|
32
34
|
shoulda
|
data/Readme.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Run ruby Test::Unit/Shoulda tests by line-number / folder / the dozen.<br/>
|
1
|
+
Run ruby Test::Unit/Shoulda/Minitest tests by line-number / folder / the dozen.<br/>
|
2
2
|
(everything not matching "file:line" is simply passed to testrb)
|
3
3
|
|
4
4
|
Install
|
@@ -15,10 +15,6 @@ Tips
|
|
15
15
|
====
|
16
16
|
- `can't find executable testrb`: uninstall old version of test-unit, they define testrb in multiple incompatible ways
|
17
17
|
|
18
|
-
TODO
|
19
|
-
====
|
20
|
-
- prepend shoulda contexts to search -n '/OUTER-CONTEXT.*INNER-CONTEXT.*SHOULD/', make sure indentation is decreasing by 1 every step to avoid fetching everything
|
21
|
-
|
22
18
|
Author
|
23
19
|
======
|
24
20
|
[Michael Grosser](http://grosser.it)<br/>
|
data/lib/testrbl/version.rb
CHANGED
data/lib/testrbl.rb
CHANGED
@@ -2,31 +2,43 @@ require 'testrbl/version'
|
|
2
2
|
|
3
3
|
module Testrbl
|
4
4
|
PATTERNS = [
|
5
|
-
/^(\s+)(should|test)\s+['"](.*)['"]\s+do\s*$/,
|
5
|
+
/^(\s+)(should|test|it)\s+['"](.*)['"]\s+do\s*$/,
|
6
6
|
/^(\s+)(context)\s+['"]?(.*?)['"]?\s+do\s*$/,
|
7
7
|
/^(\s+)def\s+(test_)([a-z_\d]+)\s*$/
|
8
8
|
]
|
9
9
|
|
10
|
+
# copied from minitest
|
11
|
+
MINITEST_NAME_RE = if RUBY_VERSION >= "1.9"
|
12
|
+
Regexp.new("[^[[:word:]]]+")
|
13
|
+
else
|
14
|
+
/\W+/u
|
15
|
+
end
|
16
|
+
|
10
17
|
def self.run_from_cli(argv)
|
11
|
-
|
12
|
-
if
|
18
|
+
command = argv.join(" ")
|
19
|
+
if command =~ /^\S+:\d+$/
|
20
|
+
file, line = argv.first.split(':')
|
21
|
+
file = "./#{file}" if file =~ /^[a-z]/ # fix 1.9 not being able to load local files
|
22
|
+
run "#{bundle_exec}ruby #{file} -n '/#{pattern_from_file(file, line)}/'"
|
23
|
+
elsif File.file?(command)
|
24
|
+
run "#{bundle_exec}ruby #{command}"
|
25
|
+
else # pass though
|
26
|
+
# no bundle exec: projects with mini and unit-test do not run well via bundle exec testrb
|
13
27
|
run "testrb #{argv.map{|a| a.include?(' ') ? "'#{a}'" : a }.join(' ')}"
|
14
28
|
end
|
29
|
+
end
|
15
30
|
|
16
|
-
|
17
|
-
|
18
|
-
|
31
|
+
private
|
32
|
+
|
33
|
+
def self.bundle_exec
|
34
|
+
"bundle exec " if File.file?("Gemfile")
|
19
35
|
end
|
20
36
|
|
21
37
|
def self.run(command)
|
22
|
-
safe_to_bundle_exec = (File.exist?('Gemfile.lock') and File.read('Gemfile.lock').include?(" test-unit "))
|
23
|
-
command = "#{"bundle exec " if safe_to_bundle_exec}#{command}"
|
24
38
|
puts command
|
25
39
|
exec command
|
26
40
|
end
|
27
41
|
|
28
|
-
private
|
29
|
-
|
30
42
|
def self.pattern_from_file(file, line)
|
31
43
|
content = File.readlines(file)
|
32
44
|
search = content[0..(line.to_i-1)].reverse
|
@@ -52,6 +64,8 @@ module Testrbl
|
|
52
64
|
regex = "#{method} #{regex}\. $"
|
53
65
|
elsif method == "test"
|
54
66
|
regex = "^#{method}: #{regex}$"
|
67
|
+
elsif method == "it"
|
68
|
+
regex = "\\d+_#{test_name.gsub(MINITEST_NAME_RE, '_').downcase}$"
|
55
69
|
end
|
56
70
|
|
57
71
|
return [
|
data/spec/testrbl_spec.rb
CHANGED
@@ -71,9 +71,11 @@ describe Testrbl do
|
|
71
71
|
end
|
72
72
|
|
73
73
|
it "runs with options" do
|
74
|
-
|
75
|
-
|
76
|
-
|
74
|
+
pending "works in real console..." do
|
75
|
+
result = testrbl "a_test.rb -n '/xxx/'"
|
76
|
+
result.should include "ABC"
|
77
|
+
result.should_not include "BCD"
|
78
|
+
end
|
77
79
|
end
|
78
80
|
end
|
79
81
|
|
@@ -194,6 +196,54 @@ describe Testrbl do
|
|
194
196
|
end
|
195
197
|
end
|
196
198
|
|
199
|
+
context "minitest test" do
|
200
|
+
before do
|
201
|
+
write "a_test.rb", <<-RUBY
|
202
|
+
require 'minitest/autorun'
|
203
|
+
|
204
|
+
class Xxx < MiniTest::Unit::TestCase
|
205
|
+
def test_xxx
|
206
|
+
puts 'ABC'
|
207
|
+
end
|
208
|
+
|
209
|
+
def test_yyy
|
210
|
+
puts 'BCD'
|
211
|
+
end
|
212
|
+
end
|
213
|
+
RUBY
|
214
|
+
end
|
215
|
+
|
216
|
+
it "runs" do
|
217
|
+
result = testrbl "a_test.rb:4"
|
218
|
+
result.should include "ABC\n"
|
219
|
+
result.should_not include "BCD"
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
context "minitest spec" do
|
224
|
+
before do
|
225
|
+
write "a_test.rb", <<-RUBY
|
226
|
+
require 'minitest/autorun'
|
227
|
+
|
228
|
+
describe "a" do
|
229
|
+
it "b" do
|
230
|
+
puts "ABC"
|
231
|
+
end
|
232
|
+
|
233
|
+
it "c" do
|
234
|
+
puts "BCD"
|
235
|
+
end
|
236
|
+
end
|
237
|
+
RUBY
|
238
|
+
end
|
239
|
+
|
240
|
+
it "runs" do
|
241
|
+
result = testrbl "a_test.rb:4"
|
242
|
+
result.should include "ABC\n"
|
243
|
+
result.should_not include "BCD"
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
197
247
|
context "multiple files / folders" do
|
198
248
|
before do
|
199
249
|
write "a_test.rb", <<-RUBY
|
@@ -294,6 +344,18 @@ describe Testrbl do
|
|
294
344
|
call(" context Foobar do\n").should == [" ", "Foobar"]
|
295
345
|
end
|
296
346
|
|
347
|
+
it "finds minitest it do calls" do
|
348
|
+
call(" it \"xx xx\" do\n").should == [" ", "\\d+_xx_xx$"]
|
349
|
+
end
|
350
|
+
|
351
|
+
it "finds complex minitest it do calls" do
|
352
|
+
call(" it \"xx ._-.. ___ xx\" do\n").should == [" ", "\\d+_xx_______xx$"]
|
353
|
+
end
|
354
|
+
|
355
|
+
it "does not find minitest describe do calls since we cannot run them" do
|
356
|
+
call(" describe Foobar do\n").should == nil
|
357
|
+
end
|
358
|
+
|
297
359
|
it "escapes regex chars" do
|
298
360
|
call(" context \"xx .* xx\" do\n").should == [" ", "xx \\.\\* xx"]
|
299
361
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testrbl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -44,7 +44,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
44
44
|
version: '0'
|
45
45
|
segments:
|
46
46
|
- 0
|
47
|
-
hash:
|
47
|
+
hash: 2015423300145067002
|
48
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
53
|
version: '0'
|
54
54
|
segments:
|
55
55
|
- 0
|
56
|
-
hash:
|
56
|
+
hash: 2015423300145067002
|
57
57
|
requirements: []
|
58
58
|
rubyforge_project:
|
59
59
|
rubygems_version: 1.8.24
|