snapdragon 0.1.12 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8aad99b89a86f7409439f78820527090c48188f
4
- data.tar.gz: 2707cb606f2f5ae2f3e72783b27e18efa25e4d5b
3
+ metadata.gz: d91d70e71200c4c41242a3578bde16b234a52152
4
+ data.tar.gz: 4c01baa008019b3ed66a4e54330e402eaa94d44e
5
5
  SHA512:
6
- metadata.gz: 9eef67ae9b2468cbf3bedef07fc8219a0a14657a2d2ac4717bc19adfafa382f187621b4f5794775b276c40d89fc7601ef1ecbcf41d0daee6a383e8f8581a0a52
7
- data.tar.gz: 719add788cd12f7729f631f39d597bf0e47d68186b6cd03cd9fee92893d83b937a960d2be03ad73d2a6f5ecf25c78073f9d75284c8a69c955f8bb09415b9a837
6
+ metadata.gz: 081c307e74c3e70e385e425109c28617375c2cc2f4c91f450e7d93b4770de71cda1be26c1795779f774bb345815095279bb41538604494d7d4b62fbafa38716d
7
+ data.tar.gz: 3cef1deb3c500497ab3bf8f9750ec9a8bdd59e0b6ae30dc34a5e56a29afcced0c12b53ef475c7208356f87b956f92f047d72b1b9364aa3532515ba62f12ed23f
data/ChangeLog.markdown CHANGED
@@ -6,6 +6,12 @@ versions as well as provide a rough history.
6
6
 
7
7
  #### Next Release
8
8
 
9
+ #### v0.2.0
10
+
11
+ * added -P, --pattern options to over the test file search pattern as well as
12
+ a default test file search pattern when not given an explicit file or
13
+ directory path.
14
+
9
15
  #### v0.1.12
10
16
 
11
17
  * add the --color, --no-color, --colour, --no-colour, and -c option to
data/README.markdown CHANGED
@@ -41,10 +41,10 @@ $ brew install phantomjs
41
41
  ## Quick Start Guide
42
42
 
43
43
  If you are a visual learner Brian Miller and I have put together a Free
44
- [Snapdragon](http://github.com/reachlocal/snapdragon) Screencast at [The Code
44
+ [Snapdragon Screencast](http://codebreakdown.com/screencasts/7) at [The Code
45
45
  Breakdown](http://codebreakdown.com).
46
46
 
47
- [![It in Action](http://media.codebreakdown.com/thumbnails/tcb-0007-thumbnail-400x225.png)](http://codebreakdown.com)
47
+ [![It in Action](http://media.codebreakdown.com/thumbnails/tcb-0007-thumbnail-400x225.png)](http://codebreakdown.com/screencasts/7)
48
48
 
49
49
  For those of you that like to jump right in and start playing with new tools
50
50
  follow the steps below to get started.
@@ -138,6 +138,30 @@ $ snapdragon spec/javascripts
138
138
  $ snapdragon spec/javascript custom_js/tests/foo_spec.js custom_js/test/bar_spec.js
139
139
  ```
140
140
 
141
+ #### Run test files matched by default pattern (`spec/**/*_spec.js`)
142
+
143
+ ```text
144
+ $ snapdragon
145
+ ```
146
+
147
+ #### Run test files matched by custom pattern
148
+
149
+ The following is an example command that specifies a custom pattern to use to
150
+ match test files to run. Please note the double quote marks around the
151
+ pattern. These are necessary as without them most shells will try and resolve
152
+ the pattern for you. Further details on the glob syntax can be found
153
+ [here](http://ruby-doc.org/core-2.0.0/Dir.html#method-c-glob).
154
+
155
+ ```text
156
+ $ snapdragon -P "spec/assets/javascripts/foo/*_spec.js"
157
+ ```
158
+
159
+ #### Output Usage Details/Help
160
+
161
+ ```text
162
+ $ snapdragon --help
163
+ ```
164
+
141
165
  ## Usage (snapdragon_server)
142
166
 
143
167
  The *snapdragon_server* command allows you to run your
@@ -157,13 +181,13 @@ The following runs the describe or it block that corresponds to line number
157
181
  $ snapdragon_server spec/javascript/foo_spec.js:23
158
182
  ```
159
183
 
160
- #### Run specific spec files
184
+ #### Run an entire spec file(s)
161
185
 
162
186
  ```text
163
187
  $ snapdragon_server spec/javascript/foo_spec.js spec/javascript/bar_spec.js
164
188
  ```
165
189
 
166
- #### Run all the specs in directories
190
+ #### Run an entire directory of spec files
167
191
 
168
192
  The following recursively explores the given directories contents for
169
193
  files that end in `spec.js` or `Spec.js` and runs the tests in the identified
@@ -173,12 +197,82 @@ spec files.
173
197
  $ snapdragon_server spec/javascript custom_js/specs
174
198
  ```
175
199
 
176
- #### Combine files and directories
200
+ #### Run combination of files and directories
177
201
 
178
202
  ```text
179
203
  $ snapdragon_server spec/javascript custom_js/tests/foo_spec.js custom_js/test/bar_spec.js
180
204
  ```
181
205
 
206
+ #### Run test files matched by default pattern (`spec/**/*_spec.js`)
207
+
208
+ ```text
209
+ $ snapdragon_server
210
+ ```
211
+
212
+ #### Run test files matched by custom pattern
213
+
214
+ The following is an example command that specifies a custom pattern to use to
215
+ match test files to run. Please note the double quote marks around the
216
+ pattern. These are necessary as without them most shells will try and resolve
217
+ the pattern for you. Further details on the glob syntax can be found
218
+ [here](http://ruby-doc.org/core-2.0.0/Dir.html#method-c-glob).
219
+
220
+ ```text
221
+ $ snapdragon_server -P "spec/assets/javascripts/foo/*_spec.js"
222
+ ```
223
+
224
+ #### Output Usage Details/Help
225
+
226
+ ```text
227
+ $ snapdragon_server --help
228
+ ```
229
+
230
+ ### Additional Options
231
+
232
+ Below is a listing of the various options that can be passed to either the
233
+ `snapdragon` or `snapdragon_server` commands.
234
+
235
+ #### Version (`-v`, `--version`)
236
+
237
+ When given this option it will output the version that you are using
238
+ and exit without running any tests.
239
+
240
+ #### Help (`-h`, `--help`)
241
+
242
+ When given this option it will output basic usage summary and exit without
243
+ running any tests.
244
+
245
+ #### Format (`-f FORMAT`, `--format FORMAT`)
246
+
247
+ This option allows you to specify the output format of the tests. By default
248
+ it outputs using the `console` format. This option is extremely useful when
249
+ you would like to use `snapdragon` inside of a CI process because you can
250
+ instruct it to output in other formats such as `junit` which CI services
251
+ can parse.
252
+
253
+ The following are the currently supported `FORMAT` values.
254
+
255
+ * `console` (default)
256
+ * `junit`
257
+
258
+ #### Color (`--no-color`, `--no-colour`)
259
+
260
+ If you would like to disable ANSI color output which is enabled by default,
261
+ include either the `--no-color` or `--no-colour` option.
262
+
263
+ #### Pattern (`-P PATTERN`, `--pattern PATTERN`)
264
+
265
+ When this option is not given and no file or directory paths are given it
266
+ uses the default pattern `"spec/**/*_spec.js"`.
267
+
268
+ When given this option without any explicit file paths or directory paths it
269
+ will use the provided glob pattern to identify which test files to run. Any
270
+ example usage of this option can be seen above in the *Run test files matched
271
+ by custom pattern* section. For more details on the glob pattern syntax please
272
+ refer to the [Ruby
273
+ Dir.glob](http://ruby-doc.org/core-2.0.0/Dir.html#method-c-glob)
274
+ documentation.
275
+
182
276
  ## // require_relative() directive
183
277
 
184
278
  Snapdragon also provides a `// require_relative()` directive that the
@@ -8,6 +8,7 @@ module Snapdragon
8
8
  options = OpenStruct.new
9
9
  options.format = "console"
10
10
  options.color = true
11
+ options.pattern = "spec/**/*_spec.js"
11
12
 
12
13
  opts = OptionParser.new do |opts|
13
14
  opts.banner = "Usage: snapdragon [options] [files or directories]"
@@ -23,8 +24,8 @@ module Snapdragon
23
24
  opts.on('-c', '--[no-]color', '--[no-]colour', 'Enable color in the output.') do |o|
24
25
  options.color = o
25
26
  end
26
- if args.empty?
27
- puts opts; exit
27
+ opts.on('-P', '--pattern PATTERN', 'Load files matching pattern (default: "spec/**/*_spec.js").') do |pattern|
28
+ options.pattern = pattern
28
29
  end
29
30
  end
30
31
  opts.parse!(args)
@@ -15,10 +15,15 @@ module Snapdragon
15
15
  @options.color
16
16
  end
17
17
 
18
+ def pattern
19
+ @options.pattern
20
+ end
21
+
18
22
  def spec_files
19
23
  spec_file_objs = []
20
24
 
21
- @paths.each do |raw_path|
25
+ @paths << Dir[pattern] if @paths.empty?
26
+ @paths.flatten.uniq.each do |raw_path|
22
27
  path = Snapdragon::Path.new(raw_path)
23
28
  spec_file_objs.concat(path.spec_files)
24
29
  end
@@ -1,3 +1,3 @@
1
1
  module Snapdragon
2
- VERSION = "0.1.12"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -25,7 +25,7 @@ describe Snapdragon::CommandLineParser do
25
25
 
26
26
  context "no args supplied" do
27
27
  it "exit" do
28
- lambda { hide_stdout { subject.parse([]) } }.should raise_error(SystemExit)
28
+ lambda { hide_stdout { subject.parse([]) } }.should_not raise_error(SystemExit)
29
29
  end
30
30
  end
31
31
 
@@ -58,5 +58,17 @@ describe Snapdragon::CommandLineParser do
58
58
  subject.parse(["--no-color", "spec/hello_spec.rb"]).color.should eq false
59
59
  end
60
60
  end
61
+
62
+ context "when pattern is provided" do
63
+ it "sets the pattern value" do
64
+ subject.parse(["--pattern", "spec/*/*_test.js"]).pattern.should eq "spec/*/*_test.js"
65
+ end
66
+ end
67
+
68
+ context "when pattern is not provided" do
69
+ it "defaults to 'spec/**/*_spec.js'" do
70
+ subject.parse([]).pattern.should eq "spec/**/*_spec.js"
71
+ end
72
+ end
61
73
  end
62
74
  end
@@ -41,24 +41,64 @@ describe Snapdragon::Suite do
41
41
  end
42
42
  end
43
43
 
44
- describe "#spec_files" do
45
- it "creates a path object to represent the path" do
46
- options = stub
47
- paths = ['path_a_str', 'path_b_str']
48
- suite = Snapdragon::Suite.new(options, paths)
49
- Snapdragon::Path.should_receive(:new).with('path_a_str').and_return(stub(spec_files: []))
50
- Snapdragon::Path.should_receive(:new).with('path_b_str').and_return(stub(spec_files: []))
51
- suite.spec_files
44
+ describe "#pattern" do
45
+ it "returns the configured pattern setting" do
46
+ pattern = stub
47
+ options = stub(pattern: pattern)
48
+ suite = Snapdragon::Suite.new(options, stub)
49
+ suite.pattern.should eq pattern
52
50
  end
51
+ end
52
+
53
+ describe "#spec_files" do
54
+ context "when paths are provided" do
55
+ it "does not read pattern from options" do
56
+ pattern = stub
57
+ options = stub(pattern: pattern)
58
+ paths = ['path_a_str', 'path_b_str']
59
+ suite = Snapdragon::Suite.new(options, paths)
60
+ suite.should_not_receive(:pattern)
61
+ suite.spec_files
62
+ end
63
+
64
+ it "creates a path object to represent the path" do
65
+ options = stub
66
+ paths = ['path_a_str', 'path_b_str']
67
+ suite = Snapdragon::Suite.new(options, paths)
68
+ Snapdragon::Path.should_receive(:new).with('path_a_str').and_return(stub(spec_files: []))
69
+ Snapdragon::Path.should_receive(:new).with('path_b_str').and_return(stub(spec_files: []))
70
+ suite.spec_files
71
+ end
53
72
 
54
- it "returns the collection of the spec files of all of the paths" do
55
- options = stub
56
- paths = ['path_a_str', 'path_b_str']
57
- suite = Snapdragon::Suite.new(options, paths)
58
- spec_file_a = stub('spec_file_a'), spec_file_b = stub('spec_file_b')
59
- Snapdragon::Path.stub(:new).with('path_a_str').and_return(stub(spec_files: [spec_file_a]))
60
- Snapdragon::Path.stub(:new).with('path_b_str').and_return(stub(spec_files: [spec_file_b]))
61
- suite.spec_files.should eq([spec_file_a, spec_file_b])
73
+ it "returns the collection of the spec files of all of the paths" do
74
+ options = stub
75
+ paths = ['path_a_str', 'path_b_str']
76
+ suite = Snapdragon::Suite.new(options, paths)
77
+ spec_file_a = stub('spec_file_a'), spec_file_b = stub('spec_file_b')
78
+ Snapdragon::Path.stub(:new).with('path_a_str').and_return(stub(spec_files: [spec_file_a]))
79
+ Snapdragon::Path.stub(:new).with('path_b_str').and_return(stub(spec_files: [spec_file_b]))
80
+ suite.spec_files.should eq([spec_file_a, spec_file_b])
81
+ end
82
+ end
83
+
84
+ context "when paths are empty" do
85
+ it "reads the pattern from the options" do
86
+ pattern = stub
87
+ options = stub(pattern: pattern)
88
+ suite = Snapdragon::Suite.new(options, [])
89
+ suite.should_receive(:pattern).and_return(pattern)
90
+ suite.spec_files
91
+ end
92
+
93
+ it "returns the collection of spec files matching the pattern" do
94
+ pattern = stub
95
+ options = stub(pattern: pattern)
96
+ Dir.stub!(:[]) { ['path_c_str'] }
97
+ suite = Snapdragon::Suite.new(options, [])
98
+ spec_file_c = stub('spec_file_c')
99
+ Snapdragon::Path.stub(:new).with('path_c_str').and_return(stub(spec_files: [spec_file_c]))
100
+ suite.spec_files.should eq([spec_file_c])
101
+ end
62
102
  end
63
103
  end
64
104
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snapdragon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew De Ponte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-19 00:00:00.000000000 Z
11
+ date: 2013-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara