mrspec 0.1.0 → 0.1.1
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 +4 -4
- data/features/mrspec.feature +74 -0
- data/lib/mrspec/declare_minitests.rb +2 -1
- data/lib/mrspec/fix_backtraces_on_minitest_spec.rb +21 -0
- data/lib/mrspec/version.rb +1 -1
- data/lib/mrspec.rb +1 -0
- data/test/test_mrspec.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c2fcc823e51b94b52dba0d39f0b2440519373e8
|
4
|
+
data.tar.gz: 4ab34320cf0c8d6bba5726ba562276980ab711d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5d9fa09313eb832dcabdafb817a8778f1ba6cd416287d0fca519122cb303afad9f011d799e5bf8140590b0d41bb7b63e02dfe2ab4d2c0f8528f0bc144e071c8
|
7
|
+
data.tar.gz: d8a9f3f30ef85c8e552230e91a3abd16e65848efeb9916a9a2cfb35772341d6ad4eb18c0454a1082cf4c08ad9ea342c57161b9e1c08fac7fdbd4a4241ee5d326
|
data/features/mrspec.feature
CHANGED
@@ -88,6 +88,39 @@ Feature: mrspec
|
|
88
88
|
And stdout does not include "Minitest.run_one_method"
|
89
89
|
|
90
90
|
|
91
|
+
Scenario: Minitest::Spec definitions without bodies show line of the declaration in the backtrace, and not the full backtrace
|
92
|
+
Given the file "skip_spec.rb":
|
93
|
+
"""
|
94
|
+
require 'minitest/spec'
|
95
|
+
describe 'a' do
|
96
|
+
it 'has no body'
|
97
|
+
it('calls skip') { skip }
|
98
|
+
end
|
99
|
+
|
100
|
+
class A < Minitest::Spec
|
101
|
+
it 'has no body'
|
102
|
+
it('calls skip') { skip }
|
103
|
+
end
|
104
|
+
|
105
|
+
class Wat < Minitest::Test
|
106
|
+
extend Minitest::Spec::DSL
|
107
|
+
register_spec_type /^lol/, self
|
108
|
+
end
|
109
|
+
describe 'lol' do
|
110
|
+
it 'has no body'
|
111
|
+
it('calls skip') { skip }
|
112
|
+
end
|
113
|
+
"""
|
114
|
+
When I run "mrspec skip_spec.rb"
|
115
|
+
Then stdout includes "skip_spec.rb:3"
|
116
|
+
Then stdout includes "skip_spec.rb:4"
|
117
|
+
Then stdout includes "skip_spec.rb:8"
|
118
|
+
Then stdout includes "skip_spec.rb:9"
|
119
|
+
Then stdout includes "skip_spec.rb:17"
|
120
|
+
Then stdout includes "skip_spec.rb:18"
|
121
|
+
And stdout does not include "/mrspec/"
|
122
|
+
|
123
|
+
|
91
124
|
Scenario: Works with Minitest::Test, choosing intelligent names
|
92
125
|
Given the file "some_test.rb":
|
93
126
|
"""
|
@@ -313,6 +346,47 @@ Feature: mrspec
|
|
313
346
|
And stdout includes "tagged with 1 only"
|
314
347
|
And stdout includes "untagged"
|
315
348
|
|
349
|
+
|
350
|
+
Scenario: Can add metadata to Minitest::Specs
|
351
|
+
Given the file "a_spec.rb":
|
352
|
+
"""
|
353
|
+
require 'minitest/spec'
|
354
|
+
|
355
|
+
describe 'First' do
|
356
|
+
classmeta runthis: true
|
357
|
+
it('spec1') { }
|
358
|
+
end
|
359
|
+
|
360
|
+
class MySpec < Minitest::Spec
|
361
|
+
meta runthis: true
|
362
|
+
it('spec2') { }
|
363
|
+
it('spec3') { }
|
364
|
+
it('spec4') { }
|
365
|
+
end
|
366
|
+
|
367
|
+
class Wat < Minitest::Test
|
368
|
+
extend Minitest::Spec::DSL
|
369
|
+
register_spec_type /^Lol/, self
|
370
|
+
|
371
|
+
def bbq
|
372
|
+
'rofl'
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
describe 'LolSpec!' do
|
377
|
+
meta runthis: true
|
378
|
+
it 'has different inheritance' do
|
379
|
+
assert self.kind_of? Wat
|
380
|
+
end
|
381
|
+
end
|
382
|
+
"""
|
383
|
+
When I run 'mrspec -t runthis a_spec.rb'
|
384
|
+
Then the program ran successfully
|
385
|
+
And stdout includes "3 examples"
|
386
|
+
And stdout includes "0 failures"
|
387
|
+
|
388
|
+
|
389
|
+
|
316
390
|
Scenario: Intelligently formats Minitest's assertions
|
317
391
|
Given the file "test/some_assertions.rb":
|
318
392
|
"""
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'minitest'
|
2
2
|
require 'mrspec/minitest_assertion_for_rspec'
|
3
3
|
|
4
|
+
|
4
5
|
module MRspec
|
5
6
|
module DeclareMinitests
|
6
7
|
extend self
|
@@ -46,7 +47,7 @@ module MRspec
|
|
46
47
|
|
47
48
|
def wrap_test(example_group, klass, mname)
|
48
49
|
metadata = klass.example_metadata[mname.intern]
|
49
|
-
example
|
50
|
+
example = example_group.example example_name(mname), metadata do
|
50
51
|
instance = Minitest.run_one_method klass, mname
|
51
52
|
next if instance.passed?
|
52
53
|
pending 'skipped' if instance.skipped?
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Monkey in the middleing Minitest::Spec::DSL#it,
|
2
|
+
# and aliases to record the block in the user's code,
|
3
|
+
# this way the backtrace lines up with the logical definition site,
|
4
|
+
# and we don't risk filtering the entire backtrace
|
5
|
+
# which causes RSpec to not filter,
|
6
|
+
# and the entire backtrace is quite distracting
|
7
|
+
require 'minitest/spec'
|
8
|
+
dsl = Minitest::Spec::DSL
|
9
|
+
it_location = dsl.instance_method(:it).source_location
|
10
|
+
dsl.instance_methods
|
11
|
+
.map { |name| [name, dsl.instance_method(name)] }
|
12
|
+
.select { |name, method| method.source_location == it_location }
|
13
|
+
.each { |name, method|
|
14
|
+
dsl.__send__ :define_method, name do |*args, &block|
|
15
|
+
callsite = caller[0] || 'unknown-location:0:' # can't think of a situation where this wouldn't be true, but just in case
|
16
|
+
callsite =~ /^(.*?):(\d+):/
|
17
|
+
caller_filename, caller_lineno = $1, $2.to_i
|
18
|
+
block ||= eval 'proc { skip "(no tests defined)" }', binding, caller_filename, caller_lineno
|
19
|
+
method.bind(self).call(*args, &block)
|
20
|
+
end
|
21
|
+
}
|
data/lib/mrspec/version.rb
CHANGED
data/lib/mrspec.rb
CHANGED
data/test/test_mrspec.rb
CHANGED
@@ -155,6 +155,7 @@ class TestMRspec < Minitest::Spec
|
|
155
155
|
it 'omits minitest code from the backtrace'
|
156
156
|
it 'omits rspec code from the backtrace'
|
157
157
|
it 'omits mrspec code from the backtrace'
|
158
|
+
it 'allows Minitest::Spec to be declared without bodies, and backtrace shows the call to the it block'
|
158
159
|
end
|
159
160
|
|
160
161
|
describe 'identifying which test to run' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mrspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Cheek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec-core
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- lib/mrspec.rb
|
94
94
|
- lib/mrspec/configuration.rb
|
95
95
|
- lib/mrspec/declare_minitests.rb
|
96
|
+
- lib/mrspec/fix_backtraces_on_minitest_spec.rb
|
96
97
|
- lib/mrspec/minitest_assertion_for_rspec.rb
|
97
98
|
- lib/mrspec/minitest_metadata.rb
|
98
99
|
- lib/mrspec/option_parser.rb
|