single_test 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 537339e81e907e5311250f9a6d0c079079b1cbef
4
+ data.tar.gz: b97a72cee31ccd029375ac5c2ba212bdd47aac77
5
+ SHA512:
6
+ metadata.gz: 1ba786804d32649662109fba5de15a21176f3edda1da3345597c776537cf72d44be3697b9838b0e3c7dd1d0a4cc96c59017bdd75cf650234506966ed8b534d9e
7
+ data.tar.gz: bd3a99e06692aa384d1b78ab4c14d5d86648f242a345eaaf8a3beb6d78e3dd9d18d2690e7ac157303bb316b38eeba90af4a9bcc791a7da317cbbb43e7d5eacec
Binary file
@@ -0,0 +1,2 @@
1
+ K}�!eΆ��ʁ]A��Vq#�s�q%~q(�4s��A�Li�-p�̡��s
2
+ �U=vy����f��;fq�$hdjC��}[��j�Ȗ�2TO���Y]a����pB�E#�J�xZ�9��ײ�D�o��[��X��_#�wz�z�7������$�<�J?�!~�������k$Z[�d-�ݫ�
@@ -6,7 +6,7 @@ module SingleTest
6
6
  CMD_LINE_MATCHER = /^(spec|test)\:.*(\:.*)?$/
7
7
 
8
8
  def load_tasks
9
- load File.join(File.dirname(__FILE__), 'tasks', 'single_test.rake')
9
+ raise "replace this line with require 'single_test/tasks'"
10
10
  end
11
11
 
12
12
  def run_last(type)
@@ -80,7 +80,9 @@ module SingleTest
80
80
 
81
81
  def run_test(type, file, test_name=nil)
82
82
  case type.to_s
83
- when 'test' then Rake.sh "ruby -Ilib:test #{file} -n /#{test_name}/"
83
+ when 'test' then
84
+ filter = test_name.to_s.length > 0 ? " -n /#{test_name}/" : ''
85
+ Rake.sh "ruby -Ilib:test #{file}#{filter}"
84
86
  when 'spec' then
85
87
  executable = spec_executable
86
88
  options_file = "spec/spec.opts"
@@ -0,0 +1,3 @@
1
+ module SingleTest
2
+ VERSION = "0.6.0"
3
+ end
metadata CHANGED
@@ -1,74 +1,81 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: single_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
5
- prerelease:
4
+ version: 0.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Michael Grosser
9
8
  autorequire:
10
9
  bindir: bin
11
- cert_chain: []
12
- date: 2013-02-08 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDMjCCAhqgAwIBAgIBADANBgkqhkiG9w0BAQUFADA/MRAwDgYDVQQDDAdtaWNo
14
+ YWVsMRcwFQYKCZImiZPyLGQBGRYHZ3Jvc3NlcjESMBAGCgmSJomT8ixkARkWAml0
15
+ MB4XDTEzMDIwMzE4MTMxMVoXDTE0MDIwMzE4MTMxMVowPzEQMA4GA1UEAwwHbWlj
16
+ aGFlbDEXMBUGCgmSJomT8ixkARkWB2dyb3NzZXIxEjAQBgoJkiaJk/IsZAEZFgJp
17
+ dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMorXo/hgbUq97+kII9H
18
+ MsQcLdC/7wQ1ZP2OshVHPkeP0qH8MBHGg6eYisOX2ubNagF9YTCZWnhrdKrwpLOO
19
+ cPLaZbjUjljJ3cQR3B8Yn1veV5IhG86QseTBjymzJWsLpqJ1UZGpfB9tXcsFtuxO
20
+ 6vHvcIHdzvc/OUkICttLbH+1qb6rsHUceqh+JrH4GrsJ5H4hAfIdyS2XMK7YRKbh
21
+ h+IBu6dFWJJByzFsYmV1PDXln3UBmgAt65cmCu4qPfThioCGDzbSJrGDGLmw/pFX
22
+ FPpVCm1zgYSb1v6Qnf3cgXa2f2wYGm17+zAVyIDpwryFru9yF/jJxE38z/DRsd9R
23
+ /88CAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUsiNnXHtKeMYYcr4yJVmQ
24
+ WONL+IwwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQAlyN7kKo/NQCQ0
25
+ AOzZLZ3WAePvStkCFIJ53tsv5Kyo4pMAllv+BgPzzBt7qi605mFSL6zBd9uLou+W
26
+ Co3s48p1dy7CjjAfVQdmVNHF3MwXtfC2OEyvSQPi4xKR8iba8wa3xp9LVo1PuLpw
27
+ /6DsrChWw74HfsJN6qJOK684hJeT8lBYAUfiC3wD0owoPSg+XtyAAddisR+KV5Y1
28
+ NmVHuLtQcNTZy+gRht3ahJRMuC6QyLmkTsf+6MaenwAMkAgHdswGsJztOnNnBa3F
29
+ y0kCSWmK6D+x/SbfS6r7Ke07MRqziJdB9GuE1+0cIRuFh8EQ+LN6HXCKM5pon/GU
30
+ ycwMXfl0
31
+ -----END CERTIFICATE-----
32
+ date: 2013-08-17 00:00:00.000000000 Z
13
33
  dependencies:
14
34
  - !ruby/object:Gem::Dependency
15
35
  name: rake
16
36
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
37
  requirements:
19
- - - ! '>'
38
+ - - '>='
20
39
  - !ruby/object:Gem::Version
21
- version: '0.9'
40
+ version: '0'
22
41
  type: :runtime
23
42
  prerelease: false
24
43
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
44
  requirements:
27
- - - ! '>'
45
+ - - '>='
28
46
  - !ruby/object:Gem::Version
29
- version: '0.9'
47
+ version: '0'
30
48
  description:
31
- email: grosser.michael@gmail.com
49
+ email: michael@grosser.it
32
50
  executables: []
33
51
  extensions: []
34
52
  extra_rdoc_files: []
35
53
  files:
36
- - Gemfile
37
- - Gemfile.lock
38
- - Rakefile
39
- - Readme.md
40
- - VERSION
41
54
  - lib/single_test.rb
42
- - lib/tasks/single_test.rake
43
- - single_test.gemspec
44
- - spec/example_finder_test.txt
45
- - spec/single_test_spec.rb
46
- - spec/spec_helper.rb
55
+ - lib/single_test/tasks.rb
56
+ - lib/single_test/version.rb
47
57
  homepage: http://github.com/grosser/single_test
48
- licenses: []
58
+ licenses:
59
+ - MIT
60
+ metadata: {}
49
61
  post_install_message:
50
62
  rdoc_options: []
51
63
  require_paths:
52
64
  - lib
53
65
  required_ruby_version: !ruby/object:Gem::Requirement
54
- none: false
55
66
  requirements:
56
- - - ! '>='
67
+ - - '>='
57
68
  - !ruby/object:Gem::Version
58
69
  version: '0'
59
- segments:
60
- - 0
61
- hash: -339983977063863514
62
70
  required_rubygems_version: !ruby/object:Gem::Requirement
63
- none: false
64
71
  requirements:
65
- - - ! '>='
72
+ - - '>='
66
73
  - !ruby/object:Gem::Version
67
74
  version: '0'
68
75
  requirements: []
69
76
  rubyforge_project:
70
- rubygems_version: 1.8.24
77
+ rubygems_version: 2.0.6
71
78
  signing_key:
72
- specification_version: 3
79
+ specification_version: 4
73
80
  summary: Rake tasks to invoke single tests/specs with rakish syntax
74
81
  test_files: []
Binary file
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source :rubygems
2
-
3
- gem 'rake', '>0.9'
4
-
5
- group :dev do
6
- gem 'jeweler'
7
- gem 'rspec', '~>2'
8
- end
@@ -1,30 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- diff-lcs (1.1.3)
5
- git (1.2.5)
6
- jeweler (1.8.4)
7
- bundler (~> 1.0)
8
- git (>= 1.2.5)
9
- rake
10
- rdoc
11
- json (1.7.6)
12
- rake (10.0.3)
13
- rdoc (3.12.1)
14
- json (~> 1.4)
15
- rspec (2.12.0)
16
- rspec-core (~> 2.12.0)
17
- rspec-expectations (~> 2.12.0)
18
- rspec-mocks (~> 2.12.0)
19
- rspec-core (2.12.2)
20
- rspec-expectations (2.12.1)
21
- diff-lcs (~> 1.1.3)
22
- rspec-mocks (2.12.2)
23
-
24
- PLATFORMS
25
- ruby
26
-
27
- DEPENDENCIES
28
- jeweler
29
- rake (> 0.9)
30
- rspec (~> 2)
data/Rakefile DELETED
@@ -1,19 +0,0 @@
1
- task :default do
2
- sh "rspec spec"
3
- end
4
-
5
- begin
6
- require 'jeweler'
7
- project_name = 'single_test'
8
- Jeweler::Tasks.new do |gem|
9
- gem.name = project_name
10
- gem.summary = "Rake tasks to invoke single tests/specs with rakish syntax"
11
- gem.email = "grosser.michael@gmail.com"
12
- gem.homepage = "http://github.com/grosser/#{project_name}"
13
- gem.authors = ["Michael Grosser"]
14
- end
15
-
16
- Jeweler::GemcutterTasks.new
17
- rescue LoadError
18
- puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
19
- end
data/Readme.md DELETED
@@ -1,68 +0,0 @@
1
- Runs a single test/spec via rake.
2
-
3
- INSTALLATION
4
- =====
5
- ###As Rails plugin
6
-
7
- script/plugin install git://github.com/grosser/single_test.git
8
-
9
- ###As Gem
10
-
11
- sudo gem install single_test
12
-
13
- Include in your Rakefile:
14
-
15
- require 'single_test'
16
- SingleTest.load_tasks
17
-
18
- USAGE
19
- =====
20
-
21
- ###Single test/spec
22
- Searches for test-files matching the given name.
23
-
24
- rake spec:user #run spec/model/user_spec.rb
25
- rake test:users_c #run test/functional/users_controller_test.rb
26
- rake spec:admin/users_c #run spec/controllers/admin/users_controller_spec.rb
27
- rake test:u*hel #run test/helpers/user_helper_test.rb
28
-
29
- Searches for test-files by class (Foo::Bar -> foo/bar)
30
-
31
- rake spec:Foo::Bar #run spec/foo/bar_spec.rb
32
-
33
- ###Single test-case/example
34
- rake spec:user:token #run the first spec in user_spec.rb that matches /token/
35
- rake test:user:token #run all tests in user_test.rb that match /token/
36
-
37
- ###Spec-server
38
- rake spec:user X= #run test on spec_sever (if one is running...), very fast for quick failure pin-pointing
39
-
40
- ###All one by one
41
- rake spec:one_by_one #run each spec/test one by one, to find tests that fail when ran
42
- rake test:one_by_one #on their own or produce strange output
43
-
44
- ###For last mofified file
45
- rake test:last
46
- rake spec:last
47
-
48
- TIPS
49
- ====
50
- - if `script/spec` is missing, it will use just `spec` for specs (which solves some issues)
51
- - run whole describe blocks: `describe 'xxx' do describe 'yyy'` --> `rake spec:file:'xxx yyy'`
52
- - run single examples or describe blocks via line-numbers `rspec spec/foo_spec:123`
53
-
54
- TODO
55
- ====
56
- - make test:last more clever e.g. lib -> try spec + spec/lib
57
-
58
- Authors
59
- =======
60
-
61
- ### [Contributors](http://github.com/grosser/single_test/contributors)
62
- - [Ian Young](https://github.com/iangreenleaf)
63
- - [Lorrin Nelson](https://github.com/lorrin)
64
- - [Jason King](https://github.com/smathy)
65
-
66
- [Michael Grosser](http://grosser.it)<br/>
67
- michael@grosser.it<br/>
68
- Hereby placed under public domain, do what you want, just do not hold me accountable...
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.5.2
@@ -1,44 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = "single_test"
8
- s.version = "0.5.2"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Michael Grosser"]
12
- s.date = "2013-02-08"
13
- s.email = "grosser.michael@gmail.com"
14
- s.files = [
15
- "Gemfile",
16
- "Gemfile.lock",
17
- "Rakefile",
18
- "Readme.md",
19
- "VERSION",
20
- "lib/single_test.rb",
21
- "lib/tasks/single_test.rake",
22
- "single_test.gemspec",
23
- "spec/example_finder_test.txt",
24
- "spec/single_test_spec.rb",
25
- "spec/spec_helper.rb"
26
- ]
27
- s.homepage = "http://github.com/grosser/single_test"
28
- s.require_paths = ["lib"]
29
- s.rubygems_version = "1.8.24"
30
- s.summary = "Rake tasks to invoke single tests/specs with rakish syntax"
31
-
32
- if s.respond_to? :specification_version then
33
- s.specification_version = 3
34
-
35
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
36
- s.add_runtime_dependency(%q<rake>, ["> 0.9"])
37
- else
38
- s.add_dependency(%q<rake>, ["> 0.9"])
39
- end
40
- else
41
- s.add_dependency(%q<rake>, ["> 0.9"])
42
- end
43
- end
44
-
@@ -1,7 +0,0 @@
1
- it "example 1" do
2
- something_be_here
3
- end
4
-
5
- it 'example "2"' do
6
- wtf(yes)
7
- end
@@ -1,228 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe SingleTest do
4
- describe :parse_cli do
5
- def parse_cli(string)
6
- SingleTest.parse_cli(string.freeze)
7
- end
8
-
9
- it "finds the type spec" do
10
- parse_cli('spec:something')[0].should == 'spec'
11
- end
12
-
13
- it "finds the type test" do
14
- parse_cli('test:something:else')[0].should == 'test'
15
- end
16
-
17
- it "does not find another type" do
18
- lambda{ parse_cli('oops:something:else') }.should raise_error
19
- end
20
-
21
- it "parses the file name" do
22
- parse_cli('test:something:else')[1].should == 'something'
23
- end
24
-
25
- it "parses the test name" do
26
- parse_cli('test:something:else')[2].should == 'else'
27
- end
28
-
29
- it "parses missing test name as nil" do
30
- parse_cli('test:something')[2].should be_nil
31
- end
32
-
33
- it "parses empty test name as nil" do
34
- parse_cli('test:something: ')[2].should be_nil
35
- end
36
-
37
- it "does not split test name further" do
38
- parse_cli('test:something:else:oh:no')[2].should == 'else:oh:no'
39
- end
40
-
41
- it "parses ClassNames" do
42
- parse_cli('test:ClassNames')[1].should == 'class_names'
43
- end
44
-
45
- it "parses ClassNames::WithNamespaces" do
46
- parse_cli('test:ClassNames::WithNamespaces')[1].should == 'class_names/with_namespaces'
47
- end
48
-
49
- it "doesn't confuse :s with ::s" do
50
- parsed = parse_cli('test:ClassNames::WithNamespaces:foobar')
51
- parsed[0].should == 'test'
52
- parsed[1].should == 'class_names/with_namespaces'
53
- parsed[2].should == 'foobar'
54
- end
55
-
56
- it "doesn't mess with non-class names" do
57
- parsed = parse_cli('test:ClassNames::WithNamespaces:FOOBAR')
58
- parsed[2].should == 'FOOBAR'
59
- end
60
-
61
- it "doesn't mess with mixed case filenames" do
62
- parsed = parse_cli('test:a/fileName/withMixedCase')
63
- parsed[1].should == 'a/fileName/withMixedCase'
64
- end
65
- end
66
-
67
- describe :find_test_file do
68
- def make_file(path)
69
- folder = File.dirname(path)
70
- `mkdir -p #{folder}` unless File.exist?(folder)
71
- `touch #{path}`
72
- raise unless File.exist?(path)
73
- end
74
-
75
- before do
76
- `rm -rf spec`
77
- end
78
-
79
- it "finds exact matches first" do
80
- make_file 'spec/mixins/xxx_spec.rb'
81
- make_file 'spec/controllers/xxx_controller_spec.rb'
82
- SingleTest.find_test_file('spec','xxx').should == 'spec/mixins/xxx_spec.rb'
83
- end
84
-
85
- it "finds lower files first" do
86
- make_file 'spec/mixins/xxx_spec.rb'
87
- make_file 'spec/mixins/xxx/xxx_spec.rb'
88
- SingleTest.find_test_file('spec','xxx').should == 'spec/mixins/xxx_spec.rb'
89
- end
90
-
91
- it "finds short matches first" do
92
- make_file 'spec/models/xxx_spec.rb'
93
- make_file 'spec/controllers/xxx_controller_spec.rb'
94
- SingleTest.find_test_file('spec','xx').should == 'spec/models/xxx_spec.rb'
95
- end
96
-
97
- it "finds with wildcards" do
98
- make_file 'spec/controllers/admin/xxx_controller_spec.rb'
99
- SingleTest.find_test_file('spec','ad*/x?x').should == 'spec/controllers/admin/xxx_controller_spec.rb'
100
- end
101
- end
102
-
103
- describe :find_example_in_spec do
104
- examples_file = File.join(File.dirname(__FILE__),'example_finder_test.txt')
105
-
106
- it "finds a complete statement" do
107
- SingleTest.find_example_in_spec(examples_file,'example 1').should == 'example 1'
108
- end
109
-
110
- it "finds a partial statement" do
111
- SingleTest.find_example_in_spec(examples_file,'mple 1').should == 'example 1'
112
- end
113
-
114
- it "finds in strangely formatted files" do
115
- SingleTest.find_example_in_spec(examples_file,'2').should == 'example "2"'
116
- end
117
-
118
- it "returns nil for unfound examples" do
119
- SingleTest.find_example_in_spec(examples_file,'not here').should == nil
120
- end
121
- end
122
-
123
- describe :run_last do
124
- before do
125
- `mkdir app` unless File.exist?('app')
126
- `touch -t 01010000 app/yyy.rb`
127
- `touch -t 01020000 app/xxx.rb`
128
- `mkdir spec` unless File.exist?('spec')
129
- `touch -t 01030000 spec/yyy_spec.rb`
130
- `touch -t 01040000 spec/xxx_spec.rb`
131
- end
132
-
133
- it "runs the last test" do
134
- SingleTest.should_receive(:run_test).with(:spec, "spec/xxx_spec.rb")
135
- SingleTest.run_last(:spec)
136
- end
137
-
138
- it "runs another file when timestamps change" do
139
- `touch -t 12312359 app/yyy.rb` # last minute in current year, spec will fail on new years eve :D
140
- SingleTest.should_receive(:run_test).with(:spec, "spec/yyy_spec.rb")
141
- SingleTest.run_last(:spec)
142
- end
143
- end
144
-
145
- describe :run_test do
146
- before do
147
- ENV['X']=nil
148
- end
149
-
150
- after do
151
- ENV['X']=nil
152
- end
153
-
154
- it "fails when type is not spec/test" do
155
- lambda{SingleTest.run_test('x','y')}.should raise_error
156
- end
157
-
158
- it "runs whole tests" do
159
- Rake.should_receive(:sh).with('ruby -Ilib:test xxx -n //')
160
- SingleTest.run_test('test','xxx')
161
- end
162
-
163
- it "runs single tests on their own" do
164
- Rake.should_receive(:sh).with('ruby -Ilib:test xxx -n /yyy/')
165
- SingleTest.run_test('test', 'xxx', 'yyy')
166
- end
167
-
168
- it "runs whole specs without -e" do
169
- Rake.should_receive(:sh).with('export RAILS_ENV=test ; script/spec xxx')
170
- SingleTest.run_test('spec','xxx')
171
- end
172
-
173
- it "runs all matching specs through -e for rspec 2" do
174
- File.should_receive(:file?).with('script/spec').and_return false
175
- File.stub!(:readlines).and_return ['it "bla yyy" do']
176
- Rake.should_receive(:sh).with('export RAILS_ENV=test ; bundle exec rspec xxx -e "yyy"')
177
- SingleTest.run_test('spec','xxx', 'yyy')
178
- end
179
-
180
- it "runs full single specs through -e for rspec 1" do
181
- File.stub!(:readlines).and_return ['it "bla yyy" do']
182
- Rake.should_receive(:sh).with('export RAILS_ENV=test ; script/spec xxx -e "bla yyy"')
183
- SingleTest.run_test('spec','xxx', 'yyy')
184
- end
185
-
186
- it "runs single specs through -e with -X" do
187
- File.stub!(:readlines).and_return []
188
- ENV['X']=''
189
- Rake.should_receive(:sh).with('export RAILS_ENV=test ; script/spec xxx -e "yyy" -X')
190
- SingleTest.run_test('spec','xxx', 'yyy')
191
- end
192
-
193
- it "runs quoted specs though -e" do
194
- File.stub!(:readlines).and_return []
195
- Rake.should_receive(:sh).with(%Q(export RAILS_ENV=test ; script/spec xxx -e "y\\\"yy"))
196
- SingleTest.run_test('spec','xxx', 'y"yy')
197
- end
198
-
199
- it "adds --options if spec.opts file exists" do
200
- File.stub!(:exist?).and_return true
201
- Rake.should_receive(:sh).with('export RAILS_ENV=test ; script/spec --options spec/spec.opts xxx')
202
- SingleTest.run_test('spec','xxx')
203
- end
204
-
205
- it "runs with bundled spec if script/spec is not found" do
206
- File.stub!(:file?).and_return false
207
- File.should_receive(:file?).with('script/spec').and_return false
208
- Rake.should_receive(:sh).with('export RAILS_ENV=test ; bundle exec rspec xxx')
209
- SingleTest.run_test('spec','xxx')
210
- end
211
-
212
- it "uses bundler if Gemfile is present" do
213
- File.stub!(:file?).and_return false
214
- SingleTest.should_receive(:bundler_enabled?).and_return true
215
- Rake.should_receive(:sh).with('export RAILS_ENV=test ; bundle exec rspec xxx')
216
- SingleTest.run_test('spec','xxx')
217
- end
218
- end
219
-
220
- describe :load_tasks do
221
- it "can load em" do
222
- result = Rake::Task['spec:one_by_one'] rescue nil
223
- result.should == nil
224
- SingleTest.load_tasks
225
- Rake::Task['spec:one_by_one'].should_not == nil
226
- end
227
- end
228
- end
@@ -1,18 +0,0 @@
1
- SPEC_ROOT = File.dirname(__FILE__)
2
- $LOAD_PATH << File.expand_path("../lib", SPEC_ROOT)
3
- require "single_test"
4
-
5
- Dir.chdir(SPEC_ROOT)
6
-
7
- RSpec.configure do |config|
8
- config.before do
9
- `mkdir -p script`
10
- `touch script/spec`
11
- end
12
-
13
- config.after do
14
- `rm -rf script`
15
- `rm -rf app`
16
- `rm -rf spec`
17
- end
18
- end