minispec-metadata 2.0.0 → 3.0.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 +4 -4
- data/.ruby-version +1 -0
- data/.travis.yml +1 -0
- data/CHANGELOG.md +8 -0
- data/README.md +18 -12
- data/lib/{core_extensions.rb → backwards.rb} +9 -0
- data/lib/minispec-metadata.rb +25 -4
- data/lib/minispec-metadata/describe.rb +47 -0
- data/lib/minispec-metadata/describe_with_metadata.rb +2 -2
- data/lib/minispec-metadata/it.rb +45 -0
- data/lib/minispec-metadata/spec_with_metadata.rb +2 -2
- data/lib/minispec-metadata/version.rb +2 -2
- data/minispec-metadata.gemspec +1 -1
- data/spec/describe.spec.rb +130 -0
- data/spec/it.spec.rb +78 -0
- data/spec/minispec_metadata.spec.rb +30 -0
- data/spec/readme.spec.rb +9 -0
- data/spec/regression.spec.rb +18 -0
- metadata +28 -19
- data/.rvmrc +0 -1
- data/spec/describe_with_metadata.spec.rb +0 -97
- data/spec/spec_with_metadata.spec.rb +0 -88
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38ce1b63b96b84af69f5727f5eb38d963fe75e99
|
4
|
+
data.tar.gz: a8ac8f3f33abc5350eb57d50dd325668121e3803
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 341212cc6062f980ddee800d6a17f8c4d0103f6e7d98f6acb7bacaa2a10ef7670f0c75a910e06943329c40a640b3b6bbee14343a40db7b2f90d05e87c3b28df9
|
7
|
+
data.tar.gz: 607554c3ddc34877eba6fb2cf1810e2deab07d354448512177de7196588b2d5450aa323cde58fa637764b9f0263fd00b7212842ee0c8c5d1ce603ca659f837ac
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.1.2
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
## 3.0.0
|
2
|
+
|
3
|
+
* Total rewrite.
|
4
|
+
* Fix bug with `it` clashing with `describe` when they were on the same level. (@jrochkind)
|
5
|
+
* Remove `spec_description`. Just use `self.class.desc`
|
6
|
+
* Rename `spec_descriptions` to `descs` (to try to stay close to Minitest naming) and moved it to the spec class level.
|
7
|
+
* Rename `spec_additional_description` to `additional_desc` (that's what Minitest calls it) and moved it to the spec class level.
|
8
|
+
* Rename `MiniSpec` to `Minispec`. The gem is named like it should be camel-cased this way.
|
data/README.md
CHANGED
@@ -8,6 +8,7 @@ https://github.com/ordinaryzelig/minispec-metadata
|
|
8
8
|
## Usage
|
9
9
|
|
10
10
|
```ruby
|
11
|
+
# readme.spec.rb
|
11
12
|
require 'minitest/autorun'
|
12
13
|
require 'minispec-metadata'
|
13
14
|
|
@@ -31,24 +32,23 @@ describe 'Usage', some: 'metadata' do
|
|
31
32
|
)
|
32
33
|
end
|
33
34
|
|
34
|
-
it 'provides a method to get the
|
35
|
-
|
35
|
+
it 'provides a method to get the description of the spec' do
|
36
|
+
desc.must_equal 'provides a method to get the description of the spec'
|
36
37
|
end
|
37
38
|
|
38
|
-
describe
|
39
|
+
describe MinispecMetadata, 'additional description' do
|
39
40
|
|
40
41
|
it 'provides a method to get the descriptions' do
|
41
|
-
|
42
|
+
self.class.descs.must_equal [MinispecMetadata, 'additional description']
|
42
43
|
end
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
it 'provides a shortcut to get the main description' do
|
47
|
-
spec_description.must_equal MiniSpecMetadata::DescribeWithMetadata
|
45
|
+
it 'provides a method to get only the additional description' do
|
46
|
+
self.class.additional_desc.must_equal ['additional description']
|
48
47
|
end
|
49
48
|
|
50
|
-
it '
|
51
|
-
|
49
|
+
it 'is not needed to get the described object' do
|
50
|
+
# This is built in to Minitest, you don't need this gem to do this.
|
51
|
+
self.class.desc.must_equal MinispecMetadata
|
52
52
|
end
|
53
53
|
|
54
54
|
end
|
@@ -68,7 +68,7 @@ Another great use is to do a version of [Ryan Bates' VCR trick](http://railscast
|
|
68
68
|
```ruby
|
69
69
|
describe 'VCR trick' do
|
70
70
|
it 'allows you to name your cassettes the same as the spec' do
|
71
|
-
VCR.use_cassette
|
71
|
+
VCR.use_cassette desc do
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
@@ -90,7 +90,7 @@ Or install it yourself:
|
|
90
90
|
|
91
91
|
## Additional description gotcha
|
92
92
|
|
93
|
-
|
93
|
+
In Minitest <= 4, Minitest allows 2 descriptions:
|
94
94
|
|
95
95
|
```ruby
|
96
96
|
describe 'Description 1', 'Description 2'
|
@@ -108,3 +108,9 @@ But in pure Minitest, it would have been used as the additional description.
|
|
108
108
|
I personally have never seen anybody use the additional description,
|
109
109
|
and I think the "symbols as metadata" feature is more useful.
|
110
110
|
So I allowed this breakage of Minitest behavior.
|
111
|
+
|
112
|
+
## Compatibility
|
113
|
+
|
114
|
+
Tested with Minitest 4 and up.
|
115
|
+
Might work with older versions but I haven't tested them.
|
116
|
+
See .travis to see Ruby versions tested.
|
data/lib/minispec-metadata.rb
CHANGED
@@ -1,9 +1,30 @@
|
|
1
1
|
require 'minitest/spec'
|
2
|
-
require_relative '
|
2
|
+
require_relative 'backwards'
|
3
3
|
|
4
4
|
require "minispec-metadata/version"
|
5
|
-
require 'minispec-metadata/describe_with_metadata'
|
6
|
-
require 'minispec-metadata/spec_with_metadata'
|
7
5
|
|
8
|
-
|
6
|
+
require 'minispec-metadata/it'
|
7
|
+
require 'minispec-metadata/describe'
|
8
|
+
|
9
|
+
module MinispecMetadata
|
10
|
+
|
11
|
+
module_function
|
12
|
+
|
13
|
+
def extract_metadata!(args)
|
14
|
+
metadata = {}
|
15
|
+
args.delete_if do |arg|
|
16
|
+
case arg
|
17
|
+
when Hash
|
18
|
+
metadata.merge! arg
|
19
|
+
when Symbol
|
20
|
+
metadata.merge!(arg => true)
|
21
|
+
else
|
22
|
+
false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
metadata
|
26
|
+
end
|
27
|
+
|
9
28
|
end
|
29
|
+
|
30
|
+
MiniSpecMetadata = MinispecMetadata
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module MinispecMetadata
|
2
|
+
module Describe
|
3
|
+
|
4
|
+
def describe(desc, *additional_desc, &block)
|
5
|
+
metadata = MinispecMetadata.extract_metadata! additional_desc
|
6
|
+
|
7
|
+
cls = super(desc, *additional_desc, &block)
|
8
|
+
cls.extend ClassMethods
|
9
|
+
|
10
|
+
cls.additional_desc = additional_desc
|
11
|
+
cls.describe_metadata = metadata || {}
|
12
|
+
|
13
|
+
cls
|
14
|
+
end
|
15
|
+
|
16
|
+
module ClassMethods
|
17
|
+
|
18
|
+
attr_reader :additional_desc
|
19
|
+
|
20
|
+
def describe_metadata
|
21
|
+
super_describe_metadata =
|
22
|
+
if superclass.respond_to? :describe_metadata
|
23
|
+
superclass.describe_metadata
|
24
|
+
else
|
25
|
+
{}
|
26
|
+
end
|
27
|
+
super_describe_metadata.merge(@describe_metadata)
|
28
|
+
end
|
29
|
+
|
30
|
+
def descs
|
31
|
+
[desc, *additional_desc].compact
|
32
|
+
end
|
33
|
+
|
34
|
+
def additional_desc=(additional_desc)
|
35
|
+
@additional_desc = additional_desc.freeze
|
36
|
+
end
|
37
|
+
|
38
|
+
def describe_metadata=(metadata)
|
39
|
+
@describe_metadata = metadata.freeze
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
Object.send :include, MinispecMetadata::Describe
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module MinispecMetadata
|
2
2
|
module DescribeWithMetadata
|
3
3
|
|
4
4
|
def describe(desc, *_args, &block)
|
@@ -42,4 +42,4 @@ module MiniSpecMetadata
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
Object.send :include,
|
45
|
+
Object.send :include, MinispecMetadata::DescribeWithMetadata
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module MinispecMetadata
|
2
|
+
module It
|
3
|
+
|
4
|
+
def self.included(spec_class)
|
5
|
+
spec_class.extend ClassMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
|
10
|
+
def it(description, *metadata, &block)
|
11
|
+
name = super description, &block
|
12
|
+
|
13
|
+
metadata = MinispecMetadata.extract_metadata!(metadata)
|
14
|
+
|
15
|
+
self.it_descriptions[name] = description
|
16
|
+
self.metadata_by_test_name[name] = metadata
|
17
|
+
|
18
|
+
name
|
19
|
+
end
|
20
|
+
alias_method :specify, :it
|
21
|
+
|
22
|
+
def metadata_by_test_name
|
23
|
+
@metadata_by_test_name ||= {}
|
24
|
+
end
|
25
|
+
|
26
|
+
def it_descriptions
|
27
|
+
@it_descriptions ||= {}
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
def metadata
|
33
|
+
self.class.describe_metadata.merge(
|
34
|
+
self.class.metadata_by_test_name.fetch(name)
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
def desc
|
39
|
+
self.class.it_descriptions.fetch(name)
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
Minitest::Spec.send :include, MinispecMetadata::It
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module MinispecMetadata
|
2
2
|
module SpecWithMetadata
|
3
3
|
|
4
4
|
def self.included(spec_class)
|
@@ -63,4 +63,4 @@ module MiniSpecMetadata
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
MiniTest::Spec.send :include,
|
66
|
+
MiniTest::Spec.send :include, MinispecMetadata::SpecWithMetadata
|
@@ -1,3 +1,3 @@
|
|
1
|
-
module
|
2
|
-
VERSION = "
|
1
|
+
module MinispecMetadata
|
2
|
+
VERSION = "3.0.0"
|
3
3
|
end
|
data/minispec-metadata.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'minispec-metadata/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = "minispec-metadata"
|
8
|
-
gem.version =
|
8
|
+
gem.version = MinispecMetadata::VERSION
|
9
9
|
gem.authors = ["Jared Ning"]
|
10
10
|
gem.email = ["jared@redningja.com"]
|
11
11
|
gem.description = %q{MiniTest::Spec metadata}
|
@@ -0,0 +1,130 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
describe MinispecMetadata::Describe, super_meta: 'data' do
|
4
|
+
|
5
|
+
describe 'as 2nd arg after description', second: '2nd' do
|
6
|
+
|
7
|
+
it 'is accessible with metadata method' do
|
8
|
+
metadata.fetch(:second).must_equal '2nd'
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'as 3rd arg after additional description', 'more description', third: '3rd' do
|
14
|
+
|
15
|
+
it 'is accessible with metadata method' do
|
16
|
+
metadata.fetch(:third).must_equal '3rd'
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'when just a symbol is passed', :axiom, :vcr do
|
22
|
+
it 'uses symbols as true values' do
|
23
|
+
metadata.fetch(:axiom).must_equal true
|
24
|
+
metadata.fetch(:vcr).must_equal true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'duplicate', first: '1st' do
|
29
|
+
|
30
|
+
it 'correctly scopes metadata to current description' do
|
31
|
+
metadata.must_equal(first: '1st', super_meta: 'data')
|
32
|
+
metadata.key?(:second).must_equal false
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'duplicate', second: '2nd' do
|
38
|
+
|
39
|
+
it 'correctly scopes metadata to current description' do
|
40
|
+
metadata.must_equal(second: '2nd', super_meta: 'data')
|
41
|
+
metadata.key?(:first).must_equal false
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
describe 'nested', sub: 'desc' do
|
47
|
+
|
48
|
+
it 'inherits from surrounding description', lowest: 'totem' do
|
49
|
+
metadata.must_equal(
|
50
|
+
super_meta: 'data',
|
51
|
+
sub: 'desc',
|
52
|
+
lowest: 'totem',
|
53
|
+
)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'gives nearest metadata priority', sub: 'zero', super_meta: 'priority' do
|
57
|
+
metadata.must_equal(
|
58
|
+
sub: 'zero',
|
59
|
+
super_meta: 'priority',
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
desc_class = describe 'return value' do
|
66
|
+
|
67
|
+
it 'equals description class' do
|
68
|
+
desc_class.must_equal self.class
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
if MiniTest.const_defined?(:Unit) # Minitest version 4 (maybe before too?)
|
76
|
+
|
77
|
+
# Only allows 1 additional description.
|
78
|
+
describe MinispecMetadata::Describe, 'additional description' do
|
79
|
+
|
80
|
+
it 'provides a method to get the descriptions' do
|
81
|
+
self.class.descs.must_equal [MinispecMetadata::Describe, 'additional description']
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'provides a method to get only the additional description' do
|
85
|
+
self.class.additional_desc.must_equal ['additional description']
|
86
|
+
end
|
87
|
+
|
88
|
+
describe 'nested describe with no additional description' do
|
89
|
+
|
90
|
+
it 'does not inherit additional description from parent' do
|
91
|
+
self.class.additional_desc.must_be_empty
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
else
|
99
|
+
|
100
|
+
# Minitest version 5
|
101
|
+
describe MinispecMetadata::Describe, 'additional description', 'even more' do
|
102
|
+
|
103
|
+
it 'provides a method to get the descriptions' do
|
104
|
+
self.class.descs.must_equal [MinispecMetadata::Describe, 'additional description', 'even more']
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'provides a method to get only the additional description' do
|
108
|
+
self.class.additional_desc.must_equal ['additional description', 'even more']
|
109
|
+
end
|
110
|
+
|
111
|
+
describe 'nested describe with no additional description' do
|
112
|
+
|
113
|
+
it 'does not inherit additional description from parent' do
|
114
|
+
self.class.additional_desc.must_be_empty
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
describe MinispecMetadata::Describe, 'additional description', :respect do
|
124
|
+
|
125
|
+
it 'respects additional description' do
|
126
|
+
self.class.name.must_equal 'MinispecMetadata::Describe::additional description'
|
127
|
+
metadata.must_equal(respect: true)
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
data/spec/it.spec.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
describe MinispecMetadata::It do
|
4
|
+
|
5
|
+
it 'stores metadata for current spec', meta: 'data' do
|
6
|
+
metadata.fetch(:meta).must_equal 'data'
|
7
|
+
end
|
8
|
+
|
9
|
+
specify 'it works with #specify', 1 => 2 do
|
10
|
+
metadata.fetch(1).must_equal 2
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'returns empty hash when no metadata set' do
|
14
|
+
metadata.must_equal({})
|
15
|
+
end
|
16
|
+
|
17
|
+
name = it 'returns name' do
|
18
|
+
name.must_match /test_/
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'before/after hooks' do
|
22
|
+
|
23
|
+
before do
|
24
|
+
metadata.fetch(:before).must_equal 'accessible'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'is accessible in hooks', before: 'accessible', after: 'also accessible' do
|
28
|
+
pass
|
29
|
+
end
|
30
|
+
|
31
|
+
after do
|
32
|
+
metadata.fetch(:after).must_equal 'also accessible'
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'with description metadata', description_meta: 'data' do
|
38
|
+
|
39
|
+
it 'inherits metadata from description' do
|
40
|
+
metadata.fetch(:description_meta).must_equal 'data'
|
41
|
+
end
|
42
|
+
|
43
|
+
it "uses symbols as true values", :verity, :words_are_hard do
|
44
|
+
metadata.must_equal(
|
45
|
+
description_meta: 'data',
|
46
|
+
verity: true,
|
47
|
+
words_are_hard: true,
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
describe 'in a nested describe', 'with no metadata' do
|
52
|
+
|
53
|
+
it 'works', works: true do
|
54
|
+
metadata.must_equal(description_meta: 'data', works: true)
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
describe 'in a nested describe', with_metadata: true do
|
60
|
+
|
61
|
+
it 'works', works: true do
|
62
|
+
metadata.must_equal(works: true, with_metadata: true, description_meta: 'data')
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
describe MinispecMetadata::It, '#desc' do
|
72
|
+
|
73
|
+
it 'provides a method to get the name of the spec' do
|
74
|
+
desc.must_equal 'provides a method to get the name of the spec'
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
describe MinispecMetadata do
|
4
|
+
|
5
|
+
describe '#extract_metadata!' do
|
6
|
+
|
7
|
+
it 'extracts from a hash' do
|
8
|
+
metadata = MinispecMetadata.extract_metadata! [{asdf: true}]
|
9
|
+
metadata.must_equal asdf: true
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'extracts from symbols, returns hash keys with true values' do
|
13
|
+
metadata = MinispecMetadata.extract_metadata! [:asdf, :fdsa]
|
14
|
+
metadata.must_equal asdf: true, fdsa: true
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'extracts a mix' do
|
18
|
+
metadata = MinispecMetadata.extract_metadata! [:asdf, {fdsa: true}]
|
19
|
+
metadata.must_equal asdf: true, fdsa: true
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'descructively removes metadata from args' do
|
23
|
+
args = [:asdf, 'description']
|
24
|
+
metadata = MinispecMetadata.extract_metadata! args
|
25
|
+
args.must_equal ['description']
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/readme.spec.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
# Confirmed to not work with v2.0.0.
|
4
|
+
# Thanks to @jrochkind.
|
5
|
+
describe "top level describe" do
|
6
|
+
describe "an inner describe" do
|
7
|
+
before do
|
8
|
+
desc.wont_be_nil
|
9
|
+
end
|
10
|
+
it "an example inside inner describe" do
|
11
|
+
desc.must_equal 'an example inside inner describe'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "another top level example" do
|
16
|
+
desc.must_equal 'another top level example'
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minispec-metadata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jared Ning
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: awesome_print
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: MiniTest::Spec metadata
|
@@ -59,23 +59,29 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .
|
64
|
-
- .travis.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".ruby-version"
|
64
|
+
- ".travis.yml"
|
65
|
+
- CHANGELOG.md
|
65
66
|
- Gemfile
|
66
67
|
- LICENSE.txt
|
67
68
|
- README.md
|
68
69
|
- Rakefile
|
69
70
|
- gemfiles/minitest-4.gemfile
|
70
|
-
- lib/
|
71
|
+
- lib/backwards.rb
|
71
72
|
- lib/minispec-metadata.rb
|
73
|
+
- lib/minispec-metadata/describe.rb
|
72
74
|
- lib/minispec-metadata/describe_with_metadata.rb
|
75
|
+
- lib/minispec-metadata/it.rb
|
73
76
|
- lib/minispec-metadata/spec_with_metadata.rb
|
74
77
|
- lib/minispec-metadata/version.rb
|
75
78
|
- minispec-metadata.gemspec
|
76
|
-
- spec/
|
79
|
+
- spec/describe.spec.rb
|
77
80
|
- spec/helper.rb
|
78
|
-
- spec/
|
81
|
+
- spec/it.spec.rb
|
82
|
+
- spec/minispec_metadata.spec.rb
|
83
|
+
- spec/readme.spec.rb
|
84
|
+
- spec/regression.spec.rb
|
79
85
|
homepage: https://github.com/ordinaryzelig/minispec-metadata
|
80
86
|
licenses:
|
81
87
|
- MIT
|
@@ -86,21 +92,24 @@ require_paths:
|
|
86
92
|
- lib
|
87
93
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
94
|
requirements:
|
89
|
-
- -
|
95
|
+
- - ">="
|
90
96
|
- !ruby/object:Gem::Version
|
91
97
|
version: '0'
|
92
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
|
-
- -
|
100
|
+
- - ">="
|
95
101
|
- !ruby/object:Gem::Version
|
96
102
|
version: '0'
|
97
103
|
requirements: []
|
98
104
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.
|
105
|
+
rubygems_version: 2.2.2
|
100
106
|
signing_key:
|
101
107
|
specification_version: 4
|
102
108
|
summary: Pass metadata to MiniTest::Spec descriptions and specs like in RSpec.
|
103
109
|
test_files:
|
104
|
-
- spec/
|
110
|
+
- spec/describe.spec.rb
|
105
111
|
- spec/helper.rb
|
106
|
-
- spec/
|
112
|
+
- spec/it.spec.rb
|
113
|
+
- spec/minispec_metadata.spec.rb
|
114
|
+
- spec/readme.spec.rb
|
115
|
+
- spec/regression.spec.rb
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm --create 2.0.0-p0@minispec-metadata
|
@@ -1,97 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
describe MiniSpecMetadata::DescribeWithMetadata, super_meta: 'data' do
|
4
|
-
|
5
|
-
describe 'as 2nd arg after description', second: '2nd' do
|
6
|
-
|
7
|
-
it 'is accessible with metadata method' do
|
8
|
-
metadata.fetch(:second).must_equal '2nd'
|
9
|
-
end
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
describe 'as 3rd arg after additional description', 'more description', third: '3rd' do
|
14
|
-
|
15
|
-
it 'is accessible with metadata method' do
|
16
|
-
metadata.fetch(:third).must_equal '3rd'
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
describe 'when just a symbol is passed', :axiom, :vcr do
|
22
|
-
it 'uses symbols as true values' do
|
23
|
-
metadata.fetch(:axiom).must_equal true
|
24
|
-
metadata.fetch(:vcr).must_equal true
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe 'duplicate', first: '1st' do
|
29
|
-
|
30
|
-
it 'correctly scopes metadata to current description' do
|
31
|
-
metadata.fetch(:first).must_equal '1st'
|
32
|
-
metadata.key?(:second).must_equal false
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
describe 'duplicate', second: '2nd' do
|
38
|
-
|
39
|
-
it 'correctly scopes metadata to current description' do
|
40
|
-
metadata.fetch(:second).must_equal '2nd'
|
41
|
-
metadata.key?(:first).must_equal false
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
describe 'nested', sub: 'desc' do
|
47
|
-
|
48
|
-
it 'inherits from surrounding description', lowest: 'totem' do
|
49
|
-
metadata.must_equal(
|
50
|
-
super_meta: 'data',
|
51
|
-
sub: 'desc',
|
52
|
-
lowest: 'totem',
|
53
|
-
)
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'gives nearest metadata priority', sub: 'zero', super_meta: 'priority' do
|
57
|
-
metadata.must_equal(
|
58
|
-
sub: 'zero',
|
59
|
-
super_meta: 'priority',
|
60
|
-
)
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
desc_class = describe 'return value' do
|
66
|
-
|
67
|
-
it 'equals description class' do
|
68
|
-
desc_class.must_equal self.class
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
74
|
-
|
75
|
-
describe MiniSpecMetadata::DescribeWithMetadata, 'additional description' do
|
76
|
-
|
77
|
-
it 'provides a method to get the descriptions' do
|
78
|
-
spec_descriptions.must_equal [MiniSpecMetadata::DescribeWithMetadata, 'additional description']
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'provides a shortcut to get the main description' do
|
82
|
-
spec_description.must_equal MiniSpecMetadata::DescribeWithMetadata
|
83
|
-
end
|
84
|
-
|
85
|
-
it 'provides a method to get only the additional description' do
|
86
|
-
spec_additional_description.must_equal 'additional description'
|
87
|
-
end
|
88
|
-
|
89
|
-
describe 'nested describe with no additional description' do
|
90
|
-
|
91
|
-
it 'does not inherit additional description from parent' do
|
92
|
-
spec_additional_description.must_be_nil
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
end
|
@@ -1,88 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
describe MiniSpecMetadata::SpecWithMetadata, description_meta: 'data' do
|
4
|
-
|
5
|
-
it 'accepts metadata arg', {} do
|
6
|
-
pass
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'stores metadata for current spec', meta: 'data' do
|
10
|
-
metadata.fetch(:meta).must_equal 'data'
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'inherits metadata from description' do
|
14
|
-
metadata.fetch(:description_meta).must_equal 'data'
|
15
|
-
end
|
16
|
-
|
17
|
-
it "uses symbols as true values", :verity, :words_are_hard do
|
18
|
-
metadata.fetch(:verity).must_equal true
|
19
|
-
metadata.fetch(:words_are_hard).must_equal true
|
20
|
-
end
|
21
|
-
|
22
|
-
specify 'it works with #specify', 1 => 2 do
|
23
|
-
metadata.fetch(1).must_equal 2
|
24
|
-
end
|
25
|
-
|
26
|
-
name = it 'returns name' do
|
27
|
-
name.must_equal name
|
28
|
-
end
|
29
|
-
|
30
|
-
describe 'in a nested describe', 'with no metadata' do
|
31
|
-
|
32
|
-
it 'works', works: true do
|
33
|
-
metadata[:works].must_equal true
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
describe 'in a nested describe', with_metadata: true do
|
39
|
-
|
40
|
-
it 'works', works: true do
|
41
|
-
metadata[:with_metadata].must_equal true
|
42
|
-
metadata[:works].must_equal true
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
describe MiniSpecMetadata::SpecWithMetadata, 'with no metadata' do
|
50
|
-
|
51
|
-
it 'returns empty hash when no metadata set' do
|
52
|
-
metadata.must_equal({})
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
describe MiniSpecMetadata::SpecWithMetadata do
|
58
|
-
|
59
|
-
before do
|
60
|
-
metadata.fetch(:before).must_equal 'accessible'
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'is accessible in hooks', before: 'accessible', after: 'also accessible' do
|
64
|
-
pass
|
65
|
-
end
|
66
|
-
|
67
|
-
after do
|
68
|
-
metadata.fetch(:after).must_equal 'also accessible'
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
describe MiniSpecMetadata::SpecWithMetadata, 'test name' do
|
74
|
-
|
75
|
-
it 'provides a method to get the name of the spec' do
|
76
|
-
spec_name.must_equal 'provides a method to get the name of the spec'
|
77
|
-
end
|
78
|
-
|
79
|
-
end
|
80
|
-
|
81
|
-
describe MiniSpecMetadata::SpecWithMetadata, 'additional description', :respect do
|
82
|
-
|
83
|
-
it 'respects additional description' do
|
84
|
-
self.class.name.must_equal 'MiniSpecMetadata::SpecWithMetadata::additional description'
|
85
|
-
metadata.must_equal({respect: true})
|
86
|
-
end
|
87
|
-
|
88
|
-
end
|