knapsack 1.11.1 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +14 -0
- data/knapsack_minitest_report.json +4 -3
- data/lib/knapsack/adapters/minitest_adapter.rb +6 -1
- data/lib/knapsack/version.rb +1 -1
- data/spec/knapsack/adapters/minitest_adapter_spec.rb +33 -13
- data/spec/knapsack/adapters/spinach_adapter_spec.rb +4 -5
- data/test_examples/fast/shared_examples_test.rb +30 -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: 2b142dc2475ee898b18ffea634b8f5619853685f
|
4
|
+
data.tar.gz: fe681da00799d3027ebcc1fafb4a2c3d9f118f1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6da196cf8d1436d5111ba796311d25d828c518b1d38ff8730c28bc9ce3901a5b3dedc1b1fb2180f7517fbb648503de97f001858baa627ef46577b641fb9edeb3
|
7
|
+
data.tar.gz: 40341a7b90caf3537994ec8f08748ba04dafa57b7f4fca6829c2dc7d498c9d84d975a42dc7d39cd462c09861c0a7240c651f3ab60073e8e0cd16095e56b1b0fe
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
* TODO
|
4
4
|
|
5
|
+
### 1.12.0
|
6
|
+
|
7
|
+
* Add support for Minitest::SharedExamples
|
8
|
+
|
9
|
+
https://github.com/ArturT/knapsack/pull/46
|
10
|
+
|
11
|
+
https://github.com/ArturT/knapsack/compare/v1.11.1...v1.12.0
|
12
|
+
|
5
13
|
### 1.11.1
|
6
14
|
|
7
15
|
* Require spinach in spec helper so tests will pass but don't require it in spinach adapter because it breaks for users who don't use spinach and they don't want to add it to their Gemfile
|
data/README.md
CHANGED
@@ -75,6 +75,7 @@ Presentations about gem:
|
|
75
75
|
- [What does "leftover specs" mean?](#what-does-leftover-specs-mean)
|
76
76
|
- [How can I run tests from multiple directories?](#how-can-i-run-tests-from-multiple-directories)
|
77
77
|
- [How to update existing knapsack report for a few test files?](#how-to-update-existing-knapsack-report-for-a-few-test-files)
|
78
|
+
- [How to run tests for particular CI node in your development environment](#how-to-run-tests-for-particular-ci-node-in-your-development-environment)
|
78
79
|
- [Gem tests](#gem-tests)
|
79
80
|
- [Spec](#spec)
|
80
81
|
- [Spec examples](#spec-examples)
|
@@ -197,6 +198,8 @@ Generate time execution report for your test files. Run below command on one of
|
|
197
198
|
|
198
199
|
# Step for Minitest
|
199
200
|
$ KNAPSACK_GENERATE_REPORT=true bundle exec rake test
|
201
|
+
# If you use rails 5 then run this instead:
|
202
|
+
$ KNAPSACK_GENERATE_REPORT=true bundle exec rake knapsack:minitest
|
200
203
|
|
201
204
|
# Step for Spinach
|
202
205
|
$ KNAPSACK_GENERATE_REPORT=true bundle exec spinach
|
@@ -618,6 +621,17 @@ The test file pattern config option supports any glob pattern handled by [`Dir.g
|
|
618
621
|
|
619
622
|
You may want to look at monkey patch in [this issue](https://github.com/ArturT/knapsack/issues/34). Take into account that there are some cons of this approach.
|
620
623
|
|
624
|
+
### How to run tests for particular CI node in your development environment
|
625
|
+
|
626
|
+
In your development environment you can debug tests that were run on the particular CI node.
|
627
|
+
For instance to run subset of tests for the first CI node with specified seed you can do.
|
628
|
+
|
629
|
+
CI_NODE_TOTAL=2 \
|
630
|
+
CI_NODE_INDEX=0 \
|
631
|
+
bundle exec rake "knapsack:rspec[--seed 123]"
|
632
|
+
|
633
|
+
Above example is for RSpec. You can use respectively rake task name and token environment variable when you want to run tests for minitest, cucumber or spinach.
|
634
|
+
|
621
635
|
## Gem tests
|
622
636
|
|
623
637
|
### Spec
|
@@ -1,5 +1,6 @@
|
|
1
1
|
{
|
2
|
-
"test_examples/
|
3
|
-
"test_examples/
|
4
|
-
"test_examples/fast/
|
2
|
+
"test_examples/slow/slow_test.rb": 2.5080618858337402,
|
3
|
+
"test_examples/fast/spec_test.rb": 0.00015115737915039062,
|
4
|
+
"test_examples/fast/shared_examples_test.rb": 0.616192102432251,
|
5
|
+
"test_examples/fast/unit_test.rb": 1.6202473640441895
|
5
6
|
}
|
@@ -52,7 +52,12 @@ module Knapsack
|
|
52
52
|
def self.test_path(obj)
|
53
53
|
# Pick the first public method in the class itself, that starts with "test_"
|
54
54
|
test_method_name = obj.public_methods(false).select{|m| m =~ /^test_/ }.first
|
55
|
-
|
55
|
+
if test_method_name.nil?
|
56
|
+
# case for shared examples
|
57
|
+
method_object = obj.method(obj.location.sub(/.*?test_/, 'test_'))
|
58
|
+
else
|
59
|
+
method_object = obj.method(test_method_name)
|
60
|
+
end
|
56
61
|
full_test_path = method_object.source_location.first
|
57
62
|
parent_of_test_dir_regexp = Regexp.new("^#{@@parent_of_test_dir}")
|
58
63
|
test_path = full_test_path.gsub(parent_of_test_dir_regexp, '.')
|
data/lib/knapsack/version.rb
CHANGED
@@ -102,18 +102,6 @@ describe Knapsack::Adapters::MinitestAdapter do
|
|
102
102
|
end
|
103
103
|
|
104
104
|
describe '.test_path' do
|
105
|
-
class FakeUserTest
|
106
|
-
def test_user_age; end
|
107
|
-
|
108
|
-
# method provided by Minitest
|
109
|
-
# it returns test method name
|
110
|
-
def name
|
111
|
-
:test_user_age
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
let(:obj) { FakeUserTest.new }
|
116
|
-
|
117
105
|
subject { described_class.test_path(obj) }
|
118
106
|
|
119
107
|
before do
|
@@ -122,6 +110,38 @@ describe Knapsack::Adapters::MinitestAdapter do
|
|
122
110
|
described_class.class_variable_set(:@@parent_of_test_dir, parent_of_test_dir_regexp)
|
123
111
|
end
|
124
112
|
|
125
|
-
|
113
|
+
context 'when regular test' do
|
114
|
+
class FakeUserTest
|
115
|
+
def test_user_age; end
|
116
|
+
|
117
|
+
# method provided by Minitest
|
118
|
+
# it returns test method name
|
119
|
+
def name
|
120
|
+
:test_user_age
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
let(:obj) { FakeUserTest.new }
|
125
|
+
|
126
|
+
it { should eq './spec/knapsack/adapters/minitest_adapter_spec.rb' }
|
127
|
+
end
|
128
|
+
|
129
|
+
context 'when shared examples test' do
|
130
|
+
module FakeSharedExamples
|
131
|
+
def test_from_shared_example; end
|
132
|
+
end
|
133
|
+
|
134
|
+
class FakeSharedExamplesUserTest
|
135
|
+
include FakeSharedExamples
|
136
|
+
|
137
|
+
def location
|
138
|
+
"test that use FakeSharedExamples#test_from_shared_example"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
let(:obj) { FakeSharedExamplesUserTest.new }
|
143
|
+
|
144
|
+
it { should eq './spec/knapsack/adapters/minitest_adapter_spec.rb' }
|
145
|
+
end
|
126
146
|
end
|
127
147
|
end
|
@@ -13,11 +13,10 @@ describe Knapsack::Adapters::SpinachAdapter do
|
|
13
13
|
|
14
14
|
describe '#bind_time_tracker' do
|
15
15
|
let(:tracker) { instance_double(Knapsack::Tracker) }
|
16
|
-
let(:test_path) { 'spec/a_spec.rb' }
|
17
16
|
let(:global_time) { 'Global time: 01m 05s' }
|
18
|
-
let(:
|
17
|
+
let(:test_path) { 'features/a.feature' }
|
19
18
|
let(:scenario_data) do
|
20
|
-
double(feature: double(filename:
|
19
|
+
double(feature: double(filename: test_path))
|
21
20
|
end
|
22
21
|
|
23
22
|
it do
|
@@ -74,11 +73,11 @@ describe Knapsack::Adapters::SpinachAdapter do
|
|
74
73
|
|
75
74
|
describe '.test_path' do
|
76
75
|
let(:scenario_data) do
|
77
|
-
double(feature: double(filename: '
|
76
|
+
double(feature: double(filename: 'a.feature'))
|
78
77
|
end
|
79
78
|
|
80
79
|
subject { described_class.test_path(scenario_data) }
|
81
80
|
|
82
|
-
it { should eql '
|
81
|
+
it { should eql 'a.feature' }
|
83
82
|
end
|
84
83
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'minitest/spec'
|
3
|
+
|
4
|
+
class Minitest::SharedExamples < Module
|
5
|
+
include Minitest::Spec::DSL
|
6
|
+
end
|
7
|
+
|
8
|
+
SharedExampleSpec = Minitest::SharedExamples.new do
|
9
|
+
def setup
|
10
|
+
sleep 0.1
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_mal
|
14
|
+
sleep 0.1
|
15
|
+
assert_equal 4, 2 * 2
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_no_way
|
19
|
+
sleep 0.2
|
20
|
+
refute_match(/^no/i, 'yes')
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_that_will_be_skipped
|
24
|
+
skip 'test this later'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "test that use SharedExamples" do
|
29
|
+
include SharedExampleSpec
|
30
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knapsack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ArturT
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -259,6 +259,7 @@ files:
|
|
259
259
|
- spinach_examples/steps/test_how_spinach_works_for_first_test.rb
|
260
260
|
- spinach_examples/steps/test_how_spinach_works_for_second_test.rb
|
261
261
|
- spinach_examples/support/env.rb
|
262
|
+
- test_examples/fast/shared_examples_test.rb
|
262
263
|
- test_examples/fast/spec_test.rb
|
263
264
|
- test_examples/fast/unit_test.rb
|
264
265
|
- test_examples/slow/slow_test.rb
|