From 96c7d757e39805607131137cc8bcb8c6b5d6fdea Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Tue, 31 Jan 2023 16:03:41 +1100 Subject: [PATCH 1/5] Avoid stubbing File.read This resolves the flaky behaviour in CI. --- spec/stack_master/aws_driver/s3_spec.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spec/stack_master/aws_driver/s3_spec.rb b/spec/stack_master/aws_driver/s3_spec.rb index 2c4b5ab5..2d8c6528 100644 --- a/spec/stack_master/aws_driver/s3_spec.rb +++ b/spec/stack_master/aws_driver/s3_spec.rb @@ -9,10 +9,6 @@ end describe '#upload_files' do - before do - allow(File).to receive(:read).and_return('file content') - end - context 'when set_region is called' do it 'defaults to that region' do s3_driver.set_region('default') From 67bccd4d4cdea9ac786ab8ff9d928786b7020515 Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Tue, 31 Jan 2023 16:03:44 +1100 Subject: [PATCH 2/5] CI: run the test suite against Ruby 3.2 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6c693794..0d7c3470 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: os: [ ubuntu-20.04 ] - ruby: [ '2.4', '2.5', '2.6', '2.7', '3.0', '3.1' ] + ruby: [ '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2' ] include: - os: macos-latest ruby: '2.7' From 360aaee878c68e465c9cc1051023dbec17aa281b Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Tue, 31 Jan 2023 16:03:46 +1100 Subject: [PATCH 3/5] Resolve File.exists? deprecation --- lib/stack_master/commands/init.rb | 2 +- lib/stack_master/config.rb | 2 +- lib/stack_master/parameter_loader.rb | 2 +- spec/stack_master/parameter_loader_spec.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/stack_master/commands/init.rb b/lib/stack_master/commands/init.rb index c29b99d2..bc033a99 100644 --- a/lib/stack_master/commands/init.rb +++ b/lib/stack_master/commands/init.rb @@ -29,7 +29,7 @@ def check_files if !@options.overwrite [@stack_master_filename, @stack_json_filename, @parameters_filename, @region_parameters_filename].each do |filename| - if File.exists?(filename) + if File.exist?(filename) StackMaster.stderr.puts("Aborting: #{filename} already exists. Use --overwrite to force overwriting file.") return false end diff --git a/lib/stack_master/config.rb b/lib/stack_master/config.rb index 30370258..c29c2338 100644 --- a/lib/stack_master/config.rb +++ b/lib/stack_master/config.rb @@ -28,7 +28,7 @@ def self.search_up_and_chdir(config_file) dir = Dir.pwd parent_dir = File.expand_path("..", Dir.pwd) - while parent_dir != dir && !File.exists?(File.join(dir, config_file)) + while parent_dir != dir && !File.exist?(File.join(dir, config_file)) dir = parent_dir parent_dir = File.expand_path("..", dir) end diff --git a/lib/stack_master/parameter_loader.rb b/lib/stack_master/parameter_loader.rb index 64dacfce..dbeadabb 100644 --- a/lib/stack_master/parameter_loader.rb +++ b/lib/stack_master/parameter_loader.rb @@ -21,7 +21,7 @@ def self.load(parameter_files: [], parameters: {}) private def self.load_parameters(file_name) - file_exists = File.exists?(file_name) + file_exists = File.exist?(file_name) StackMaster.debug file_exists ? " #{file_name} found" : " #{file_name} not found" file_exists ? load_file(file_name) : {} end diff --git a/spec/stack_master/parameter_loader_spec.rb b/spec/stack_master/parameter_loader_spec.rb index 65739e9e..4e2db105 100644 --- a/spec/stack_master/parameter_loader_spec.rb +++ b/spec/stack_master/parameter_loader_spec.rb @@ -103,7 +103,7 @@ end def file_mock(file_name, exists: false, read: nil) - allow(File).to receive(:exists?).with(file_name).and_return(exists) + allow(File).to receive(:exist?).with(file_name).and_return(exists) allow(File).to receive(:read).with(file_name).and_return(read) if read end From c399f4572907668c7a796e2d1f299e283bf034c1 Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Tue, 31 Jan 2023 16:03:48 +1100 Subject: [PATCH 4/5] RSpec: be flexible with error message Different versions of Ruby provide different error messages. --- spec/stack_master/parameter_resolvers/one_password_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/stack_master/parameter_resolvers/one_password_spec.rb b/spec/stack_master/parameter_resolvers/one_password_spec.rb index 5d8ce987..e358528b 100644 --- a/spec/stack_master/parameter_resolvers/one_password_spec.rb +++ b/spec/stack_master/parameter_resolvers/one_password_spec.rb @@ -158,7 +158,7 @@ it 'we return an error' do allow_any_instance_of(described_class).to receive(:`).with("op --version").and_return(true) allow_any_instance_of(described_class).to receive(:`).with("op get item --vault='Shared' 'password title' 2>&1").and_return('{key: value }') - expect { resolver.resolve(the_password) }.to raise_error(StackMaster::ParameterResolvers::OnePassword::OnePasswordInvalidResponse, /Failed to parse JSON returned, {key: value }: \d+: unexpected token at '{key: value }'/) + expect { resolver.resolve(the_password) }.to raise_error(StackMaster::ParameterResolvers::OnePassword::OnePasswordInvalidResponse, /Failed to parse JSON returned, {key: value }:.* unexpected token at '{key: value }'/) end end end From fdc23a119eb2bda57db8aa6529f40cef90ab5255 Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Tue, 31 Jan 2023 16:03:49 +1100 Subject: [PATCH 5/5] RSpec: correctly stub default region This avoids failing specs in development environments where the default region is not us-east-1. --- spec/stack_master/parameter_resolvers/stack_output_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/stack_master/parameter_resolvers/stack_output_spec.rb b/spec/stack_master/parameter_resolvers/stack_output_spec.rb index 74ec2e0c..d729d299 100644 --- a/spec/stack_master/parameter_resolvers/stack_output_spec.rb +++ b/spec/stack_master/parameter_resolvers/stack_output_spec.rb @@ -37,6 +37,7 @@ def resolve(value) let(:outputs) { [] } before do + allow(StackMaster.cloud_formation_driver).to receive(:region).and_return(region) allow(Aws::CloudFormation::Client).to receive(:new).and_return(cf) cf.stub_responses(:describe_stacks, { stacks: stacks }) end