spec_tiller 1.2.0 → 1.2.1

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: d9860619a722afce5c9d9fd35042c134bad7e4a3
4
- data.tar.gz: 7409ba1e7a22b25c7f1b51b6122cf7349412b998
3
+ metadata.gz: 13beb7e2c37b837223f232fc52c9e566dfe33801
4
+ data.tar.gz: f19fd50a68c23b32c436993f24b130e5ae8b7123
5
5
  SHA512:
6
- metadata.gz: 22d2ed32885a2e3a48c160e8a4fbecc7d2ede996a9ba51d946d57f5422e91e7328e94bf2e8ae0883927b5179730e79f6952e435f40eb587c2bb541a9c6825df8
7
- data.tar.gz: 7a36f2b751515ce1734e6ede356758e983cfd94e98278d6d0eaecd66c694499fb0ad7393687537880ab8c73d1d66151c6278352f4d4663fda895000c0da54912
6
+ metadata.gz: c2f349be26ef856b2f6b2739acec9ae4dd90defbdad2721fc18ac8a21904a9b66161e654464e6a4a799bc5b6e2ef97ffafa57e9424c9805640f5a0541c8c71a3
7
+ data.tar.gz: e02dead8672b5bcdb107e1c61061d9619d70f1afa52c64dd9feee6cd86e74771cfc482c38b7cebc76d5daf9aa3350d19f900362a802f07e7a891a12392c3d471
@@ -17,8 +17,8 @@ module BuildMatrixParser
17
17
  content_env_matrix = []
18
18
 
19
19
  env_matrix.each do |var_hash|
20
- next if var_hash.empty? || var_hash["TEST_SUITE"].empty?
21
- line = var_hash.map { |key, value| %Q(#{key}="#{value}") }.join(' ')
20
+ next if nil_or_empty?(var_hash)
21
+ line = var_hash.map { |key, value| %(#{key}="#{value}") }.join(' ')
22
22
 
23
23
  content_env_matrix << line
24
24
  end
@@ -27,4 +27,8 @@ module BuildMatrixParser
27
27
  end
28
28
  module_function :format_matrix
29
29
 
30
- end
30
+ def self.nil_or_empty?(var_hash)
31
+ return true if var_hash.empty? || var_hash['TEST_SUITE'].nil?
32
+ var_hash['TEST_SUITE'].empty?
33
+ end
34
+ end
@@ -4,13 +4,15 @@ module SyncSpecFiles
4
4
  include BuildMatrixParser
5
5
 
6
6
  def rewrite_travis_content(content, current_file_list, &block)
7
+ num_buckets = content['num_builds']
8
+
7
9
  ignore_specs = get_ignored_specs(content)
8
10
  current_file_list = current_file_list.reject { |file_path| ignore_specs.include?(file_path) }
9
11
  env_matrix = BuildMatrixParser.parse_env_matrix(content)
10
12
  original = extract_spec_files(env_matrix)
11
13
  after_removed = delete_removed_files(original, current_file_list)
12
- after_added = add_new_files(original, after_removed, current_file_list)
13
-
14
+ after_added = add_new_files(original, after_removed, current_file_list, num_buckets)
15
+
14
16
  env_matrix.each do |var_hash|
15
17
  if var_hash.has_key?('TEST_SUITE')
16
18
  test_bucket = after_added.shift
@@ -70,9 +72,12 @@ module SyncSpecFiles
70
72
  end
71
73
  end
72
74
 
73
- def self.add_new_files(original, buckets, current_file_list)
75
+ def self.add_new_files(original, buckets, current_file_list, num_buckets)
74
76
  buckets_clone = buckets.map(&:dup)
75
- num_buckets = buckets.length
77
+ test_suite_worker_count = buckets_clone.length
78
+
79
+ # This check is to determine if the stated bucket count is > available workers
80
+ num_buckets = test_suite_worker_count < num_buckets ? test_suite_worker_count : num_buckets
76
81
 
77
82
  added_files(original, current_file_list).each do |spec_file|
78
83
  bucket_index = rand(num_buckets)
@@ -99,4 +104,4 @@ module SyncSpecFiles
99
104
 
100
105
  " Removed: #{removed}\n Added: #{added}\n\n"
101
106
  end
102
- end
107
+ end
@@ -1,3 +1,3 @@
1
1
  module SpecTiller
2
- VERSION = '1.2.0'
2
+ VERSION = '1.2.1'
3
3
  end
@@ -14,34 +14,71 @@ describe 'SyncSpecFiles' do
14
14
  end
15
15
  let(:travis_yaml) { YAML::load(File.open('spec/documents/.travis.yml')) }
16
16
 
17
- before(:each) do
18
- SyncSpecFiles.rewrite_travis_content(travis_yaml, current_file_list)
19
- end
20
-
21
- it 'adds new files to random line' do
22
- expect(travis_yaml['env']['matrix'].join(' ')).to include('spec/test/new1.rb','spec/test2/new2.rb','spec/test/new3.rb')
23
- end
17
+ describe 'Static Yaml' do
18
+ before(:each) do
19
+ SyncSpecFiles.rewrite_travis_content(travis_yaml, current_file_list)
20
+ end
24
21
 
25
- it 'removes unused specs' do
26
- travis_yaml['env']['matrix'].each do |bucket|
27
- expect(bucket).not_to include('spec/features/three_vars.rb')
22
+ it 'adds new files to random line' do
23
+ expect(travis_yaml['env']['matrix'].join(' ')).to include('spec/test/new1.rb','spec/test2/new2.rb','spec/test/new3.rb')
28
24
  end
29
25
 
30
- end
26
+ it 'removes unused specs' do
27
+ travis_yaml['env']['matrix'].each do |bucket|
28
+ expect(bucket).not_to include('spec/features/three_vars.rb')
29
+ end
31
30
 
32
- it 'removes lines without a TEST_SUITE' do
33
- travis_yaml['env']['matrix'].each do |bucket|
34
- expect(bucket).to include('TEST_SUITE="')
35
31
  end
36
- end
37
32
 
38
- it 'does not include ignored specs' do
39
- travis_yaml['env']['matrix'].each do |bucket|
40
- expect(bucket).not_to include('spec/features/ignore_me.rb')
33
+ it 'removes lines without a TEST_SUITE' do
34
+ travis_yaml['env']['matrix'].each do |bucket|
35
+ expect(bucket).to include('TEST_SUITE="')
36
+ end
41
37
  end
42
38
 
39
+ it 'does not include ignored specs' do
40
+ travis_yaml['env']['matrix'].each do |bucket|
41
+ expect(bucket).not_to include('spec/features/ignore_me.rb')
42
+ end
43
+ end
43
44
  end
44
45
 
46
+ describe 'Modified Yaml' do
47
+ describe 'Respects num_builds in syncing files' do
48
+ it 'when num_builds: 1, adds files to only the first two lines of the matrix' do
49
+ travis_yaml['num_builds'] = 1
50
+ SyncSpecFiles.rewrite_travis_content(travis_yaml, current_file_list) do |yaml|
51
+ matrix = yaml['env']['matrix']
52
+ first_bucket = matrix.first
53
+ rest_buckets = matrix[1..-1].join(' ')
54
+
55
+ expect(first_bucket).to include('spec/test/new1.rb','spec/test2/new2.rb','spec/test/new3.rb')
56
+ expect(rest_buckets).not_to include('spec/test/new1.rb','spec/test2/new2.rb','spec/test/new3.rb')
57
+ end
58
+ end
59
+
60
+ it 'when num_builds: 2, adds files to only the first 2 lines of the matrix' do
61
+ travis_yaml['num_builds'] = 2
62
+ SyncSpecFiles.rewrite_travis_content(travis_yaml, current_file_list) do |yaml|
63
+ matrix = yaml['env']['matrix']
64
+ first_two_buckets = matrix[0..1].join(' ')
65
+ rest_buckets = matrix[2..-1].join(' ')
66
+
67
+ expect(first_two_buckets).to include('spec/test/new1.rb','spec/test2/new2.rb','spec/test/new3.rb')
68
+ expect(rest_buckets).not_to include('spec/test/new1.rb','spec/test2/new2.rb','spec/test/new3.rb')
69
+ end
70
+ end
71
+
72
+ it 'when num_builds > current bucket count it uses current bucket count' do
73
+ travis_yaml['num_builds'] = 100
74
+ SyncSpecFiles.rewrite_travis_content(travis_yaml, current_file_list) do |yaml|
75
+ matrix = yaml['env']['matrix']
76
+ buckets = matrix.join(' ')
77
+ expect(buckets).to include('spec/test/new1.rb','spec/test2/new2.rb','spec/test/new3.rb')
78
+ end
79
+ end
80
+ end
81
+ end
45
82
  end
46
83
 
47
- end
84
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spec_tiller
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Schmaus
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-02 00:00:00.000000000 Z
12
+ date: 2015-10-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler