paraduct 1.0.0.beta6 → 1.0.0

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.
@@ -9,7 +9,7 @@ module Paraduct
9
9
  delegate :push, :count, to: :jobs, prefix: true
10
10
 
11
11
  def successful?
12
- @jobs.all?{ |result| result[:successful] }
12
+ @jobs.all? { |result| result[:successful] }
13
13
  end
14
14
 
15
15
  def failure?
@@ -18,14 +18,14 @@ module Paraduct
18
18
 
19
19
  def detail_message
20
20
  all_count = @jobs.count
21
- successful_count = @jobs.select{ |result| result[:successful] }.count
21
+ successful_count = @jobs.count { |result| result[:successful] }
22
22
  failure_count = all_count - successful_count
23
23
 
24
24
  message = "======================================================\n"
25
25
 
26
26
  if successful_count > 0
27
27
  message << "Passed:\n\n"
28
- @jobs.select{ |result| result[:successful] }.each_with_index do |result, i|
28
+ @jobs.select { |result| result[:successful] }.each_with_index do |result, i|
29
29
  message << " #{i + 1}) #{result[:formatted_params]}\n"
30
30
  end
31
31
  message << "\n"
@@ -33,7 +33,7 @@ module Paraduct
33
33
 
34
34
  if failure_count > 0
35
35
  message << "Failures:\n\n"
36
- @jobs.select{ |result| !result[:successful] }.each_with_index do |result, i|
36
+ @jobs.select { |result| !result[:successful] }.each_with_index do |result, i|
37
37
  message << " #{i + 1}) #{result[:formatted_params]}\n"
38
38
  end
39
39
  message << "\n"
@@ -25,9 +25,8 @@ module Paraduct
25
25
  end
26
26
 
27
27
  def self.reject(product_variables, exclude_variables)
28
- product_variables.inject([]) do |rejected_product_variables, variables|
29
- rejected_product_variables << variables unless exclude_variables.any?{ |exclude| partial_match?(variables, exclude) }
30
- rejected_product_variables
28
+ product_variables.each_with_object([]) do |variables, rejected_product_variables|
29
+ rejected_product_variables << variables unless exclude_variables.any? { |exclude| partial_match?(variables, exclude) }
31
30
  end
32
31
  end
33
32
 
@@ -1,3 +1,3 @@
1
1
  module Paraduct
2
- VERSION = "1.0.0.beta6"
2
+ VERSION = "1.0.0".freeze
3
3
  end
@@ -1,15 +1,15 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'paraduct/version'
4
+ require "paraduct/version"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "paraduct"
8
8
  spec.version = Paraduct::VERSION
9
9
  spec.authors = ["sue445"]
10
10
  spec.email = ["sue445@sue445.net"]
11
- spec.summary = %q{matrix test runner}
12
- spec.description = %q{Paraduct(parallel + parameterize + product) is matrix test runner}
11
+ spec.summary = "matrix test runner"
12
+ spec.description = "Paraduct(parallel + parameterize + product) is matrix test runner"
13
13
  spec.homepage = "https://github.com/sue445/paraduct"
14
14
  spec.license = "MIT"
15
15
 
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency "bundler", ">= 1.5"
29
29
  spec.add_development_dependency "codeclimate-test-reporter"
30
30
  spec.add_development_dependency "coveralls"
31
+ spec.add_development_dependency "rubocop", "0.37.0"
31
32
  spec.add_development_dependency "pry-byebug"
32
33
  spec.add_development_dependency "rake", "~> 10.0"
33
34
  spec.add_development_dependency "redcarpet"
@@ -1,20 +1,20 @@
1
1
  describe Paraduct::CLI do
2
2
  subject { Paraduct::CLI.start(args) }
3
3
 
4
- let(:args){ [command] }
4
+ let(:args) { [command] }
5
5
 
6
6
  describe "#version" do
7
7
  %w(version --version).each do |_command|
8
8
  context "with #{_command}" do
9
- let(:command){ _command }
9
+ let(:command) { _command }
10
10
 
11
- it { expect{ subject }.to output("#{Paraduct::VERSION}\n").to_stdout }
11
+ it { expect { subject }.to output("#{Paraduct::VERSION}\n").to_stdout }
12
12
  end
13
13
  end
14
14
  end
15
15
 
16
16
  describe "#test" do
17
- let(:command){ "test" }
17
+ let(:command) { "test" }
18
18
 
19
19
  include_context :stub_configuration
20
20
  include_context :within_temp_dir
@@ -33,8 +33,8 @@ describe Paraduct::CLI do
33
33
  }
34
34
  end
35
35
 
36
- let(:script){ "./script/build_success.sh" }
37
- let(:after_script){ "./script/build_finish.sh" }
36
+ let(:script) { "./script/build_success.sh" }
37
+ let(:after_script) { "./script/build_finish.sh" }
38
38
  let(:product_variables) do
39
39
  [
40
40
  { "RUBY" => "1.9.3", "DATABASE" => "mysql" },
@@ -52,7 +52,7 @@ describe Paraduct::CLI do
52
52
 
53
53
  it "should call perform_all" do
54
54
  expect(Paraduct::ParallelRunner).to receive(:perform_all).
55
- with(script: script, after_script: after_script, product_variables: product_variables){ test_response }
55
+ with(script: script, after_script: after_script, product_variables: product_variables) { test_response }
56
56
  subject
57
57
  end
58
58
  end
@@ -60,7 +60,7 @@ describe Paraduct::CLI do
60
60
  context "failure test" do
61
61
  let(:config_data) do
62
62
  {
63
- script: %q(exit ${STATUS}),
63
+ script: "exit ${STATUS}",
64
64
  work_dir: "tmp/paraduct_workspace",
65
65
  variables: {
66
66
  "STATUS" => [0, 1],
@@ -73,7 +73,7 @@ describe Paraduct::CLI do
73
73
  end
74
74
 
75
75
  context "with --dry-run" do
76
- let(:args){ [command, "--dry-run"] }
76
+ let(:args) { [command, "--dry-run"] }
77
77
 
78
78
  it "should not call perform_all" do
79
79
  expect(Paraduct::ParallelRunner).not_to receive(:perform_all)
@@ -83,7 +83,7 @@ describe Paraduct::CLI do
83
83
  end
84
84
 
85
85
  describe "#generate" do
86
- let(:command){ "generate" }
86
+ let(:command) { "generate" }
87
87
 
88
88
  include_context :within_temp_dir
89
89
 
@@ -94,7 +94,7 @@ describe Paraduct::CLI do
94
94
 
95
95
  %w(.paraduct.yml .paraduct_rsync_exclude.txt).each do |template_file|
96
96
  describe "whether copy #{template_file}" do
97
- let(:generated_config_file){ temp_dir_path.join(template_file) }
97
+ let(:generated_config_file) { temp_dir_path.join(template_file) }
98
98
 
99
99
  it { expect(generated_config_file).to be_exist }
100
100
  end
@@ -1,19 +1,19 @@
1
1
  describe Paraduct::Configuration do
2
- let(:config){ Paraduct.configuration }
2
+ let(:config) { Paraduct.configuration }
3
3
 
4
4
  before do
5
5
  # use spec/.paraduct.yml
6
- allow_any_instance_of(Paraduct::Configuration).to receive(:root_dir){ spec_dir }
6
+ allow_any_instance_of(Paraduct::Configuration).to receive(:root_dir) { spec_dir }
7
7
  end
8
8
 
9
9
  describe "#variables" do
10
- subject{ config.variables }
10
+ subject { config.variables }
11
11
 
12
12
  it "should get variables in .paraduct.yml" do
13
13
  is_expected.to match(
14
14
  "RUBY" => ["1.9.3", "2.0.0", "2.1.2"],
15
15
  "DATABASE" => ["mysql", "postgresql"],
16
- "RAILS" => ["3.2.0", "4.0.0", "4.1.0"],
16
+ "RAILS" => ["3.2.0", "4.0.0", "4.1.0"]
17
17
  )
18
18
  end
19
19
  end
@@ -1,6 +1,6 @@
1
1
  describe Paraduct::ParallelRunner do
2
2
  describe "#perform_all" do
3
- subject{ Paraduct::ParallelRunner.perform_all(script: script, product_variables: product_variables, after_script: after_script) }
3
+ subject { Paraduct::ParallelRunner.perform_all(script: script, product_variables: product_variables, after_script: after_script) }
4
4
 
5
5
  include_context :within_temp_work_dir
6
6
 
@@ -9,23 +9,23 @@ describe Paraduct::ParallelRunner do
9
9
  # end
10
10
 
11
11
  shared_examples :create_job_directories do
12
- let(:job_dir) { temp_dir_path.join("tmp/paraduct_workspace/#{job_name}") }
13
- let(:copied_file){ job_dir.join("script/build_success.sh") }
12
+ let(:job_dir) { temp_dir_path.join("tmp/paraduct_workspace/#{job_name}") }
13
+ let(:copied_file) { job_dir.join("script/build_success.sh") }
14
14
 
15
15
  it { expect(job_dir).to be_exist }
16
16
  it { expect(copied_file).to be_exist }
17
17
  end
18
18
 
19
19
  shared_examples :dont_create_job_directories do
20
- let(:job_dir) { temp_dir_path.join("tmp/paraduct_workspace/#{job_name}") }
21
- let(:copied_file){ job_dir.join("script/build_success.sh") }
20
+ let(:job_dir) { temp_dir_path.join("tmp/paraduct_workspace/#{job_name}") }
21
+ let(:copied_file) { job_dir.join("script/build_success.sh") }
22
22
 
23
23
  it { expect(job_dir).not_to be_exist }
24
24
  it { expect(copied_file).not_to be_exist }
25
25
  end
26
26
 
27
27
  describe "with script file test" do
28
- let(:script){ "./script/build_success.sh" }
28
+ let(:script) { "./script/build_success.sh" }
29
29
  let(:after_script) { "./script/build_finish.sh" }
30
30
  let(:product_variables) do
31
31
  [
@@ -36,22 +36,22 @@ describe Paraduct::ParallelRunner do
36
36
 
37
37
  its(:jobs) do
38
38
  should include(
39
- job_name: "RUBY_1.9_DATABASE_mysql",
40
- params: { "RUBY" => "1.9", "DATABASE" => "mysql" },
41
- formatted_params: "RUBY=1.9, DATABASE=mysql",
42
- successful: true,
43
- stdout: "RUBY=1.9\nDATABASE=mysql\nFinish: RUBY=1.9, DATABASE=mysql\n"
44
- )
39
+ job_name: "RUBY_1.9_DATABASE_mysql",
40
+ params: { "RUBY" => "1.9", "DATABASE" => "mysql" },
41
+ formatted_params: "RUBY=1.9, DATABASE=mysql",
42
+ successful: true,
43
+ stdout: "RUBY=1.9\nDATABASE=mysql\nFinish: RUBY=1.9, DATABASE=mysql\n"
44
+ )
45
45
  end
46
46
 
47
47
  its(:jobs) do
48
48
  should include(
49
- job_name: "RUBY_2.0_DATABASE_postgresql",
50
- params: { "RUBY" => "2.0", "DATABASE" => "postgresql" },
51
- formatted_params: "RUBY=2.0, DATABASE=postgresql",
52
- successful: true,
53
- stdout: "RUBY=2.0\nDATABASE=postgresql\nFinish: RUBY=2.0, DATABASE=postgresql\n"
54
- )
49
+ job_name: "RUBY_2.0_DATABASE_postgresql",
50
+ params: { "RUBY" => "2.0", "DATABASE" => "postgresql" },
51
+ formatted_params: "RUBY=2.0, DATABASE=postgresql",
52
+ successful: true,
53
+ stdout: "RUBY=2.0\nDATABASE=postgresql\nFinish: RUBY=2.0, DATABASE=postgresql\n"
54
+ )
55
55
  end
56
56
 
57
57
  context "When work_dir is not empty" do
@@ -66,11 +66,11 @@ describe Paraduct::ParallelRunner do
66
66
  end
67
67
 
68
68
  it_behaves_like :create_job_directories do
69
- let(:job_name){ "RUBY_1.9_DATABASE_mysql" }
69
+ let(:job_name) { "RUBY_1.9_DATABASE_mysql" }
70
70
  end
71
71
 
72
72
  it_behaves_like :create_job_directories do
73
- let(:job_name){ "RUBY_2.0_DATABASE_postgresql" }
73
+ let(:job_name) { "RUBY_2.0_DATABASE_postgresql" }
74
74
  end
75
75
  end
76
76
  end
@@ -87,19 +87,19 @@ describe Paraduct::ParallelRunner do
87
87
  end
88
88
 
89
89
  it_behaves_like :dont_create_job_directories do
90
- let(:job_name){ "RUBY_1.9_DATABASE_mysql" }
90
+ let(:job_name) { "RUBY_1.9_DATABASE_mysql" }
91
91
  end
92
92
 
93
93
  it_behaves_like :dont_create_job_directories do
94
- let(:job_name){ "RUBY_2.0_DATABASE_postgresql" }
94
+ let(:job_name) { "RUBY_2.0_DATABASE_postgresql" }
95
95
  end
96
96
  end
97
97
  end
98
98
  end
99
99
 
100
100
  describe "without script file test" do
101
- let(:script){ %q(echo "RUBY=${RUBY} DATABASE=${DATABASE}") }
102
- let(:after_script) { %q(echo "Finish: RUBY=${RUBY}, DATABASE=${DATABASE}") }
101
+ let(:script) { 'echo "RUBY=${RUBY} DATABASE=${DATABASE}"' }
102
+ let(:after_script) { 'echo "Finish: RUBY=${RUBY}, DATABASE=${DATABASE}"' }
103
103
  let(:product_variables) do
104
104
  [
105
105
  { "RUBY" => "1.9", "DATABASE" => "mysql" },
@@ -109,22 +109,22 @@ describe Paraduct::ParallelRunner do
109
109
 
110
110
  its(:jobs) do
111
111
  should include(
112
- job_name: "RUBY_1.9_DATABASE_mysql",
113
- params: { "RUBY" => "1.9", "DATABASE" => "mysql" },
114
- formatted_params: "RUBY=1.9, DATABASE=mysql",
115
- successful: true,
116
- stdout: "RUBY=1.9 DATABASE=mysql\nFinish: RUBY=1.9, DATABASE=mysql\n"
117
- )
112
+ job_name: "RUBY_1.9_DATABASE_mysql",
113
+ params: { "RUBY" => "1.9", "DATABASE" => "mysql" },
114
+ formatted_params: "RUBY=1.9, DATABASE=mysql",
115
+ successful: true,
116
+ stdout: "RUBY=1.9 DATABASE=mysql\nFinish: RUBY=1.9, DATABASE=mysql\n"
117
+ )
118
118
  end
119
119
 
120
120
  its(:jobs) do
121
121
  should include(
122
- job_name: "RUBY_2.0_DATABASE_postgresql",
123
- params: { "RUBY" => "2.0", "DATABASE" => "postgresql" },
124
- formatted_params: "RUBY=2.0, DATABASE=postgresql",
125
- successful: true,
126
- stdout: "RUBY=2.0 DATABASE=postgresql\nFinish: RUBY=2.0, DATABASE=postgresql\n"
127
- )
122
+ job_name: "RUBY_2.0_DATABASE_postgresql",
123
+ params: { "RUBY" => "2.0", "DATABASE" => "postgresql" },
124
+ formatted_params: "RUBY=2.0, DATABASE=postgresql",
125
+ successful: true,
126
+ stdout: "RUBY=2.0 DATABASE=postgresql\nFinish: RUBY=2.0, DATABASE=postgresql\n"
127
+ )
128
128
  end
129
129
 
130
130
  context "When work_dir is not empty" do
@@ -139,11 +139,11 @@ describe Paraduct::ParallelRunner do
139
139
  end
140
140
 
141
141
  it_behaves_like :create_job_directories do
142
- let(:job_name){ "RUBY_1.9_DATABASE_mysql" }
142
+ let(:job_name) { "RUBY_1.9_DATABASE_mysql" }
143
143
  end
144
144
 
145
145
  it_behaves_like :create_job_directories do
146
- let(:job_name){ "RUBY_2.0_DATABASE_postgresql" }
146
+ let(:job_name) { "RUBY_2.0_DATABASE_postgresql" }
147
147
  end
148
148
  end
149
149
  end
@@ -160,11 +160,11 @@ describe Paraduct::ParallelRunner do
160
160
  end
161
161
 
162
162
  it_behaves_like :dont_create_job_directories do
163
- let(:job_name){ "RUBY_1.9_DATABASE_mysql" }
163
+ let(:job_name) { "RUBY_1.9_DATABASE_mysql" }
164
164
  end
165
165
 
166
166
  it_behaves_like :dont_create_job_directories do
167
- let(:job_name){ "RUBY_2.0_DATABASE_postgresql" }
167
+ let(:job_name) { "RUBY_2.0_DATABASE_postgresql" }
168
168
  end
169
169
  end
170
170
  end
@@ -3,22 +3,25 @@ describe Paraduct::Runner do
3
3
  Paraduct::Runner.new(
4
4
  params: params,
5
5
  base_job_dir: base_job_dir,
6
- job_id: job_id,
6
+ job_id: job_id
7
7
  )
8
8
  end
9
9
 
10
10
  include_context "uses temp dir"
11
11
 
12
- let(:base_job_dir){ temp_dir }
12
+ let(:base_job_dir) { temp_dir }
13
13
  let(:params) { {} }
14
14
  let(:job_id) { 1 }
15
15
 
16
16
  describe "#perform" do
17
- subject{ runner.perform(script) }
17
+ subject { runner.perform(script) }
18
18
 
19
19
  let(:script) { "./script/build_success.sh" }
20
20
  let(:params) { { "RUBY" => "1.9", "DATABASE" => "mysql" } }
21
- let(:command){ 'export PARADUCT_JOB_ID="1"; export PARADUCT_JOB_NAME="RUBY_1.9_DATABASE_mysql"; export RUBY="1.9"; export DATABASE="mysql"; ./script/build_success.sh' }
21
+
22
+ # rubocop:disable Metrics/LineLength
23
+ let(:command) { 'export PARADUCT_JOB_ID="1"; export PARADUCT_JOB_NAME="RUBY_1.9_DATABASE_mysql"; export RUBY="1.9"; export DATABASE="mysql"; ./script/build_success.sh' }
24
+ # rubocop:enable Metrics/LineLength
22
25
 
23
26
  context "with mock system" do
24
27
  it "script is call with capitalized variable" do
@@ -31,12 +34,12 @@ describe Paraduct::Runner do
31
34
  include_context :within_spec_dir
32
35
 
33
36
  context "when success" do
34
- it { should match /RUBY=1.9/ }
35
- it { should match /DATABASE=mysql/ }
37
+ it { should match(/RUBY=1.9/) }
38
+ it { should match(/DATABASE=mysql/) }
36
39
  end
37
40
 
38
41
  context "when error in script file" do
39
- let(:script){ "./script/build_error.sh" }
42
+ let(:script) { "./script/build_error.sh" }
40
43
 
41
44
  let(:stdout) do
42
45
  <<-EOS
@@ -45,25 +48,25 @@ DATABASE=mysql
45
48
  EOS
46
49
  end
47
50
 
48
- it { expect{ subject }.to raise_error(Paraduct::Errors::ProcessError, stdout) }
51
+ it { expect { subject }.to raise_error(Paraduct::Errors::ProcessError, stdout) }
49
52
  end
50
53
  end
51
54
 
52
55
  context "with single command" do
53
- let(:script){ 'echo RUBY=${RUBY}' }
56
+ let(:script) { "echo RUBY=${RUBY}" }
54
57
 
55
58
  it { should eq "RUBY=1.9\n" }
56
59
  end
57
60
 
58
61
  context "with multiple commands" do
59
- let(:script){ ['echo RUBY=${RUBY}', 'echo DATABASE=${DATABASE}'] }
62
+ let(:script) { ["echo RUBY=${RUBY}", "echo DATABASE=${DATABASE}"] }
60
63
 
61
64
  it { should eq "RUBY=1.9\nDATABASE=mysql\n" }
62
65
  end
63
66
  end
64
67
 
65
68
  describe "#job_dir" do
66
- subject{ runner.job_dir }
69
+ subject { runner.job_dir }
67
70
 
68
71
  let(:params) { { "RUBY" => "1.9", "DATABASE" => "mysql" } }
69
72
 
@@ -71,15 +74,15 @@ DATABASE=mysql
71
74
  end
72
75
 
73
76
  describe "#formatted_params" do
74
- subject{ runner.formatted_params }
77
+ subject { runner.formatted_params }
75
78
 
76
- let(:params){ { "RUBY" => "1.9", "DATABASE" => "mysql" } }
79
+ let(:params) { { "RUBY" => "1.9", "DATABASE" => "mysql" } }
77
80
 
78
- it{ should eq "RUBY=1.9, DATABASE=mysql" }
81
+ it { should eq "RUBY=1.9, DATABASE=mysql" }
79
82
  end
80
83
 
81
84
  describe "#job_name" do
82
- subject{ runner.job_name }
85
+ subject { runner.job_name }
83
86
 
84
87
  context "basic case" do
85
88
  let(:params) { { "RUBY" => "1.9", "DATABASE" => "mysql" } }
@@ -1,6 +1,6 @@
1
1
  describe Paraduct::SyncUtils do
2
2
  describe "#copy_recursive" do
3
- subject{ Paraduct::SyncUtils.copy_recursive(source_dir, destination_dir) }
3
+ subject { Paraduct::SyncUtils.copy_recursive(source_dir, destination_dir) }
4
4
 
5
5
  include_context :within_temp_dir
6
6
  include_context :stub_configuration
@@ -13,10 +13,10 @@ describe Paraduct::SyncUtils do
13
13
  }
14
14
  end
15
15
 
16
- let(:source_dir) { temp_dir_path }
17
- let(:destination_dir){ temp_dir_path.join("tmp/paraduct_workspace/RUBY_1.9_DATABASE_mysql") }
18
- let(:copied_file) { destination_dir.join("build_success.sh") }
19
- let(:not_copied_file){ destination_dir.join("tmp/paraduct_workspace/dummy.txt") }
16
+ let(:source_dir) { temp_dir_path }
17
+ let(:destination_dir) { temp_dir_path.join("tmp/paraduct_workspace/RUBY_1.9_DATABASE_mysql") }
18
+ let(:copied_file) { destination_dir.join("build_success.sh") }
19
+ let(:not_copied_file) { destination_dir.join("tmp/paraduct_workspace/dummy.txt") }
20
20
 
21
21
  before do
22
22
  # setup