generative 0.2.0 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/ci.yml +26 -0
- data/CHANGELOG.md +21 -3
- data/README.md +108 -7
- data/Rakefile +4 -4
- data/bin/generative +1 -1
- data/generative.gemspec +11 -6
- data/lib/generative/dsl.rb +5 -0
- data/lib/generative/formatters.rb +3 -2
- data/lib/generative/generator_manager.rb +30 -0
- data/lib/generative/rake_task.rb +1 -1
- data/lib/generative.rb +22 -0
- data/spec/generative/generator_manager_spec.rb +50 -0
- data/spec/generative/ordering_spec.rb +1 -1
- data/spec/generative/rake_task_spec.rb +1 -1
- data/spec/generative_spec.rb +13 -1
- data/spec/spec_helper.rb +1 -0
- metadata +23 -25
- data/.travis.yml +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3dc4a220c7ed12097f5fa3fad6118130d716c7836146303ea35a33566fd44313
|
4
|
+
data.tar.gz: 05bc94db4ae4340694a1acbd7d6ffd9f83f352bf36a9fd9571836d6fff00464f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a49da806f77ba8a38e40b72a146429cc7e4dc63260de5a201aadded4a484b41db7ec7a3239f30202597172943de3b3fc3c28da62ba4c1b15d3649e843798e5d0
|
7
|
+
data.tar.gz: 6803173dd0267d2a00291e47904524872bc2e8f9945f757498122bf64fddb1cf78c02ecd3d7bd50f55bd47d11d87692e867cbd062d6d919a9cb505e6a74a43ae
|
@@ -0,0 +1,26 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ main ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ main ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
strategy:
|
15
|
+
matrix:
|
16
|
+
ruby-version: ["3.0", "2.7", "2.6", "2.5", "ruby-head"]
|
17
|
+
|
18
|
+
steps:
|
19
|
+
- uses: actions/checkout@v2
|
20
|
+
- name: Set up Ruby ${{ matrix.ruby-version }}
|
21
|
+
uses: ruby/setup-ruby@v1
|
22
|
+
with:
|
23
|
+
ruby-version: ${{ matrix.ruby-version }}
|
24
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
25
|
+
- name: Run tests
|
26
|
+
run: bundle exec rake ci
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,32 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## 0.2.
|
3
|
+
## 0.2.5 (2022-01-25)
|
4
|
+
|
5
|
+
https://github.com/justincampbell/generative/compare/v0.2.4...v0.2.5
|
6
|
+
|
7
|
+
- Fix: require forwardable ([#30](https://github.com/justincampbell/generative/pull/30))
|
8
|
+
|
9
|
+
## 0.2.4 (2016-09-15)
|
10
|
+
|
11
|
+
https://github.com/justincampbell/generative/compare/v0.2.4...v0.2.4
|
12
|
+
|
13
|
+
## 0.2.3 (2014-12-16)
|
14
|
+
|
15
|
+
https://github.com/justincampbell/generative/compare/v0.2.2...v0.2.3
|
16
|
+
|
17
|
+
## 0.2.2 (2014-12-08)
|
18
|
+
|
19
|
+
https://github.com/justincampbell/generative/compare/v0.2.0...v0.2.2
|
20
|
+
|
21
|
+
## 0.2.0 (2014-08-13)
|
4
22
|
|
5
23
|
* Drop support for RSpec 2
|
6
24
|
* Update RSpec integration to support RSpec 3 final (@jessitron)
|
7
25
|
|
8
|
-
## 0.1.0
|
26
|
+
## 0.1.0 (2013-12-18)
|
9
27
|
|
10
28
|
* Add support for RSpec 2
|
11
29
|
|
12
|
-
## 0.0.1
|
30
|
+
## 0.0.1 (2013-11-21)
|
13
31
|
|
14
32
|
* Initial release
|
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# Generative
|
2
2
|
|
3
|
-
> Generative testing for RSpec
|
4
|
-
> [![Gem Version](https://badge.fury.io/rb/generative.
|
5
|
-
> [![
|
6
|
-
> [![Code Climate](https://codeclimate.com/github/justincampbell/generative.
|
3
|
+
> Generative and property-based testing for RSpec
|
4
|
+
> [![Gem Version](https://badge.fury.io/rb/generative.svg)](http://badge.fury.io/rb/generative)
|
5
|
+
> [![CI](https://github.com/justincampbell/generative/actions/workflows/ci.yml/badge.svg)](https://github.com/justincampbell/generative/actions/workflows/ci.yml)
|
6
|
+
> [![Code Climate](https://codeclimate.com/github/justincampbell/generative.svg)](https://codeclimate.com/github/justincampbell/generative)
|
7
7
|
|
8
8
|
## Installation
|
9
9
|
|
@@ -22,7 +22,7 @@ end
|
|
22
22
|
|
23
23
|
```
|
24
24
|
--color
|
25
|
-
--format
|
25
|
+
--format Generative::Formatter
|
26
26
|
--require generative
|
27
27
|
```
|
28
28
|
|
@@ -48,7 +48,7 @@ would a `let`. Then, write your `it`/`specify` blocks as usual (while keeping
|
|
48
48
|
in mind that the input could be anything).
|
49
49
|
|
50
50
|
```rb
|
51
|
-
describe String do
|
51
|
+
RSpec.describe String do
|
52
52
|
let(:string) { "abc" }
|
53
53
|
|
54
54
|
describe "#reverse" do
|
@@ -71,6 +71,22 @@ describe String do
|
|
71
71
|
end
|
72
72
|
```
|
73
73
|
|
74
|
+
Alternatively, you can modify existing specs in a minimally intrusive way by just adding two tags to an existing context and using the fact that `data` is just an alias for `let`:
|
75
|
+
```ruby
|
76
|
+
RSpec.describe String do
|
77
|
+
describe "#reverse", generative: true, order: :generative do
|
78
|
+
let(:string) { rand(12345).to_s }
|
79
|
+
|
80
|
+
it "maintains length" do
|
81
|
+
expect(string.reverse.length).to eq(string.length)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "is not destructive" do
|
85
|
+
expect(string.reverse.reverse).to eq(string)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
```
|
74
90
|
### Running
|
75
91
|
|
76
92
|
Generative comes with a `generative` command, which simply runs rspec with the
|
@@ -79,7 +95,7 @@ required arguments:
|
|
79
95
|
```
|
80
96
|
$ generative
|
81
97
|
+ GENERATIVE_COUNT=10_000
|
82
|
-
+ rspec --require generative --format Generative --tag generative
|
98
|
+
+ rspec --require generative --format Generative::Formatter --tag generative
|
83
99
|
Run options: include {:generative=>true}
|
84
100
|
|
85
101
|
String
|
@@ -110,3 +126,88 @@ Given the examples above, running `rspec` will use the default "progress"
|
|
110
126
|
formatter. Requiring generative will modify this formatter to output blue dots
|
111
127
|
instead of green for generative tests. Generative also includes it's own
|
112
128
|
formatter, which will only display generative test names once, also in blue.
|
129
|
+
|
130
|
+
### Generators
|
131
|
+
|
132
|
+
Generative allows you to register your own custom generators for generative
|
133
|
+
tests. Registering a generator requires two thing, a name and an object that
|
134
|
+
responds to `#call`.
|
135
|
+
|
136
|
+
Whether you just want to use lambdas.
|
137
|
+
|
138
|
+
```rb
|
139
|
+
Generative.register_generator(:full_name) { "#{Generative.generate(:string)} #{Generative.generate(:string}" }
|
140
|
+
|
141
|
+
Generative.register_generator(:user) { FactoryGirl.build(:user, id: Generative.generate(:integer)) }
|
142
|
+
```
|
143
|
+
|
144
|
+
A class or module that responds to `#call`.
|
145
|
+
|
146
|
+
```rb
|
147
|
+
class LameGenerator
|
148
|
+
def self.call
|
149
|
+
random_string
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
Generative.register_generator(:lame, LameGenerator)
|
154
|
+
```
|
155
|
+
|
156
|
+
Or you want to use a fancy library.
|
157
|
+
|
158
|
+
```rb
|
159
|
+
FakeTypeMappingLibrary
|
160
|
+
generator_for Bar do
|
161
|
+
initializer Float, Fixnum
|
162
|
+
|
163
|
+
accessor :baz, Float
|
164
|
+
accessor :quz, NotherClass
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
Generative.register_generator(:bar, Bar }
|
169
|
+
```
|
170
|
+
|
171
|
+
You can then use your generators using the `generate` helper.
|
172
|
+
|
173
|
+
```rb
|
174
|
+
RSpec.describe String do
|
175
|
+
let(:string) { "abc" }
|
176
|
+
|
177
|
+
describe "#reverse" do
|
178
|
+
generative do
|
179
|
+
data(:string) { generate(:my_fancy_string) }
|
180
|
+
|
181
|
+
it "maintains length" do
|
182
|
+
expect(string.reverse.length).to eq(string.length)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
```
|
188
|
+
|
189
|
+
#### I heard you like generators so I put some generators in your generators...
|
190
|
+
|
191
|
+
If you want to use other generators in your registered generator, do note
|
192
|
+
you have to use Generative's module level method `.generate` like so...
|
193
|
+
|
194
|
+
```rb
|
195
|
+
Generative.register_generator :user do
|
196
|
+
User.new( first_name: Generative.generate(:string, max: 100) )
|
197
|
+
end
|
198
|
+
```
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
### Pre-made Generators
|
203
|
+
|
204
|
+
**Note**: At this time Generative provides no pre-made generators. We
|
205
|
+
encourage you to go out and seek good ways of generating
|
206
|
+
data and maybe even package them up as your own gems. If you
|
207
|
+
do, let us know and we'll link to it here.
|
208
|
+
|
209
|
+
|
210
|
+
#### [Degenerate](https://github.com/niftyn8/degenerate)
|
211
|
+
|
212
|
+
This library has a few generators for some basic primitives... A great start if
|
213
|
+
you're looking to move quickly.
|
data/Rakefile
CHANGED
@@ -13,10 +13,10 @@ task :acceptance do
|
|
13
13
|
ENV.delete('GENERATIVE_COUNT')
|
14
14
|
|
15
15
|
[
|
16
|
-
['rspec', '
|
17
|
-
['rake spec', '
|
18
|
-
['rake generative', '
|
19
|
-
['bin/generative', '
|
16
|
+
['rspec', '22'], # can we do this some other way
|
17
|
+
['rake spec', '22'], # sucks to bump as we add tests...
|
18
|
+
['rake generative', '40000'],
|
19
|
+
['bin/generative', '40000']
|
20
20
|
].each do |command, expected_example_count|
|
21
21
|
puts "Checking output of `#{command}`"
|
22
22
|
output = %x{#{command}}
|
data/bin/generative
CHANGED
@@ -13,7 +13,7 @@ command = %w[
|
|
13
13
|
--tag generative
|
14
14
|
].join(' ')
|
15
15
|
|
16
|
-
command = "GENERATIVE_COUNT=#{ENV['GENERATIVE_COUNT']} #{command}"
|
16
|
+
command = "export GENERATIVE_COUNT=#{ENV['GENERATIVE_COUNT']}; #{command}; unset GENERATIVE_COUNT"
|
17
17
|
|
18
18
|
puts command
|
19
19
|
system command
|
data/generative.gemspec
CHANGED
@@ -2,19 +2,24 @@
|
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
|
5
|
+
authors = {
|
6
|
+
"Justin Campbell" => "justin@justincampbell.com",
|
7
|
+
"Dan McClory" => "danmcclory@gmail.com",
|
8
|
+
"Nate West" => "natescott.west@gmail.com"
|
9
|
+
}
|
10
|
+
|
5
11
|
Gem::Specification.new do |gem|
|
6
12
|
gem.name = 'generative'
|
7
|
-
gem.version = '0.2.
|
8
|
-
gem.authors =
|
9
|
-
gem.email =
|
10
|
-
gem.description = "Generative testing for RSpec"
|
11
|
-
gem.summary = "Generative testing for RSpec"
|
13
|
+
gem.version = '0.2.5'
|
14
|
+
gem.authors = authors.keys
|
15
|
+
gem.email = authors.values
|
16
|
+
gem.description = "Generative and property-based testing for RSpec"
|
17
|
+
gem.summary = "Generative and property-based testing for RSpec"
|
12
18
|
gem.homepage = "https://github.com/justincampbell/generative"
|
13
19
|
gem.license = 'MIT'
|
14
20
|
|
15
21
|
gem.files = `git ls-files`.split($/)
|
16
22
|
gem.executables = gem.files.grep(%r{^bin/}).map { |file| File.basename file }
|
17
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
23
|
gem.require_paths = ["lib"]
|
19
24
|
|
20
25
|
gem.add_dependency 'rspec', '>= 3.0'
|
data/lib/generative/dsl.rb
CHANGED
@@ -37,7 +37,8 @@ module Generative
|
|
37
37
|
output.puts if @group_level == 0
|
38
38
|
|
39
39
|
if generative?(example_group)
|
40
|
-
|
40
|
+
group_description = "#{example_group.description} (generative)"
|
41
|
+
output.puts "#{current_indentation}#{detail_color(group_description)}"
|
41
42
|
|
42
43
|
@group_level += 1
|
43
44
|
example_group.examples.each do |example|
|
@@ -72,7 +73,7 @@ module Generative
|
|
72
73
|
example = notification.example
|
73
74
|
|
74
75
|
if generative?(example)
|
75
|
-
RSpec.wants_to_quit = true
|
76
|
+
RSpec.world.wants_to_quit = true
|
76
77
|
end
|
77
78
|
|
78
79
|
super
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Generative
|
2
|
+
class InvalidGenerator < StandardError; end
|
3
|
+
class UnregisteredGenerator < StandardError; end
|
4
|
+
|
5
|
+
class GeneratorManager
|
6
|
+
|
7
|
+
attr_reader :generators
|
8
|
+
|
9
|
+
def initialize(preregistered_generators={})
|
10
|
+
@generators = Hash.new(preregistered_generators)
|
11
|
+
end
|
12
|
+
|
13
|
+
def register_generator(name, factory=nil, &generator)
|
14
|
+
registerable = block_given? ? generator : factory
|
15
|
+
msg = "#{registerable} must respond to :call"
|
16
|
+
raise InvalidGenerator, msg unless generator_valid?(registerable)
|
17
|
+
@generators.merge!(name => registerable)
|
18
|
+
end
|
19
|
+
|
20
|
+
def find_and_call(name, *args)
|
21
|
+
generators.fetch(name) do
|
22
|
+
raise UnregisteredGenerator, "#{name} generator not registered"
|
23
|
+
end.call(*args)
|
24
|
+
end
|
25
|
+
|
26
|
+
def generator_valid?(generator)
|
27
|
+
generator.respond_to?(:call)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/generative/rake_task.rb
CHANGED
data/lib/generative.rb
CHANGED
@@ -1,8 +1,29 @@
|
|
1
1
|
require 'rspec/core'
|
2
|
+
require 'forwardable'
|
2
3
|
|
3
4
|
module Generative
|
5
|
+
|
4
6
|
DEFAULT_COUNT = '10_000'
|
5
7
|
|
8
|
+
class << self
|
9
|
+
extend Forwardable
|
10
|
+
def_delegators :manager, :register_generator, :find_and_call
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.generate(generator_name, *args)
|
14
|
+
find_and_call(generator_name, *args)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.manager
|
18
|
+
@manager ||= GeneratorManager.new(preregistered_generators)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.preregistered_generators
|
22
|
+
{
|
23
|
+
# nothing to see here yet
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
6
27
|
def self.running?
|
7
28
|
!!ENV['GENERATIVE_COUNT']
|
8
29
|
end
|
@@ -11,3 +32,4 @@ end
|
|
11
32
|
require 'generative/dsl'
|
12
33
|
require 'generative/formatters'
|
13
34
|
require 'generative/ordering'
|
35
|
+
require 'generative/generator_manager'
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Generative::GeneratorManager do
|
4
|
+
|
5
|
+
subject { Generative::GeneratorManager.new }
|
6
|
+
|
7
|
+
describe "#register_generator_generator" do
|
8
|
+
it "throws an exception if a block or a factory object isn't given" do
|
9
|
+
expect { subject.register_generator(:test) }.to raise_error(Generative::InvalidGenerator)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "registers a new generator when given a generator block" do
|
13
|
+
name, generator = :test, lambda { "hi" }
|
14
|
+
expect(subject.generators).not_to include(name)
|
15
|
+
expect(subject.register_generator(name) { "hi" }).to include(name)
|
16
|
+
expect(subject.generators[name].call).to eq("hi")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "registers a new generator when given a factory object" do
|
20
|
+
name, factory = :test, OpenStruct.new(call: true)
|
21
|
+
expect(subject.generators).not_to include(name)
|
22
|
+
expect(subject.register_generator(name, factory)).to include(name)
|
23
|
+
expect(subject.generators[name].call).to be_truthy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#find_and_call" do
|
28
|
+
it "calls a specific generator passing in it's arguments" do
|
29
|
+
name, generator = :test, lambda { |arg| arg }
|
30
|
+
subject.register_generator(name, &generator)
|
31
|
+
expect(subject.find_and_call(name, "hi")).to eq("hi")
|
32
|
+
end
|
33
|
+
|
34
|
+
it "raises an error fo ran unregistered generator" do
|
35
|
+
expect { subject.find_and_call(:nope) }
|
36
|
+
.to raise_error(Generative::UnregisteredGenerator)
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#generator_valid?" do
|
40
|
+
it "returns false if an object doesn't respond to :call or :build" do
|
41
|
+
expect(subject.generator_valid?(nil)).to be_falsey
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns true if an object doesn't respond to :call" do
|
45
|
+
generator = OpenStruct.new(call: true)
|
46
|
+
expect(subject.generator_valid?(generator)).to be_truthy
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/spec/generative_spec.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'generative'
|
2
2
|
|
3
|
-
|
3
|
+
Generative.register_generator(:string) { "a" * rand(255) }
|
4
|
+
|
5
|
+
RSpec.describe String do
|
4
6
|
let(:string) { "abc" }
|
5
7
|
|
6
8
|
describe "#length" do
|
@@ -17,6 +19,16 @@ describe String do
|
|
17
19
|
expect(string.length).to be >= 0
|
18
20
|
end
|
19
21
|
end
|
22
|
+
|
23
|
+
xit "uses registered generators"
|
24
|
+
|
25
|
+
generative do
|
26
|
+
data(:string) { generate(:string) }
|
27
|
+
|
28
|
+
it "is never negative" do
|
29
|
+
expect(string.length).to be >= 0
|
30
|
+
end
|
31
|
+
end
|
20
32
|
end
|
21
33
|
|
22
34
|
describe "#reverse" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,56 +1,58 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: generative
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Campbell
|
8
8
|
- Dan McClory
|
9
|
-
|
9
|
+
- Nate West
|
10
|
+
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2022-01-25 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: rspec
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
17
18
|
requirements:
|
18
|
-
- -
|
19
|
+
- - ">="
|
19
20
|
- !ruby/object:Gem::Version
|
20
21
|
version: '3.0'
|
21
22
|
type: :runtime
|
22
23
|
prerelease: false
|
23
24
|
version_requirements: !ruby/object:Gem::Requirement
|
24
25
|
requirements:
|
25
|
-
- -
|
26
|
+
- - ">="
|
26
27
|
- !ruby/object:Gem::Version
|
27
28
|
version: '3.0'
|
28
29
|
- !ruby/object:Gem::Dependency
|
29
30
|
name: rake
|
30
31
|
requirement: !ruby/object:Gem::Requirement
|
31
32
|
requirements:
|
32
|
-
- -
|
33
|
+
- - ">="
|
33
34
|
- !ruby/object:Gem::Version
|
34
35
|
version: '0'
|
35
36
|
type: :development
|
36
37
|
prerelease: false
|
37
38
|
version_requirements: !ruby/object:Gem::Requirement
|
38
39
|
requirements:
|
39
|
-
- -
|
40
|
+
- - ">="
|
40
41
|
- !ruby/object:Gem::Version
|
41
42
|
version: '0'
|
42
|
-
description: Generative testing for RSpec
|
43
|
+
description: Generative and property-based testing for RSpec
|
43
44
|
email:
|
44
|
-
- justin@justincampbell.
|
45
|
+
- justin@justincampbell.com
|
45
46
|
- danmcclory@gmail.com
|
47
|
+
- natescott.west@gmail.com
|
46
48
|
executables:
|
47
49
|
- generative
|
48
50
|
extensions: []
|
49
51
|
extra_rdoc_files: []
|
50
52
|
files:
|
51
|
-
- .
|
52
|
-
- .
|
53
|
-
- .
|
53
|
+
- ".github/workflows/ci.yml"
|
54
|
+
- ".gitignore"
|
55
|
+
- ".rspec"
|
54
56
|
- CHANGELOG.md
|
55
57
|
- Gemfile
|
56
58
|
- LICENSE.txt
|
@@ -61,9 +63,11 @@ files:
|
|
61
63
|
- lib/generative.rb
|
62
64
|
- lib/generative/dsl.rb
|
63
65
|
- lib/generative/formatters.rb
|
66
|
+
- lib/generative/generator_manager.rb
|
64
67
|
- lib/generative/ordering.rb
|
65
68
|
- lib/generative/rake_task.rb
|
66
69
|
- lib/generative/version.rb
|
70
|
+
- spec/generative/generator_manager_spec.rb
|
67
71
|
- spec/generative/ordering_spec.rb
|
68
72
|
- spec/generative/rake_task_spec.rb
|
69
73
|
- spec/generative_spec.rb
|
@@ -72,29 +76,23 @@ homepage: https://github.com/justincampbell/generative
|
|
72
76
|
licenses:
|
73
77
|
- MIT
|
74
78
|
metadata: {}
|
75
|
-
post_install_message:
|
79
|
+
post_install_message:
|
76
80
|
rdoc_options: []
|
77
81
|
require_paths:
|
78
82
|
- lib
|
79
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
80
84
|
requirements:
|
81
|
-
- -
|
85
|
+
- - ">="
|
82
86
|
- !ruby/object:Gem::Version
|
83
87
|
version: '0'
|
84
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
89
|
requirements:
|
86
|
-
- -
|
90
|
+
- - ">="
|
87
91
|
- !ruby/object:Gem::Version
|
88
92
|
version: '0'
|
89
93
|
requirements: []
|
90
|
-
|
91
|
-
|
92
|
-
signing_key:
|
94
|
+
rubygems_version: 3.2.7
|
95
|
+
signing_key:
|
93
96
|
specification_version: 4
|
94
|
-
summary: Generative testing for RSpec
|
95
|
-
test_files:
|
96
|
-
- spec/generative/ordering_spec.rb
|
97
|
-
- spec/generative/rake_task_spec.rb
|
98
|
-
- spec/generative_spec.rb
|
99
|
-
- spec/spec_helper.rb
|
100
|
-
has_rdoc:
|
97
|
+
summary: Generative and property-based testing for RSpec
|
98
|
+
test_files: []
|