generative 0.2.0.pre2 → 0.2.0.pre3

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: 49659c159ebfd282874884ad9286ca2f947493a7
4
- data.tar.gz: a44984cd34f637445dfa16b49269e2ff0c6d18c2
3
+ metadata.gz: 5faa370af27a180158e8c85e3fd490e17705d648
4
+ data.tar.gz: cf64fb8e0597e19ab5008e85178307ba1f8a9be9
5
5
  SHA512:
6
- metadata.gz: 277d2e6d7bbf4e52b2378b0bff70418cd4ecb90e071741a43d1754ea85098f398883ab080a9d433e9c9131d261a41cf9031430f663f052e2aae12ddbcca8fd49
7
- data.tar.gz: 0bb3ccd617f93fedcb8e6bebbfc2b246ccd056e909f18fef9ace0a21e817e8f78f1543cd2afdbed1d29daa887ce8358c34bcf8477386543240c72a0c94d8d073
6
+ metadata.gz: 3fe5857f7cbf5ed68100cb824b3c4a2c77b8aee62b8c55e44b3cad2aa61180a2a089f95c846bf8eec88674c7b436cf233afbe9f86d00f9458be25a86bb1749d5
7
+ data.tar.gz: 9ddf3005b3c3be9064cd6f0c5bc8cf6b5bc8a6c8c50c09af960252b552e96829cc23dcd40fd6b8786c9d4b79eb80b3169c5b7d9a587b839142efc68411ebfaf7
data/.travis.yml CHANGED
@@ -1,10 +1,8 @@
1
1
  language: ruby
2
- env:
3
- - RSPEC_VERSION=2
4
- - RSPEC_VERSION=3
5
2
  rvm:
6
3
  - 1.9.3
7
4
  - 2.0.0
5
+ - 2.1
8
6
  - ruby-head
9
7
  matrix:
10
8
  allow_failures:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0
4
+
5
+ * Drop support for RSpec 2
6
+
3
7
  ## 0.1.0
4
8
 
5
9
  * Add support for RSpec 2
data/README.md CHANGED
@@ -38,20 +38,6 @@ RSpec::Core::RakeTask.new
38
38
  Generative::RakeTask.new
39
39
  ```
40
40
 
41
- ### Remove any random/other ordering
42
-
43
- If using RSpec 2, you'll need to make sure you remove `config.order =
44
- 'random'`, or any other ordering strategies, from your spec helper. You can
45
- also use `Generative.running?` to only disable random ordering during
46
- Generative runs:
47
-
48
- ```rb
49
- config.order = :random unless Generative.running?
50
- ```
51
-
52
- In RSpec 3, this is not necessary, because each example group (the `generative`
53
- block) can override ordering for that group.
54
-
55
41
  ## Usage
56
42
 
57
43
  ### Specs
data/Rakefile CHANGED
@@ -10,16 +10,27 @@ Generative::RakeTask.new
10
10
 
11
11
  desc "Verify all spec commands behave properly"
12
12
  task :acceptance do
13
+ ENV.delete('GENERATIVE_COUNT')
14
+
13
15
  [
14
- ['rspec', '6'],
15
- ['rake spec', '6'],
16
+ ['rspec', '13'],
17
+ ['rake spec', '13'],
16
18
  ['rake generative', '30000'],
17
19
  ['bin/generative', '30000']
18
- ].each do |command, example_count|
19
- result = system %{#{command} | grep "#{example_count} examples, 0 failures"}
20
+ ].each do |command, expected_example_count|
21
+ puts "Checking output of `#{command}`"
22
+ output = %x{#{command}}
23
+ pattern = /(\d+) examples, (\d+) failures/
24
+ _, example_count, failure_count = output.match(pattern).to_a
25
+
26
+ unless failure_count == '0'
27
+ fail "`#{command}` had #{failure_count} failures"
28
+ end
20
29
 
21
- unless result
22
- fail "`#{command}` had an incorrect example count"
30
+ unless example_count == expected_example_count
31
+ fail "`#{command}` had an incorrect example count, " \
32
+ "expected #{expected_example_count}, " \
33
+ "but got #{example_count}"
23
34
  end
24
35
  end
25
36
 
data/generative.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = 'generative'
7
- gem.version = '0.2.0.pre2'
7
+ gem.version = '0.2.0.pre3'
8
8
  gem.authors = ["Justin Campbell", "Dan McClory"]
9
9
  gem.email = ["justin@justincampbell.me", "danmcclory@gmail.com"]
10
10
  gem.description = "Generative testing for RSpec"
@@ -17,14 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- case ENV['RSPEC_VERSION']
21
- when '2'
22
- gem.add_dependency 'rspec', '~> 2.0'
23
- when '3'
24
- gem.add_dependency 'rspec', '3.0.0.beta1'
25
- else
26
- gem.add_dependency 'rspec'
27
- end
20
+ gem.add_dependency 'rspec', '>= 3.0'
28
21
 
29
22
  gem.add_development_dependency 'rake'
30
23
  end
@@ -1,10 +1,6 @@
1
1
  class RSpec::Core::ExampleGroup
2
- def self.generative(name = nil, &block)
3
- name = "(#{name})" if name
4
- name = "\033[36mgenerative#{name}\033[0m"
5
2
 
6
- describe(name, generative: true, order: :generative, &block)
7
- end
3
+ define_example_group_method :generative, { generative: true, order: :generative}
8
4
 
9
5
  class << self
10
6
  alias_method :data, :let
@@ -1,13 +1,16 @@
1
1
  require 'rspec/core/formatters/progress_formatter'
2
+ require 'rspec/core/formatters/console_codes'
2
3
 
3
4
  class RSpec::Core::Formatters::ProgressFormatter
4
- def example_passed(example)
5
- super(example)
5
+ alias_method :super_example_passed, :example_passed
6
+
7
+ def example_passed(notification)
8
+ example = notification.example
6
9
 
7
10
  if example.metadata[:generative]
8
- output.print detail_color('.')
11
+ output.print RSpec::Core::Formatters::ConsoleCodes.wrap('.', :cyan)
9
12
  else
10
- output.print success_color('.')
13
+ super_example_passed(notification)
11
14
  end
12
15
  end
13
16
  end
@@ -16,11 +19,19 @@ require 'rspec/core/formatters/documentation_formatter'
16
19
 
17
20
  module Generative
18
21
  class Formatter < RSpec::Core::Formatters::DocumentationFormatter
22
+ RSpec::Core::Formatters.register self,
23
+ :example_failed,
24
+ :example_group_started,
25
+ :example_passed,
26
+ :example_pending
27
+
19
28
  def initialize(output)
20
- super(output)
29
+ super
21
30
  end
22
31
 
23
- def example_group_started(example_group)
32
+ def example_group_started(notification)
33
+ example_group = notification.group
34
+
24
35
  @example_group = example_group
25
36
 
26
37
  output.puts if @group_level == 0
@@ -41,28 +52,38 @@ module Generative
41
52
  @group_level += 1
42
53
  end
43
54
 
44
- def example_passed(example)
55
+ def example_passed(notification)
56
+ example = notification.example
57
+
45
58
  return if generative?(example)
46
59
 
47
- super(example)
60
+ super
48
61
  end
49
62
 
50
- def example_pending(example)
63
+ def example_pending(notification)
64
+ example = notification.example
65
+
51
66
  return if generative?(example)
52
67
 
53
- super(example)
68
+ super
54
69
  end
55
70
 
56
- def example_failed(example)
71
+ def example_failed(notification)
72
+ example = notification.example
73
+
57
74
  if generative?(example)
58
75
  RSpec.wants_to_quit = true
59
76
  end
60
77
 
61
- super(example)
78
+ super
62
79
  end
63
80
 
64
81
  private
65
82
 
83
+ def detail_color(text)
84
+ RSpec::Core::Formatters::ConsoleCodes.wrap(text, :cyan)
85
+ end
86
+
66
87
  def generative?(example)
67
88
  example.metadata[:generative]
68
89
  end
@@ -1,15 +1,13 @@
1
1
  Generative::ORDERING = ->(examples) {
2
+ generative, regular = examples.partition { |example|
3
+ example.metadata[:generative]
4
+ }
5
+
2
6
  number_of_examples = ENV.fetch('GENERATIVE_COUNT', '1').to_i
3
- examples * number_of_examples
7
+
8
+ regular + generative * number_of_examples
4
9
  }
5
10
 
6
11
  RSpec.configure do |rspec|
7
- case RSpec::Core::Version::STRING
8
- when /^2/
9
- rspec.order_examples(&Generative::ORDERING) if ENV['GENERATIVE_COUNT']
10
- when /^3/
11
- rspec.register_ordering(:generative, &Generative::ORDERING)
12
- else
13
- puts "Generative was unable to determine the RSpec version."
14
- end
12
+ rspec.register_ordering(:generative, &Generative::ORDERING)
15
13
  end
@@ -4,7 +4,7 @@ require 'rspec/core/rake_task'
4
4
  module Generative
5
5
  class RakeTask < RSpec::Core::RakeTask
6
6
  def initialize(*args, &task_block)
7
- setup_ivars(args)
7
+ super
8
8
 
9
9
  self.name = :generative if name == :spec
10
10
 
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Generative::ORDERING do
4
+ let(:ordering) { Generative::ORDERING }
5
+
6
+ around do |example|
7
+ previous = ENV['GENERATIVE_COUNT']
8
+ ENV['GENERATIVE_COUNT'] = '10'
9
+
10
+ example.call
11
+
12
+ ENV['GENERATIVE_COUNT'] = previous
13
+ end
14
+
15
+ it "does not duplicate regular specs" do
16
+ spec = double(metadata: {})
17
+ expect(ordering.call([spec])).to eq([spec])
18
+ end
19
+
20
+ it "duplicates generative specs" do
21
+ spec = double(metadata: { generative: true })
22
+ expect(ordering.call([spec]).count).to eq(10)
23
+ end
24
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+ require 'generative/rake_task'
3
+
4
+ describe Generative::RakeTask do
5
+ let(:task) { Generative::RakeTask.new(*args) }
6
+ let(:args) { [] }
7
+
8
+ describe "name" do
9
+ subject(:name) { task.name }
10
+
11
+ it "has a default" do
12
+ expect(name).to eq(:generative)
13
+ end
14
+
15
+ context "when passed a name" do
16
+ let(:args) { [:properties] }
17
+
18
+ it "uses that name" do
19
+ expect(name).to eq(:properties)
20
+ end
21
+ end
22
+ end
23
+
24
+ describe "rspec_opts" do
25
+ subject(:rspec_opts) { task.rspec_opts }
26
+
27
+ it "require generative" do
28
+ expect(rspec_opts).to include("--require generative")
29
+ end
30
+
31
+ it "format with Generative::Formatter" do
32
+ expect(rspec_opts).to include("--format Generative::Formatter")
33
+ end
34
+
35
+ it "only run specs tagged with generative" do
36
+ expect(rspec_opts).to include("--format Generative::Formatter")
37
+ end
38
+ end
39
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: generative
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre2
4
+ version: 0.2.0.pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Campbell
@@ -9,34 +9,34 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-23 00:00:00.000000000 Z
12
+ date: 2014-08-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: '3.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - '>='
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: '3.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - '>='
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  description: Generative testing for RSpec
@@ -48,9 +48,9 @@ executables:
48
48
  extensions: []
49
49
  extra_rdoc_files: []
50
50
  files:
51
- - ".gitignore"
52
- - ".rspec"
53
- - ".travis.yml"
51
+ - .gitignore
52
+ - .rspec
53
+ - .travis.yml
54
54
  - CHANGELOG.md
55
55
  - Gemfile
56
56
  - LICENSE.txt
@@ -64,6 +64,8 @@ files:
64
64
  - lib/generative/ordering.rb
65
65
  - lib/generative/rake_task.rb
66
66
  - lib/generative/version.rb
67
+ - spec/generative/ordering_spec.rb
68
+ - spec/generative/rake_task_spec.rb
67
69
  - spec/generative_spec.rb
68
70
  - spec/spec_helper.rb
69
71
  homepage: https://github.com/justincampbell/generative
@@ -76,20 +78,23 @@ require_paths:
76
78
  - lib
77
79
  required_ruby_version: !ruby/object:Gem::Requirement
78
80
  requirements:
79
- - - ">="
81
+ - - '>='
80
82
  - !ruby/object:Gem::Version
81
83
  version: '0'
82
84
  required_rubygems_version: !ruby/object:Gem::Requirement
83
85
  requirements:
84
- - - ">"
86
+ - - '>'
85
87
  - !ruby/object:Gem::Version
86
88
  version: 1.3.1
87
89
  requirements: []
88
90
  rubyforge_project:
89
- rubygems_version: 2.2.0
91
+ rubygems_version: 2.0.14
90
92
  signing_key:
91
93
  specification_version: 4
92
94
  summary: Generative testing for RSpec
93
95
  test_files:
96
+ - spec/generative/ordering_spec.rb
97
+ - spec/generative/rake_task_spec.rb
94
98
  - spec/generative_spec.rb
95
99
  - spec/spec_helper.rb
100
+ has_rdoc: