knapsack_pro 1.0.2 → 1.1.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 +22 -0
- data/lib/knapsack_pro/config/env.rb +4 -0
- data/lib/knapsack_pro/test_file_finder.rb +10 -1
- data/lib/knapsack_pro/version.rb +1 -1
- data/spec/knapsack_pro/config/env_spec.rb +14 -0
- data/spec/knapsack_pro/test_file_finder_spec.rb +33 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c90349dc3633e515ef14c71464df3023abf3d43176547bfb2f1d3d9862195c0
|
4
|
+
data.tar.gz: bfda6b2b50c900b141fcd3e5c074a1195346fcc8ff8cd9caf8d1e0ca2b97157e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd531919cc65cc8130d39573b328bedfb55f2528618b2492d695b463340d250619598e204719090d130ffb5f6963fa7b64104b00a67d387e16983ec03df1f699
|
7
|
+
data.tar.gz: 535766bb3747204085c54147dd19d1bb3b8f0fe76a77b941df0a2e17cf2e5d886fc034cbf6342120f240366a896fa7c5d2a9cae2a076ccd544316582d307b098
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
* TODO
|
4
4
|
|
5
|
+
### 1.1.0
|
6
|
+
|
7
|
+
* Add test file exclude pattern.
|
8
|
+
|
9
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/pull/72
|
10
|
+
|
11
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v1.0.2...v1.1.0
|
12
|
+
|
5
13
|
### 1.0.2
|
6
14
|
|
7
15
|
* Track time execution of all tests assigned to CI node in Queue Mode even when they did not run due syntax error or being pending/empty in test run.
|
data/README.md
CHANGED
@@ -155,6 +155,7 @@ The knapsack_pro has also [queue mode](#queue-mode) to get an optimal test suite
|
|
155
155
|
- [Why I don't see all test files being recorded in user dashboard](#why-i-dont-see-all-test-files-being-recorded-in-user-dashboard)
|
156
156
|
- [Why when I use 2 different CI providers then not all test files are executed?](#why-when-i-use-2-different-ci-providers-then-not-all-test-files-are-executed)
|
157
157
|
- [How to run only RSpec feature tests or non feature tests?](#how-to-run-only-rspec-feature-tests-or-non-feature-tests)
|
158
|
+
- [How to exclude tests from running them?](#how-to-exclude-tests-from-running-them)
|
158
159
|
- [How to use CodeClimate with knapsack_pro?](#how-to-use-codeclimate-with-knapsack_pro)
|
159
160
|
- [How to run knapsack_pro only on a few parallel CI nodes instead of all?](#how-to-run-knapsack_pro-only-on-a-few-parallel-ci-nodes-instead-of-all)
|
160
161
|
- [How to use simplecov in Queue Mode?](#how-to-use-simplecov-in-queue-mode)
|
@@ -1864,6 +1865,27 @@ KNAPSACK_PRO_TEST_FILE_PATTERN="spec/features/**{,/*/**}/*_spec.rb" \
|
|
1864
1865
|
bundle exec rake knapsack_pro:queue:rspec
|
1865
1866
|
```
|
1866
1867
|
|
1868
|
+
You can also learn [how to use exclude pattern](#how-to-exclude-tests-from-running-them).
|
1869
|
+
|
1870
|
+
#### How to exclude tests from running them?
|
1871
|
+
|
1872
|
+
For instance you would like to run all tests except tests in `features` directory then you could do:
|
1873
|
+
|
1874
|
+
```
|
1875
|
+
KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN="spec/features/**{,/*/**}/*_spec.rb" \
|
1876
|
+
bundle exec rake knapsack_pro:queue:rspec
|
1877
|
+
```
|
1878
|
+
|
1879
|
+
You can define at the same time the pattern for tests you would like to run and the exclude pattern. For instance run all controller tests except admin controller tests.
|
1880
|
+
|
1881
|
+
```
|
1882
|
+
KNAPSACK_PRO_TEST_FILE_PATTERN="spec/controllers/**{,/*/**}/*_spec.rb" \
|
1883
|
+
KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN="spec/controllers/admin/**{,/*/**}/*_spec.rb" \
|
1884
|
+
bundle exec rake knapsack_pro:queue:rspec
|
1885
|
+
```
|
1886
|
+
|
1887
|
+
The test file pattern and exclude pattern support any glob pattern handled by [`Dir.glob`](http://ruby-doc.org/core-2.4.1/Dir.html#method-c-glob).
|
1888
|
+
|
1867
1889
|
#### How to use CodeClimate with knapsack_pro?
|
1868
1890
|
|
1869
1891
|
You can check CodeClimate docs about [parallel and multiple test suites](https://docs.codeclimate.com/docs/configuring-test-coverage#section-parallel-and-multiple-test-suites).
|
@@ -21,7 +21,16 @@ module KnapsackPro
|
|
21
21
|
attr_reader :test_file_pattern
|
22
22
|
|
23
23
|
def test_files
|
24
|
-
Dir.glob(test_file_pattern).uniq
|
24
|
+
test_file_paths = Dir.glob(test_file_pattern).uniq
|
25
|
+
|
26
|
+
excluded_test_file_paths =
|
27
|
+
if KnapsackPro::Config::Env.test_file_exclude_pattern
|
28
|
+
Dir.glob(KnapsackPro::Config::Env.test_file_exclude_pattern).uniq
|
29
|
+
else
|
30
|
+
[]
|
31
|
+
end
|
32
|
+
|
33
|
+
(test_file_paths - excluded_test_file_paths).sort
|
25
34
|
end
|
26
35
|
|
27
36
|
def test_file_hash_for(test_file_path)
|
data/lib/knapsack_pro/version.rb
CHANGED
@@ -153,6 +153,20 @@ describe KnapsackPro::Config::Env do
|
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
156
|
+
describe '.test_file_exclude_pattern' do
|
157
|
+
subject { described_class.test_file_exclude_pattern }
|
158
|
+
|
159
|
+
context 'when ENV exists' do
|
160
|
+
let(:test_file_exclude_pattern) { 'spec/features/*_spec.rb' }
|
161
|
+
before { stub_const("ENV", { 'KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN' => test_file_exclude_pattern }) }
|
162
|
+
it { should eq test_file_exclude_pattern }
|
163
|
+
end
|
164
|
+
|
165
|
+
context "when ENV doesn't exist" do
|
166
|
+
it { should be_nil }
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
156
170
|
describe '.test_dir' do
|
157
171
|
subject { described_class.test_dir }
|
158
172
|
|
@@ -18,18 +18,39 @@ describe KnapsackPro::TestFileFinder do
|
|
18
18
|
|
19
19
|
subject { described_class.new(test_file_pattern).call }
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
21
|
+
context 'when KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN is not defined' do
|
22
|
+
it do
|
23
|
+
should eq([
|
24
|
+
{
|
25
|
+
'path' => 'spec_fake/controllers/users_controller_spec.rb',
|
26
|
+
},
|
27
|
+
{
|
28
|
+
'path' => 'spec_fake/models/admin_spec.rb',
|
29
|
+
},
|
30
|
+
{
|
31
|
+
'path' => 'spec_fake/models/user_spec.rb',
|
32
|
+
},
|
33
|
+
])
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN is defined' do
|
38
|
+
let(:test_file_exclude_pattern) { 'spec_fake/controllers/*_spec.rb' }
|
39
|
+
|
40
|
+
before do
|
41
|
+
stub_const("ENV", { 'KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN' => test_file_exclude_pattern })
|
42
|
+
end
|
43
|
+
|
44
|
+
it do
|
45
|
+
should eq([
|
46
|
+
{
|
47
|
+
'path' => 'spec_fake/models/admin_spec.rb',
|
48
|
+
},
|
49
|
+
{
|
50
|
+
'path' => 'spec_fake/models/user_spec.rb',
|
51
|
+
},
|
52
|
+
])
|
53
|
+
end
|
33
54
|
end
|
34
55
|
end
|
35
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knapsack_pro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ArturT
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|