rspec-bisect 0.1.1 → 0.1.2
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/bin/rspec-bisect +34 -5
- data/features/accepts_seeds.feature +0 -1
- data/lib/rspec/bisect/version.rb +1 -1
- data/rspec-bisect.gemspec +1 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38940973e6003e17ff03d56726279191d9af09cc
|
4
|
+
data.tar.gz: 0b8e43a67e09a6d25f070ef62a85222cea27909b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 941276fbcd9fb96e271095d6ee8d07fffdc46c3a1e4cb4368c1e2c23bb5539883b65ab88d9fdec52af46a72672506f60f3a1e80e578f3f3b5ac507442b9e3306
|
7
|
+
data.tar.gz: d5af173c24f9320302cab01327db0b44061f5c654dd80aeec31b7485d2ebd3f465ac5894af6988ec3909e53313aa24aea538e61b95215f166f68bd37267d399b
|
data/bin/rspec-bisect
CHANGED
@@ -3,8 +3,13 @@
|
|
3
3
|
require 'json'
|
4
4
|
require 'colorize'
|
5
5
|
require 'optparse'
|
6
|
+
require 'ruby-progressbar'
|
7
|
+
|
8
|
+
@options = {}
|
9
|
+
def options
|
10
|
+
@options
|
11
|
+
end
|
6
12
|
|
7
|
-
options = {}
|
8
13
|
OptionParser.new do |opts|
|
9
14
|
opts.banner = 'Usage: rspec-bisect [options]'
|
10
15
|
|
@@ -24,7 +29,11 @@ else
|
|
24
29
|
puts "Running tests with seed #{options[:seed]}"
|
25
30
|
end
|
26
31
|
|
27
|
-
|
32
|
+
def rspec_seed_argument
|
33
|
+
options[:seed].nil? ? '' : "--seed #{options[:seed]}"
|
34
|
+
end
|
35
|
+
|
36
|
+
result = `rspec --format json #{rspec_seed_argument}`
|
28
37
|
parsed = JSON.parse result
|
29
38
|
|
30
39
|
examples = parsed['examples']
|
@@ -42,7 +51,7 @@ def examples_as_rspec_params(examples)
|
|
42
51
|
end
|
43
52
|
|
44
53
|
def run_examples_command(examples)
|
45
|
-
"rspec #{examples_as_rspec_params(examples)}"
|
54
|
+
"rspec #{examples_as_rspec_params(examples)} #{rspec_seed_argument}"
|
46
55
|
end
|
47
56
|
|
48
57
|
def run_examples(examples)
|
@@ -57,9 +66,18 @@ def last_command_failed?
|
|
57
66
|
not last_command_passed?
|
58
67
|
end
|
59
68
|
|
69
|
+
def progress_bar(additional_options)
|
70
|
+
ProgressBar.create({format: '%t |%w>%i| %c/%C |%e'}.merge(additional_options))
|
71
|
+
end
|
72
|
+
|
73
|
+
dependent_examples_progress = progress_bar title: 'Detecting Dependent Examples',
|
74
|
+
total: failing_examples.size
|
75
|
+
|
60
76
|
order_dependent_examples = failing_examples.select do |example|
|
61
77
|
run_examples([example])
|
62
|
-
last_command_passed?
|
78
|
+
passed = last_command_passed?
|
79
|
+
dependent_examples_progress.increment
|
80
|
+
passed
|
63
81
|
end
|
64
82
|
|
65
83
|
if order_dependent_examples.size > 0
|
@@ -75,18 +93,27 @@ order_dependent_examples.each do |example|
|
|
75
93
|
puts
|
76
94
|
puts "Culprits for #{example['full_description']}:"
|
77
95
|
|
96
|
+
culprit_progress = progress_bar title: 'Determining culprits',
|
97
|
+
total: nil,
|
98
|
+
format: '%t |%i| %c potential culprits'
|
99
|
+
|
78
100
|
culprits = examples.take_while do |e|
|
79
101
|
example['file_path'] != e['file_path'] ||
|
80
102
|
example['line_number'] != e['line_number']
|
81
103
|
end
|
82
104
|
|
105
|
+
culprit_progress.progress = culprits.size
|
106
|
+
|
83
107
|
culprit_count_theory = 1
|
84
108
|
while culprits.size > culprit_count_theory
|
85
109
|
found_useless_group = false
|
86
110
|
culprits.each_slice(culprits.size / (culprit_count_theory + 1)) do |excluded_culprits|
|
87
|
-
|
111
|
+
culprit_progress.progress = culprits.size
|
88
112
|
|
113
|
+
culprit_group = culprits - excluded_culprits
|
89
114
|
run_examples culprit_group + [example]
|
115
|
+
|
116
|
+
culprit_progress.progress = culprits.size
|
90
117
|
if last_command_failed?
|
91
118
|
culprits = culprit_group
|
92
119
|
|
@@ -98,6 +125,8 @@ order_dependent_examples.each do |example|
|
|
98
125
|
culprit_count_theory += 1 unless found_useless_group
|
99
126
|
end
|
100
127
|
|
128
|
+
culprit_progress.stop
|
129
|
+
|
101
130
|
culprits.each { |candidate| puts candidate['full_description'].green }
|
102
131
|
|
103
132
|
puts example['full_description'].red
|
data/lib/rspec/bisect/version.rb
CHANGED
data/rspec-bisect.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-bisect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shelby Doolittle
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.7.3
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: ruby-progressbar
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.6.1
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.6.1
|
97
111
|
description: Detect order dependencies in rspec test suites. Also print the minimal
|
98
112
|
set of tests to reproduce the failure(s).
|
99
113
|
email:
|