knapsack_pro 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c09245212dbcd947f2d0ef42545a102cb066726
4
- data.tar.gz: 41b113222a7516b0a896d234e7139a342216ac83
3
+ metadata.gz: c1b41d8fa8f1fbc4132753ff2bed7bd753fa5e70
4
+ data.tar.gz: 2274a0c7340c7095e1a118a232025df0f54d6995
5
5
  SHA512:
6
- metadata.gz: 3a94e5bf2d47d45948c575a5c65ce7c998a68664682e35a396444770246719f1979f755806aa6e8f41797fe5c9a351dce3a61051f01df30d3cde4dee48faf603
7
- data.tar.gz: b0796d9c973b86cdfea8a7976fab67e0013b8132d3ab57932b2b5f84327ce3f323c56ccb28883b1e9038f4cd4c78b793da72265461cd8f11c20379474b00441d
6
+ metadata.gz: 767bf32a466b2049bdc802d4080da52c80387c375f6ad7c4162eb3042b40e6210f0cfd05543a984fc549c9d2f353c72191e4ef8554651da9a9d5676dd9db72d4
7
+ data.tar.gz: e16b193127919aa1132fc55746e7ae444b446d6dda38170d59bc8246a9a8f6d5f1d0965e0fca66093ef83aa72475638a195bd588f687d519a877dca0976fb350
data/CHANGELOG.md CHANGED
@@ -2,10 +2,21 @@
2
2
 
3
3
  * TODO
4
4
 
5
+ ### 0.7.1
6
+
7
+ * Don't fail when there are no tests to run on a node
8
+
9
+ https://github.com/KnapsackPro/knapsack_pro-ruby/issues/7
10
+ https://github.com/KnapsackPro/knapsack_pro-ruby/pull/9
11
+
12
+ https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v0.7.0...v0.7.1
13
+
5
14
  ### 0.7.0
6
15
 
7
16
  * Add support for older cucumber versions than 1.3
8
17
 
18
+ https://github.com/KnapsackPro/knapsack_pro-ruby/issues/5
19
+
9
20
  https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v0.6.1...v0.7.0
10
21
 
11
22
  ### 0.6.1
data/README.md CHANGED
@@ -97,7 +97,7 @@ And then execute:
97
97
  $ bundle
98
98
 
99
99
 
100
- Add this line at the bottom of `Rakefile` if your project has it:
100
+ Add this lines at the bottom of `Rakefile` if your project has it:
101
101
 
102
102
  ```ruby
103
103
  KnapsackPro.load_tasks if defined?(KnapsackPro)
@@ -106,9 +106,13 @@ KnapsackPro.load_tasks if defined?(KnapsackPro)
106
106
  If you are using [VCR gem](https://github.com/vcr/vcr) then add Knapsack Pro API subdomain to [ignore hosts](https://www.relishapp.com/vcr/vcr/v/2-9-3/docs/configuration/ignore-request):
107
107
 
108
108
  ```ruby
109
+ # spec/spec_helper.rb or wherever is your VCR configuration
110
+
109
111
  VCR.configure do |config|
110
112
  config.ignore_hosts 'localhost', '127.0.0.1', '0.0.0.0', 'api.knapsackpro.com'
111
113
  end
114
+
115
+ WebMock.disable_net_connect!(:allow => 'api.knapsackpro.com') if defined?(WebMock)
112
116
  ```
113
117
 
114
118
  ## How to set up
@@ -1,13 +1,20 @@
1
1
  module KnapsackPro
2
2
  class Report
3
3
  def self.save
4
+ test_files = KnapsackPro.tracker.to_a
5
+
6
+ if test_files.empty?
7
+ KnapsackPro.logger.info("Didn't save time execution report on API server because there are no test files matching criteria on this node. Probably reason might be very narrowed tests list - you run only tests with specified tag and there are fewer test files with the tag than node total number.")
8
+ return
9
+ end
10
+
4
11
  repository_adapter = KnapsackPro::RepositoryAdapterInitiator.call
5
12
  action = KnapsackPro::Client::API::V1::BuildSubsets.create(
6
13
  commit_hash: repository_adapter.commit_hash,
7
14
  branch: repository_adapter.branch,
8
15
  node_total: KnapsackPro::Config::Env.ci_node_total,
9
16
  node_index: KnapsackPro::Config::Env.ci_node_index,
10
- test_files: KnapsackPro.tracker.to_a,
17
+ test_files: test_files,
11
18
  )
12
19
  connection = KnapsackPro::Client::Connection.new(action)
13
20
  response = connection.call
@@ -1,3 +1,3 @@
1
1
  module KnapsackPro
2
- VERSION = '0.7.0'
2
+ VERSION = '0.7.1'
3
3
  end
@@ -3,66 +3,82 @@ describe KnapsackPro::Report do
3
3
  subject { described_class.save }
4
4
 
5
5
  before do
6
- commit_hash = double
7
- branch = double
8
- repository_adapter = instance_double(KnapsackPro::RepositoryAdapters::EnvAdapter, commit_hash: commit_hash, branch: branch)
9
- expect(KnapsackPro::RepositoryAdapterInitiator).to receive(:call).and_return(repository_adapter)
10
-
11
- node_total = double
12
- node_index = double
13
- expect(KnapsackPro::Config::Env).to receive(:ci_node_total).and_return(node_total)
14
- expect(KnapsackPro::Config::Env).to receive(:ci_node_index).and_return(node_index)
15
-
16
- test_files = double
17
6
  tracker = instance_double(KnapsackPro::Tracker, to_a: test_files)
18
7
  expect(KnapsackPro).to receive(:tracker).and_return(tracker)
8
+ end
19
9
 
20
- action = double
21
- expect(KnapsackPro::Client::API::V1::BuildSubsets).to receive(:create).with({
22
- commit_hash: commit_hash,
23
- branch: branch,
24
- node_total: node_total,
25
- node_index: node_index,
26
- test_files: test_files,
27
- }).and_return(action)
28
-
29
- connection = instance_double(KnapsackPro::Client::Connection, success?: success?, errors?: errors?)
30
- expect(KnapsackPro::Client::Connection).to receive(:new).with(action).and_return(connection).and_return(connection)
10
+ context "when test files doesn't exist" do
11
+ let(:test_files) { [] }
31
12
 
32
- response = double
33
- expect(connection).to receive(:call).and_return(response)
13
+ it do
14
+ logger = instance_double(Logger)
15
+ expect(KnapsackPro).to receive(:logger).and_return(logger)
16
+ expect(logger).to receive(:info).with("Didn't save time execution report on API server because there are no test files matching criteria on this node. Probably reason might be very narrowed tests list - you run only tests with specified tag and there are fewer test files with the tag than node total number.")
17
+ subject
18
+ end
34
19
  end
35
20
 
36
- context 'when success' do
37
- let(:success?) { true }
21
+ context 'when test files exists' do
22
+ let(:test_files) { [double] }
38
23
 
39
- context 'when response has errors' do
40
- let(:errors?) { true }
24
+ before do
25
+ commit_hash = double
26
+ branch = double
27
+ repository_adapter = instance_double(KnapsackPro::RepositoryAdapters::EnvAdapter, commit_hash: commit_hash, branch: branch)
28
+ expect(KnapsackPro::RepositoryAdapterInitiator).to receive(:call).and_return(repository_adapter)
41
29
 
42
- it do
43
- expect {
44
- subject
45
- }.to raise_error(ArgumentError)
46
- end
30
+ node_total = double
31
+ node_index = double
32
+ expect(KnapsackPro::Config::Env).to receive(:ci_node_total).and_return(node_total)
33
+ expect(KnapsackPro::Config::Env).to receive(:ci_node_index).and_return(node_index)
34
+
35
+ action = double
36
+ expect(KnapsackPro::Client::API::V1::BuildSubsets).to receive(:create).with({
37
+ commit_hash: commit_hash,
38
+ branch: branch,
39
+ node_total: node_total,
40
+ node_index: node_index,
41
+ test_files: test_files,
42
+ }).and_return(action)
43
+
44
+ connection = instance_double(KnapsackPro::Client::Connection, success?: success?, errors?: errors?)
45
+ expect(KnapsackPro::Client::Connection).to receive(:new).with(action).and_return(connection).and_return(connection)
46
+
47
+ response = double
48
+ expect(connection).to receive(:call).and_return(response)
47
49
  end
48
50
 
49
- context 'when response has no errors' do
50
- let(:errors?) { false }
51
+ context 'when success' do
52
+ let(:success?) { true }
53
+
54
+ context 'when response has errors' do
55
+ let(:errors?) { true }
56
+
57
+ it do
58
+ expect {
59
+ subject
60
+ }.to raise_error(ArgumentError)
61
+ end
62
+ end
63
+
64
+ context 'when response has no errors' do
65
+ let(:errors?) { false }
51
66
 
52
- it do
53
- logger = instance_double(Logger)
54
- expect(KnapsackPro).to receive(:logger).and_return(logger)
55
- expect(logger).to receive(:info).with('Saved time execution report on API server.')
56
- subject
67
+ it do
68
+ logger = instance_double(Logger)
69
+ expect(KnapsackPro).to receive(:logger).and_return(logger)
70
+ expect(logger).to receive(:info).with('Saved time execution report on API server.')
71
+ subject
72
+ end
57
73
  end
58
74
  end
59
- end
60
75
 
61
- context 'when failure' do
62
- let(:success?) { false }
63
- let(:errors?) { nil }
76
+ context 'when failure' do
77
+ let(:success?) { false }
78
+ let(:errors?) { nil }
64
79
 
65
- it { subject }
80
+ it { subject }
81
+ end
66
82
  end
67
83
  end
68
84
  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: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ArturT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-23 00:00:00.000000000 Z
11
+ date: 2016-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake