spec_tiller 1.2.0 → 1.2.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: 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