testrbl 0.1.4 → 0.1.5

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- testrbl (0.1.4)
4
+ testrbl (0.1.5)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -2,8 +2,9 @@ require 'testrbl/version'
2
2
 
3
3
  module Testrbl
4
4
  PATTERNS = [
5
- /^(\s+)(?:should|context|test)\s+['"](.*)['"]\s+do\s*$/,
6
- /^(\s+)def\s+test_([a-z_\d]+)\s*$/
5
+ /^(\s+)(should|test)\s+['"](.*)['"]\s+do\s*$/,
6
+ /^(\s+)(context)\s+['"]?(.*?)['"]?\s+do\s*$/,
7
+ /^(\s+)def\s+(test_)([a-z_\d]+)\s*$/
7
8
  ]
8
9
 
9
10
  def self.run_from_cli(argv)
@@ -32,8 +33,7 @@ module Testrbl
32
33
 
33
34
  last_spaces = " " * 100
34
35
  found = search.map{|line| pattern_from_line(line) }.compact
35
-
36
- found.select! do |spaces, name|
36
+ found = found.select do |spaces, name|
37
37
  last_spaces = spaces if spaces.size < last_spaces.size
38
38
  end
39
39
 
@@ -44,7 +44,21 @@ module Testrbl
44
44
 
45
45
  def self.pattern_from_line(line)
46
46
  PATTERNS.each do |r|
47
- return [$1, Regexp.escape($2).gsub("'",".").gsub("\\ "," ")] if line =~ r
47
+ if line =~ r
48
+ whitespace, method, test_name = $1, $2, $3
49
+ regex = Regexp.escape(test_name).gsub("'",".").gsub("\\ "," ")
50
+
51
+ if method == "should"
52
+ regex = "#{method} #{regex}\. $"
53
+ elsif method == "test"
54
+ regex = "^#{method}: #{regex}$"
55
+ end
56
+
57
+ return [
58
+ whitespace,
59
+ regex
60
+ ]
61
+ end
48
62
  end
49
63
  nil
50
64
  end
@@ -1,3 +1,3 @@
1
1
  module Testrbl
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.5'
3
3
  end
@@ -91,9 +91,13 @@ describe Testrbl do
91
91
  puts 'BCD'
92
92
  end
93
93
 
94
- test "c" do
94
+ test "c d" do
95
95
  puts 'CDE'
96
96
  end
97
+
98
+ test "c" do
99
+ puts 'DEF'
100
+ end
97
101
  end
98
102
  RUBY
99
103
  end
@@ -104,6 +108,12 @@ describe Testrbl do
104
108
  result.should include "BCD\n"
105
109
  result.should_not include "CDE\n"
106
110
  end
111
+
112
+ it "runs test explicitly" do
113
+ result = testrbl "a_test.rb:16"
114
+ result.should_not include "CDE\n"
115
+ result.should include "DEF\n"
116
+ end
107
117
  end
108
118
 
109
119
  context "shoulda" do
@@ -135,11 +145,15 @@ describe Testrbl do
135
145
  end
136
146
  end
137
147
 
138
- context "g" do
148
+ context "g a" do
139
149
  should "a" do
140
150
  puts "FGH"
141
151
  end
142
152
  end
153
+
154
+ should "g" do
155
+ puts "GHI"
156
+ end
143
157
  end
144
158
  RUBY
145
159
  end
@@ -171,6 +185,13 @@ describe Testrbl do
171
185
  result.should_not include "EFG\n"
172
186
  result.should include "FGH\n"
173
187
  end
188
+
189
+ it "runs should explicitly" do
190
+ result = testrbl "a_test.rb:33"
191
+ result.should_not include "ABC\n"
192
+ result.should include "GHI\n"
193
+ result.should_not include "FGH\n"
194
+ end
174
195
  end
175
196
 
176
197
  context "multiple files / folders" do
@@ -239,4 +260,46 @@ describe Testrbl do
239
260
  result.should include "DEF\n"
240
261
  end
241
262
  end
263
+
264
+ describe ".pattern_from_line" do
265
+ def call(line)
266
+ Testrbl.pattern_from_line(line)
267
+ end
268
+
269
+ it "finds simple tests" do
270
+ call(" def test_xxx\n").should == [" ", "xxx"]
271
+ end
272
+
273
+ it "does not find other methods" do
274
+ call(" def xxx\n").should == nil
275
+ end
276
+
277
+ it "finds calls with single quotes" do
278
+ call(" test 'xx xx' do\n").should == [" ", "^test: xx xx$"]
279
+ end
280
+
281
+ it "finds test do calls" do
282
+ call(" test \"xx xx\" do\n").should == [" ", "^test: xx xx$"]
283
+ end
284
+
285
+ it "finds should do calls" do
286
+ call(" should \"xx xx\" do\n").should == [" ", "should xx xx. $"]
287
+ end
288
+
289
+ it "finds context do calls" do
290
+ call(" context \"xx xx\" do\n").should == [" ", "xx xx"]
291
+ end
292
+
293
+ it "finds context do calls with classes" do
294
+ call(" context Foobar do\n").should == [" ", "Foobar"]
295
+ end
296
+
297
+ it "escapes regex chars" do
298
+ call(" context \"xx .* xx\" do\n").should == [" ", "xx \\.\\* xx"]
299
+ end
300
+
301
+ it "escapes single quotes which we use to build the pattern" do
302
+ call(" context \"xx ' xx\" do\n").should == [" ", "xx . xx"]
303
+ end
304
+ end
242
305
  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
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-07 00:00:00.000000000 Z
12
+ date: 2012-06-09 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: michael@grosser.it
@@ -44,7 +44,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
44
44
  version: '0'
45
45
  segments:
46
46
  - 0
47
- hash: 3917012404143977134
47
+ hash: 155105848634394199
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: 3917012404143977134
56
+ hash: 155105848634394199
57
57
  requirements: []
58
58
  rubyforge_project:
59
59
  rubygems_version: 1.8.24