beaker-rspec 7.1.0 → 8.0.0

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
  SHA256:
3
- metadata.gz: 33c490e0e39f5a1263d21542547d9c9d0e80defea9b501c52592452944ba3482
4
- data.tar.gz: 791e80f9306912dc43317015c1a3298bf604fe26df17c2cb815f6fe9264f5df0
3
+ metadata.gz: f9a5990ade11a161760e1eb40ad4486a1c8d97cb3c063d954bc29d010d7d8e3a
4
+ data.tar.gz: bdf8a2f24a26fca7a345b0e77a602fa8c9eccacefffb13a7e125221688996659
5
5
  SHA512:
6
- metadata.gz: b810b5bcf3313d1c4f554a98e4b09f6ac3c9312dba23766a064c4154159e469d761997e78b66a1bc1f2754a37a87d15a335d6c7067095d0b4f46d49a3f0f6722
7
- data.tar.gz: ceec62d51cf7e9ca136a0836f2981e5e4ac43d116ffa04d10e31d56b849f75a3f5396b537c7e362a425a855a31176b91aee12cf0c3f513f9fd62a07ca0c65387
6
+ metadata.gz: 01f162c8d641d603d49eb5bb7263da970e07686ae44eda947609c328cf2840c68168e3e1ebc6d788c65fba7c70d84ab21ec2cd61da7fd8a1a0752fb475ad0f11
7
+ data.tar.gz: 6cd69c2865258e9c44948324fb1cb4aed09cc49b425f36bb4665cd7e2ebbececeaad7937478ce1473ee349fe64f337f1e64d45d2baacc8d7fffa30c9d4f3ed2e
@@ -1,8 +1,17 @@
1
1
  version: 2
2
2
  updates:
3
+ # raise PRs for gem updates
3
4
  - package-ecosystem: bundler
4
5
  directory: "/"
5
6
  schedule:
6
7
  interval: daily
7
8
  time: "13:00"
8
9
  open-pull-requests-limit: 10
10
+
11
+ # Maintain dependencies for GitHub Actions
12
+ - package-ecosystem: github-actions
13
+ directory: "/"
14
+ schedule:
15
+ interval: daily
16
+ time: "13:00"
17
+ open-pull-requests-limit: 10
@@ -10,11 +10,11 @@ jobs:
10
10
  runs-on: ubuntu-latest
11
11
  if: github.repository_owner == 'voxpupuli'
12
12
  steps:
13
- - uses: actions/checkout@v2
14
- - name: Install Ruby 3.0
13
+ - uses: actions/checkout@v3
14
+ - name: Install Ruby 3.2
15
15
  uses: ruby/setup-ruby@v1
16
16
  with:
17
- ruby-version: '3.0'
17
+ ruby-version: '3.2'
18
18
  bundler: 'none'
19
19
  - name: Build gem
20
20
  run: gem build *.gemspec
@@ -1,34 +1,55 @@
1
1
  name: Test
2
2
 
3
3
  on:
4
- - pull_request
4
+ pull_request: {}
5
+ push:
6
+ branches:
7
+ - master
5
8
 
6
9
  env:
10
+ BUNDLE_WITHOUT: release
7
11
  BEAKER_HYPERVISOR: docker
8
12
 
9
13
  jobs:
14
+ rubocop:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v3
18
+ - name: Install Ruby ${{ matrix.ruby }}
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: "3.2"
22
+ bundler-cache: true
23
+ - name: Run Rubocop
24
+ run: bundle exec rake rubocop
10
25
  build:
11
26
  runs-on: ubuntu-latest
12
27
  strategy:
13
28
  fail-fast: false
14
29
  matrix:
15
30
  ruby:
16
- - "2.4"
17
- - "2.5"
18
- - "2.6"
19
31
  - "2.7"
20
32
  - "3.0"
21
- env:
22
- BUNDLE_WITHOUT: release
33
+ - "3.1"
34
+ - "3.2"
23
35
  name: Ruby ${{ matrix.ruby }}
24
36
  steps:
25
- - uses: actions/checkout@v2
37
+ - uses: actions/checkout@v3
26
38
  - name: Install Ruby ${{ matrix.ruby }}
27
39
  uses: ruby/setup-ruby@v1
28
40
  with:
29
41
  ruby-version: ${{ matrix.ruby }}
30
42
  bundler-cache: true
31
43
  - name: Verify gem builds
32
- run: bundle exec gem build beaker-rspec.gemspec
44
+ run: gem build beaker-rspec.gemspec
33
45
  - name: Run acceptance tests
34
46
  run: bundle exec rake beaker
47
+
48
+ tests:
49
+ needs:
50
+ - rubocop
51
+ - build
52
+ runs-on: ubuntu-latest
53
+ name: Test suite
54
+ steps:
55
+ - run: echo Test suite completed
data/.rubocop.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ inherit_from: .rubocop_todo.yml
3
+ inherit_gem:
4
+ beaker: rubocop.yml
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,137 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2023-03-27 16:58:25 UTC using RuboCop version 1.48.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 3
10
+ Lint/UselessAssignment:
11
+ Exclude:
12
+ - 'lib/beaker-rspec/helpers/serverspec.rb'
13
+
14
+ # Offense count: 1
15
+ Naming/AccessorMethodName:
16
+ Exclude:
17
+ - 'lib/beaker-rspec/helpers/serverspec.rb'
18
+
19
+ # Offense count: 1
20
+ # Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, CheckDefinitionPathHierarchyRoots, Regex, IgnoreExecutableScripts, AllowedAcronyms.
21
+ # CheckDefinitionPathHierarchyRoots: lib, spec, test, src
22
+ # AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
23
+ Naming/FileName:
24
+ Exclude:
25
+ - 'lib/beaker-rspec.rb'
26
+
27
+ # Offense count: 1
28
+ # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
29
+ # AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
30
+ Naming/MethodParameterName:
31
+ Exclude:
32
+ - 'lib/beaker-rspec/beaker_shim.rb'
33
+
34
+ # Offense count: 1
35
+ # This cop supports safe autocorrection (--autocorrect).
36
+ # Configuration parameters: EnforcedStyle.
37
+ # SupportedStyles: be_a, be_kind_of
38
+ RSpec/ClassCheck:
39
+ Exclude:
40
+ - 'spec/acceptance/example_spec.rb'
41
+
42
+ # Offense count: 3
43
+ # Configuration parameters: Prefixes, AllowedPatterns.
44
+ # Prefixes: when, with, without
45
+ RSpec/ContextWording:
46
+ Exclude:
47
+ - 'spec/acceptance/example_spec.rb'
48
+
49
+ # Offense count: 1
50
+ # Configuration parameters: IgnoredMetadata.
51
+ RSpec/DescribeClass:
52
+ Exclude:
53
+ - '**/spec/features/**/*'
54
+ - '**/spec/requests/**/*'
55
+ - '**/spec/routing/**/*'
56
+ - '**/spec/system/**/*'
57
+ - '**/spec/views/**/*'
58
+ - 'spec/acceptance/example_spec.rb'
59
+
60
+ # Offense count: 5
61
+ # Configuration parameters: AllowedPatterns.
62
+ # AllowedPatterns: ^expect_, ^assert_
63
+ RSpec/NoExpectationExample:
64
+ Exclude:
65
+ - 'spec/acceptance/example_spec.rb'
66
+
67
+ # Offense count: 1
68
+ # This cop supports unsafe autocorrection (--autocorrect-all).
69
+ # Configuration parameters: EnforcedStyle.
70
+ # SupportedStyles: always, conditionals
71
+ Style/AndOr:
72
+ Exclude:
73
+ - 'lib/beaker-rspec/helpers/serverspec.rb'
74
+
75
+ # Offense count: 7
76
+ # This cop supports unsafe autocorrection (--autocorrect-all).
77
+ # Configuration parameters: EnforcedStyle.
78
+ # SupportedStyles: nested, compact
79
+ Style/ClassAndModuleChildren:
80
+ Exclude:
81
+ - 'lib/beaker-rspec/helpers/serverspec.rb'
82
+
83
+ # Offense count: 1
84
+ Style/ClassVars:
85
+ Exclude:
86
+ - 'lib/beaker-rspec/helpers/serverspec.rb'
87
+
88
+ # Offense count: 10
89
+ # Configuration parameters: AllowedConstants.
90
+ Style/Documentation:
91
+ Exclude:
92
+ - 'spec/**/*'
93
+ - 'test/**/*'
94
+ - 'lib/beaker-rspec.rb'
95
+ - 'lib/beaker-rspec/helpers/serverspec.rb'
96
+
97
+ # Offense count: 10
98
+ # This cop supports unsafe autocorrection (--autocorrect-all).
99
+ # Configuration parameters: EnforcedStyle.
100
+ # SupportedStyles: always, always_true, never
101
+ Style/FrozenStringLiteralComment:
102
+ Exclude:
103
+ - 'Gemfile'
104
+ - 'beaker-rspec.gemspec'
105
+ - 'lib/beaker-rspec.rb'
106
+ - 'lib/beaker-rspec/beaker_shim.rb'
107
+ - 'lib/beaker-rspec/helpers/serverspec.rb'
108
+ - 'lib/beaker-rspec/rake_task.rb'
109
+ - 'lib/beaker-rspec/spec_helper.rb'
110
+ - 'lib/beaker-rspec/version.rb'
111
+ - 'spec/acceptance/example_spec.rb'
112
+ - 'spec/spec_helper.rb'
113
+
114
+ # Offense count: 1
115
+ Style/MissingRespondToMissing:
116
+ Exclude:
117
+ - 'lib/beaker-rspec/helpers/serverspec.rb'
118
+
119
+ # Offense count: 1
120
+ Style/MixinUsage:
121
+ Exclude:
122
+ - 'lib/beaker-rspec/spec_helper.rb'
123
+
124
+ # Offense count: 1
125
+ # This cop supports unsafe autocorrection (--autocorrect-all).
126
+ # Configuration parameters: EnforcedStyle.
127
+ # SupportedStyles: literals, strict
128
+ Style/MutableConstant:
129
+ Exclude:
130
+ - 'lib/beaker-rspec/version.rb'
131
+
132
+ # Offense count: 1
133
+ # This cop supports unsafe autocorrection (--autocorrect-all).
134
+ # Configuration parameters: RequireEnglish.
135
+ # SupportedStyles: use_perl_names, use_english_names, use_builtin_english_names
136
+ Style/SpecialGlobalVars:
137
+ EnforcedStyle: use_perl_names
data/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [8.0.0](https://github.com/voxpupuli/beaker-rspec/tree/8.0.0) (2023-03-27)
6
+
7
+ [Full Changelog](https://github.com/voxpupuli/beaker-rspec/compare/7.1.0...8.0.0)
8
+
9
+ **Breaking changes:**
10
+
11
+ - Drop Ruby 2.4/2.5/2.6 [\#121](https://github.com/voxpupuli/beaker-rspec/pull/121) ([bastelfreak](https://github.com/bastelfreak))
12
+
13
+ **Implemented enhancements:**
14
+
15
+ - Add Ruby 3.2 support [\#120](https://github.com/voxpupuli/beaker-rspec/pull/120) ([bastelfreak](https://github.com/bastelfreak))
16
+ - Introduce rubocop [\#118](https://github.com/voxpupuli/beaker-rspec/pull/118) ([bastelfreak](https://github.com/bastelfreak))
17
+ - Support uppercase configuration environment variables [\#117](https://github.com/voxpupuli/beaker-rspec/pull/117) ([ekohl](https://github.com/ekohl))
18
+ - Allow to disable debug output [\#116](https://github.com/voxpupuli/beaker-rspec/pull/116) ([jay7x](https://github.com/jay7x))
19
+
20
+ **Merged pull requests:**
21
+
22
+ - Use rubocop config from beaker [\#125](https://github.com/voxpupuli/beaker-rspec/pull/125) ([bastelfreak](https://github.com/bastelfreak))
23
+ - Require beaker 4.x [\#124](https://github.com/voxpupuli/beaker-rspec/pull/124) ([bastelfreak](https://github.com/bastelfreak))
24
+ - Rubocop: Fix Layout cops [\#123](https://github.com/voxpupuli/beaker-rspec/pull/123) ([bastelfreak](https://github.com/bastelfreak))
25
+ - Rubocop: Fix Style cops [\#122](https://github.com/voxpupuli/beaker-rspec/pull/122) ([bastelfreak](https://github.com/bastelfreak))
26
+ - Fix multiple rubocop violations [\#119](https://github.com/voxpupuli/beaker-rspec/pull/119) ([bastelfreak](https://github.com/bastelfreak))
27
+ - Add Ruby 3.1 to CI matrix [\#113](https://github.com/voxpupuli/beaker-rspec/pull/113) ([bastelfreak](https://github.com/bastelfreak))
28
+
5
29
  ## [7.1.0](https://github.com/voxpupuli/beaker-rspec/tree/7.1.0) (2022-01-14)
6
30
 
7
31
  [Full Changelog](https://github.com/voxpupuli/beaker-rspec/compare/7.0.0...7.1.0)
data/Gemfile CHANGED
@@ -1,20 +1,20 @@
1
- source ENV['GEM_SOURCE'] || "https://rubygems.org"
1
+ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2
2
 
3
3
  def location_for(place, fake_version = nil)
4
4
  if place =~ /^(git:[^#]*)#(.*)/
5
- [fake_version, { :git => $1, :branch => $2, :require => false }].compact
6
- elsif place =~ /^file:\/\/(.*)/
7
- ['>= 0', { :path => File.expand_path($1), :require => false }]
5
+ [fake_version, { git: Regexp.last_match(1), branch: Regexp.last_match(2), require: false }].compact
6
+ elsif place =~ %r{^file://(.*)}
7
+ ['>= 0', { path: File.expand_path(Regexp.last_match(1)), require: false }]
8
8
  else
9
- [place, { :require => false }]
9
+ [place, { require: false }]
10
10
  end
11
11
  end
12
12
 
13
- if (beaker_version = ENV['BEAKER_VERSION'])
13
+ if (beaker_version = ENV.fetch('BEAKER_VERSION', nil))
14
14
  gem 'beaker', *location_for(beaker_version)
15
15
  end
16
16
 
17
- case ENV['BEAKER_HYPERVISOR']
17
+ case ENV.fetch('BEAKER_HYPERVISOR', nil)
18
18
  when 'docker'
19
19
  gem 'beaker-docker'
20
20
  when 'vagrant', 'vagrant_libvirt'
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # beaker-rspec
2
2
 
3
- [![License](https://img.shields.io/github/license/voxpupuli/beaker.svg)](https://github.com/voxpupuli/beaker/blob/master/LICENSE)
4
- [![Test](https://github.com/voxpupuli/beaker/actions/workflows/test.yml/badge.svg)](https://github.com/voxpupuli/beaker/actions/workflows/test.yml)
5
- [![Release](https://github.com/voxpupuli/beaker/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/beaker/actions/workflows/release.yml)
6
- [![RubyGem Version](https://img.shields.io/gem/v/beaker.svg)](https://rubygems.org/gems/beaker)
7
- [![RubyGem Downloads](https://img.shields.io/gem/dt/beaker.svg)](https://rubygems.org/gems/beaker)
3
+ [![License](https://img.shields.io/github/license/voxpupuli/beaker-rspec.svg)](https://github.com/voxpupuli/beaker-rspec/blob/master/LICENSE)
4
+ [![Test](https://github.com/voxpupuli/beaker-rspec/actions/workflows/test.yml/badge.svg)](https://github.com/voxpupuli/beaker-rspec/actions/workflows/test.yml)
5
+ [![Release](https://github.com/voxpupuli/beaker-rspec/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/beaker-rspec/actions/workflows/release.yml)
6
+ [![RubyGem Version](https://img.shields.io/gem/v/beaker-rspec.svg)](https://rubygems.org/gems/beaker-rspec)
7
+ [![RubyGem Downloads](https://img.shields.io/gem/dt/beaker-rspec.svg)](https://rubygems.org/gems/beaker-rspec)
8
8
  [![Donated by Puppet Inc](https://img.shields.io/badge/donated%20by-Puppet%20Inc-fb7047.svg)](#transfer-notice)
9
9
 
10
10
  beaker-rspec is a bridge between the puppet acceptance test harness ([beaker](https://github.com/voxpupuli/beaker)) and [rspec](https://github.com/rspec/rspec). It also integrates [serverspec](http://serverspec.org/).
data/Rakefile CHANGED
@@ -18,3 +18,16 @@ else
18
18
  config.future_release = Gem::Specification.load("#{config.project}.gemspec").version
19
19
  end
20
20
  end
21
+
22
+ begin
23
+ require 'rubocop/rake_task'
24
+ rescue LoadError
25
+ # RuboCop is an optional group
26
+ else
27
+ RuboCop::RakeTask.new(:rubocop) do |task|
28
+ # These make the rubocop experience maybe slightly less terrible
29
+ task.options = ['--display-cop-names', '--display-style-guide', '--extra-details']
30
+ # Use Rubocop's Github Actions formatter if possible
31
+ task.formatters << 'github' if ENV['GITHUB_ACTIONS'] == 'true'
32
+ end
33
+ end
data/beaker-rspec.gemspec CHANGED
@@ -1,35 +1,40 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
1
+ $:.push File.expand_path('lib', __dir__)
3
2
  require 'beaker-rspec/version'
4
3
 
5
4
  Gem::Specification.new do |s|
6
- s.name = "beaker-rspec"
5
+ s.name = 'beaker-rspec'
7
6
  s.version = BeakerRSpec::Version::STRING
8
- s.authors = ["Vox Pupuli"]
9
- s.email = ["voxpupuli@groups.io"]
10
- s.homepage = "https://github.com/voxpupuli/beaker-rspec"
11
- s.summary = %q{RSpec bindings for beaker}
12
- s.description = %q{RSpec bindings for beaker, see https://github.com/voxpupuli/beaker}
7
+ s.authors = ['Vox Pupuli']
8
+ s.email = ['voxpupuli@groups.io']
9
+ s.homepage = 'https://github.com/voxpupuli/beaker-rspec'
10
+ s.summary = 'RSpec bindings for beaker'
11
+ s.description = 'RSpec bindings for beaker, see https://github.com/voxpupuli/beaker'
13
12
  s.license = 'Apache-2.0'
14
13
 
15
- s.required_ruby_version = '>= 2.4.0', '<4.0.0'
14
+ s.required_ruby_version = '>= 2.7.0', '<4.0.0'
16
15
 
17
16
  s.files = `git ls-files`.split("\n")
18
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
- s.require_paths = ["lib"]
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
18
+ s.require_paths = ['lib']
21
19
 
22
20
  # Testing dependencies
23
- s.add_development_dependency 'minitest', '~> 5.4'
24
21
  s.add_development_dependency 'fakefs', '>= 0.6', '< 2'
22
+ s.add_development_dependency 'minitest', '~> 5.4'
25
23
  s.add_development_dependency 'rake', '~> 13.0'
26
24
 
25
+ # rubocop
26
+ s.add_development_dependency 'rubocop', '~> 1.48.1'
27
+ s.add_development_dependency 'rubocop-minitest'
28
+ s.add_development_dependency 'rubocop-performance'
29
+ s.add_development_dependency 'rubocop-rake'
30
+ s.add_development_dependency 'rubocop-rspec'
31
+
27
32
  # Documentation dependencies
28
- s.add_development_dependency 'yard'
29
33
  s.add_development_dependency 'thin'
34
+ s.add_development_dependency 'yard'
30
35
 
31
36
  # Run time dependencies
32
- s.add_runtime_dependency 'beaker', '> 3.0'
37
+ s.add_runtime_dependency 'beaker', '>= 4.0', '< 6'
33
38
  s.add_runtime_dependency 'rspec', '~> 3.0'
34
39
  s.add_runtime_dependency 'serverspec', '~> 2'
35
40
  s.add_runtime_dependency 'specinfra', '~> 2'
@@ -70,7 +70,7 @@ module BeakerRSpec
70
70
  end
71
71
 
72
72
  # Setter for hosts object
73
- def hosts= v
73
+ def hosts=(v)
74
74
  RSpec.configuration.hosts = v
75
75
  end
76
76
 
@@ -84,6 +84,5 @@ module BeakerRSpec
84
84
  def cleanup
85
85
  @network_manager.cleanup
86
86
  end
87
-
88
87
  end
89
88
  end
@@ -6,7 +6,6 @@ require 'specinfra/backend/powershell/script_helper'
6
6
  set :backend, 'BeakerDispatch'
7
7
 
8
8
  module Specinfra
9
-
10
9
  # Accessor for current example
11
10
  def cur_example
12
11
  Specinfra.backend.example
@@ -15,11 +14,10 @@ module Specinfra
15
14
  def get_working_node
16
15
  example = cur_example
17
16
  if example and example.metadata[:node]
18
- node = example.metadata[:node]
17
+ example.metadata[:node]
19
18
  else
20
- node = default_node
19
+ default_node
21
20
  end
22
- node
23
21
  end
24
22
 
25
23
  # The cygwin backend
@@ -31,44 +29,39 @@ module Specinfra
31
29
  def exec_backend
32
30
  @exec_backend ||= Specinfra::Backend::BeakerExec.instance
33
31
  end
34
-
35
32
  end
36
33
 
37
-
38
34
  # Override existing specinfra configuration to avoid conflicts
39
35
  # with beaker's shell, stdout, stderr defines
40
36
  module Specinfra
41
37
  module Configuration
42
38
  class << self
43
- VALID_OPTIONS_KEYS = [
44
- :backend,
45
- :env,
46
- :path,
47
- :pre_command,
48
- :sudo_path,
49
- :disable_sudo,
50
- :sudo_options,
51
- :docker_image,
52
- :docker_url,
53
- :lxc,
54
- :request_pty,
55
- :ssh_options,
56
- :dockerfile_finalizer,
39
+ VALID_OPTIONS_KEYS = %i[
40
+ backend
41
+ env
42
+ path
43
+ pre_command
44
+ sudo_path
45
+ disable_sudo
46
+ sudo_options
47
+ docker_image
48
+ docker_url
49
+ lxc
50
+ request_pty
51
+ ssh_options
52
+ dockerfile_finalizer
57
53
  ].freeze
58
54
  end
59
-
60
55
  end
61
56
  end
62
57
 
63
58
  module Specinfra::Helper::Os
64
-
65
59
  @@known_nodes = {}
66
60
 
67
61
  def os
68
62
  working_node_name = get_working_node.to_s
69
- if !@@known_nodes[working_node_name] # haven't seen this yet, better detect the os
70
- @@known_nodes[working_node_name] = property[:os] = detect_os
71
- end
63
+ # haven't seen this yet, better detect the os
64
+ @@known_nodes[working_node_name] = property[:os] = detect_os unless @@known_nodes[working_node_name]
72
65
  @@known_nodes[working_node_name]
73
66
  end
74
67
 
@@ -78,11 +71,11 @@ module Specinfra::Helper::Os
78
71
  # when we know that we have a windows node
79
72
  def detect_os
80
73
  return Specinfra.configuration.os if Specinfra.configuration.os
74
+
81
75
  backend = Specinfra.backend
82
76
  node = get_working_node
83
- if node['platform'] =~ /windows/
84
- return {:family => 'windows'}
85
- end
77
+ return { family: 'windows' } if node['platform'].include?('windows')
78
+
86
79
  Specinfra::Helper::DetectOs.subclasses.each do |c|
87
80
  res = c.detect
88
81
  if res
@@ -97,36 +90,34 @@ class Specinfra::CommandFactory
97
90
  class << self
98
91
  # Force creation of a windows command
99
92
  def get_windows_cmd(meth, *args)
100
-
101
93
  action, resource_type, subaction = breakdown(meth)
102
94
  method = action
103
95
  method += "_#{subaction}" if subaction
104
96
 
105
97
  common_class = Specinfra::Command
106
- base_class = common_class.const_get('Base')
107
- os_class = common_class.const_get('Windows')
108
- version_class = os_class.const_get('Base')
98
+ base_class = common_class.const_get(:Base)
99
+ os_class = common_class.const_get(:Windows)
100
+ version_class = os_class.const_get(:Base)
109
101
  command_class = version_class.const_get(resource_type.to_camel_case)
110
102
 
111
103
  command_class = command_class.create
112
- if command_class.respond_to?(method)
113
- command_class.send(method, *args)
114
- else
115
- raise NotImplementedError.new("#{method} is not implemented in #{command_class}")
104
+ unless command_class.respond_to?(method)
105
+ raise NotImplementedError,
106
+ "#{method} is not implemented in #{command_class}"
116
107
  end
117
- end
118
108
 
109
+ command_class.send(method, *args)
110
+ end
119
111
  end
120
112
  end
121
113
 
122
114
  module Specinfra
123
115
  # Rewrite the runner to use the appropriate backend based upon platform information
124
116
  class Runner
125
-
126
117
  def self.method_missing(meth, *args)
127
118
  backend = Specinfra.backend
128
119
  node = get_working_node
129
- if node['platform'] !~ /windows/
120
+ if !node['platform'].include?('windows')
130
121
  processor = Specinfra::Processor
131
122
  if processor.respond_to?(meth)
132
123
  processor.send(meth, *args)
@@ -135,23 +126,19 @@ module Specinfra
135
126
  else
136
127
  run(meth, *args)
137
128
  end
129
+ elsif backend.respond_to?(meth)
130
+ backend.send(meth, *args)
138
131
  else
139
- if backend.respond_to?(meth)
140
- backend.send(meth, *args)
141
- else
142
- run(meth, *args)
143
- end
132
+ run(meth, *args)
144
133
  end
145
134
  end
146
135
 
147
- private
148
-
149
136
  def self.run(meth, *args)
150
137
  backend = Specinfra.backend
151
138
  cmd = Specinfra.command.get(meth, *args)
152
139
  backend = Specinfra.backend
153
140
  ret = backend.run_command(cmd)
154
- if meth.to_s =~ /^check/
141
+ if meth.to_s.start_with?('check')
155
142
  ret.success?
156
143
  else
157
144
  ret
@@ -168,7 +155,7 @@ module Specinfra::Backend::PowerShell
168
155
  when Regexp
169
156
  target.source
170
157
  else
171
- Regexp.escape(target.to_s.gsub '/', '\/').gsub('\n', '(\r\n|\n)')
158
+ Regexp.escape(target.to_s.gsub('/', '\/')).gsub('\n', '(\r\n|\n)')
172
159
  end
173
160
  end
174
161
  end
@@ -177,38 +164,34 @@ end
177
164
  module Specinfra::Backend
178
165
  class BeakerBase < Specinfra::Backend::Base
179
166
  # Example accessor
180
- def example
181
- @example
182
- end
167
+ attr_reader :example
183
168
 
184
169
  # Execute the provided ssh command
185
170
  # @param [String] command The command to be executed
186
171
  # @return [Hash] Returns a hash containing :exit_status, :stdout and :stderr
187
172
  def ssh_exec!(node, command)
188
- r = on node, command, { :acceptable_exit_codes => (0..127) }
173
+ r = on node, command, { acceptable_exit_codes: (0..127) }
189
174
  {
190
- :exit_status => r.exit_code,
191
- :stdout => r.stdout,
192
- :stderr => r.stderr
175
+ exit_status: r.exit_code,
176
+ stdout: r.stdout,
177
+ stderr: r.stderr,
193
178
  }
194
179
  end
195
-
196
180
  end
197
181
  end
198
182
 
199
183
  # Used as a container for the two backends, dispatches as windows/nix depending on node platform
200
184
  module Specinfra::Backend
201
185
  class BeakerDispatch < BeakerBase
202
-
203
186
  def dispatch_method(meth, *args)
204
- if get_working_node['platform'] =~ /windows/
187
+ if get_working_node['platform'].include?('windows')
205
188
  cygwin_backend.send(meth, *args)
206
189
  else
207
190
  exec_backend.send(meth, *args)
208
191
  end
209
192
  end
210
193
 
211
- def run_command(cmd, opts={})
194
+ def run_command(cmd, opts = {})
212
195
  dispatch_method('run_command', cmd, opts)
213
196
  end
214
197
 
@@ -232,22 +215,22 @@ module Specinfra::Backend
232
215
  # @param [String] cmd The serverspec command to executed
233
216
  # @param [Hash] opt No currently supported options
234
217
  # @return [Hash] Returns a hash containing :exit_status, :stdout and :stderr
235
- def run_command(cmd, opt = {})
218
+ def run_command(cmd, _opt = {})
236
219
  node = get_working_node
237
220
  script = create_script(cmd)
238
- #when node is not cygwin rm -rf will fail so lets use native del instead
239
- #There should be a better way to do this, but for now , this works
221
+ # when node is not cygwin rm -rf will fail so lets use native del instead
222
+ # There should be a better way to do this, but for now , this works
240
223
  if node.is_cygwin?
241
- delete_command = "rm -rf"
242
- redirection = "< /dev/null"
224
+ delete_command = 'rm -rf'
225
+ redirection = '< /dev/null'
243
226
  else
244
- delete_command = "del"
245
- redirection = "< NUL"
227
+ delete_command = 'del'
228
+ redirection = '< NUL'
246
229
  end
247
230
  on node, "#{delete_command} script.ps1"
248
231
  create_remote_file(node, 'script.ps1', script)
249
- #When using cmd on a pswindows node redirection should be set to < NUl
250
- #when using a cygwing one, /dev/null should be fine
232
+ # When using cmd on a pswindows node redirection should be set to < NUl
233
+ # when using a cygwing one, /dev/null should be fine
251
234
  ret = ssh_exec!(node, "powershell.exe -File script.ps1 #{redirection}")
252
235
 
253
236
  if @example
@@ -263,13 +246,12 @@ end
263
246
  # Backend for running serverspec commands on non-windows test nodes
264
247
  module Specinfra::Backend
265
248
  class BeakerExec < BeakerBase
266
-
267
249
  # Run a unix style command using serverspec. Defaults to running on the 'default_node'
268
250
  # test node, otherwise uses the node specified in @example.metadata[:node]
269
251
  # @param [String] cmd The serverspec command to executed
270
252
  # @param [Hash] opt No currently supported options
271
253
  # @return [Hash] Returns a hash containing :exit_status, :stdout and :stderr
272
- def run_command(cmd, opt = {})
254
+ def run_command(cmd, _opt = {})
273
255
  node = get_working_node
274
256
  cmd = build_command(cmd)
275
257
  cmd = add_pre_command(cmd)
@@ -289,9 +271,7 @@ module Specinfra::Backend
289
271
  cmd = "#{String(useshell).shellescape} -c #{String(cmd).shellescape}"
290
272
 
291
273
  path = Specinfra.configuration.path
292
- if path
293
- cmd = %Q{env PATH="#{path}" #{cmd}}
294
- end
274
+ cmd = %(env PATH="#{path}" #{cmd}) if path
295
275
 
296
276
  cmd
297
277
  end
@@ -304,6 +284,5 @@ module Specinfra::Backend
304
284
  cmd
305
285
  end
306
286
  end
307
-
308
287
  end
309
288
  end
@@ -1,5 +1,5 @@
1
1
  require 'rspec/core/rake_task'
2
2
 
3
3
  RSpec::Core::RakeTask.new(:beaker) do |c|
4
- c.pattern = "spec/acceptance/**/*_spec.rb"
4
+ c.pattern = 'spec/acceptance/**/*_spec.rb'
5
5
  end
@@ -1,5 +1,5 @@
1
1
  require 'beaker-rspec/beaker_shim'
2
- require "beaker-rspec/helpers/serverspec"
2
+ require 'beaker-rspec/helpers/serverspec'
3
3
  include BeakerRSpec::BeakerShim
4
4
 
5
5
  RSpec.configure do |c|
@@ -7,48 +7,48 @@ RSpec.configure do |c|
7
7
  c.tty = true
8
8
 
9
9
  # Define persistant hosts setting
10
- c.add_setting :hosts, :default => []
10
+ c.add_setting :hosts, default: []
11
11
  # Define persistant options setting
12
- c.add_setting :options, :default => {}
12
+ c.add_setting :options, default: {}
13
13
  # Define persistant metadata object
14
- c.add_setting :metadata, :default => {}
14
+ c.add_setting :metadata, default: {}
15
15
  # Define persistant logger object
16
- c.add_setting :logger, :default => nil
16
+ c.add_setting :logger, default: nil
17
17
  # Define persistant default node
18
- c.add_setting :default_node, :default => nil
18
+ c.add_setting :default_node, default: nil
19
19
 
20
- #default option values
20
+ # default option values
21
21
  defaults = {
22
- :nodeset => 'default',
22
+ nodeset: 'default',
23
23
  }
24
- #read env vars
24
+ # read env vars
25
25
  env_vars = {
26
- :color => ENV['BEAKER_color'] || ENV['RS_COLOR'],
27
- :nodeset => ENV['BEAKER_set'] || ENV['RS_SET'],
28
- :nodesetdir => ENV['BEAKER_setdir'] || ENV['RS_SETDIR'],
29
- :nodesetfile => ENV['BEAKER_setfile'] || ENV['RS_SETFILE'],
30
- :provision => ENV['BEAKER_provision'] || ENV['RS_PROVISION'],
31
- :keyfile => ENV['BEAKER_keyfile'] || ENV['RS_KEYFILE'],
32
- :debug => ENV['BEAKER_debug'] || ENV['RS_DEBUG'],
33
- :destroy => ENV['BEAKER_destroy'] || ENV['RS_DESTROY'],
34
- :optionsfile => ENV['BEAKER_options_file'] || ENV['RS_OPTIONS_FILE'],
35
- }.delete_if {|key, value| value.nil?}
36
- #combine defaults and env_vars to determine overall options
37
- options = defaults.merge(env_vars)
26
+ color: ENV['BEAKER_COLOR'] || ENV['BEAKER_color'] || ENV.fetch('RS_COLOR', nil),
27
+ nodeset: ENV['BEAKER_SET'] || ENV['BEAKER_set'] || ENV.fetch('RS_SET', nil),
28
+ nodesetdir: ENV['BEAKER_SETDIR'] || ENV['BEAKER_setdir'] || ENV.fetch('RS_SETDIR', nil),
29
+ nodesetfile: ENV['BEAKER_SETFILE'] || ENV['BEAKER_setfile'] || ENV.fetch('RS_SETFILE', nil),
30
+ provision: ENV['BEAKER_PROVISION'] || ENV['BEAKER_provision'] || ENV.fetch('RS_PROVISION', nil),
31
+ keyfile: ENV['BEAKER_KEYFILE'] || ENV['BEAKER_keyfile'] || ENV.fetch('RS_KEYFILE', nil),
32
+ debug: ENV['BEAKER_DEBUG'] || ENV['BEAKER_debug'] || ENV.fetch('RS_DEBUG', nil),
33
+ destroy: ENV['BEAKER_DESTROY'] || ENV['BEAKER_destroy'] || ENV.fetch('RS_DESTROY', nil),
34
+ optionsfile: ENV['BEAKER_OPTIONS_FILE'] || ENV['BEAKER_options_file'] || ENV.fetch('RS_OPTIONS_FILE', nil),
35
+ }.delete_if { |_key, value| value.nil? }
36
+ # combine defaults and env_vars to determine overall options
37
+ options = defaults.merge(env_vars)
38
38
 
39
39
  # process options to construct beaker command string
40
40
  nodesetdir = options[:nodesetdir] || File.join('spec', 'acceptance', 'nodesets')
41
41
  nodesetfile = options[:nodesetfile] || File.join(nodesetdir, "#{options[:nodeset]}.yml")
42
42
  fresh_nodes = options[:provision] == 'no' ? '--no-provision' : nil
43
43
  keyfile = options[:keyfile] ? ['--keyfile', options[:keyfile]] : nil
44
- debug = options[:debug] ? ['--log-level', 'debug'] : nil
44
+ debug = options[:debug] && options[:debug] != 'no' ? ['--log-level', 'debug'] : nil
45
45
  color = options[:color] == 'no' ? ['--no-color'] : nil
46
- options_file = options[:optionsfile] ? ['--options-file',options[:optionsfile]] : nil
46
+ options_file = options[:optionsfile] ? ['--options-file', options[:optionsfile]] : nil
47
47
 
48
48
  # Configure all nodes in nodeset
49
49
  c.setup([fresh_nodes, '--hosts', nodesetfile, keyfile, debug, color, options_file].flatten.compact)
50
50
 
51
- trap "SIGINT" do
51
+ trap 'SIGINT' do
52
52
  c.cleanup
53
53
  exit!(1)
54
54
  end
@@ -1,5 +1,5 @@
1
1
  module BeakerRSpec
2
2
  module Version
3
- STRING = '7.1.0'
3
+ STRING = '8.0.0'
4
4
  end
5
5
  end
data/lib/beaker-rspec.rb CHANGED
@@ -4,5 +4,4 @@ module BeakerRSpec
4
4
  require 'beaker-rspec/beaker_shim'
5
5
  require 'beaker-rspec/spec_helper'
6
6
  require 'beaker-rspec/version'
7
-
8
7
  end
@@ -1,35 +1,34 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "ignore" do
4
-
5
- example "ignore" do
3
+ describe 'ignore' do
4
+ example 'ignore' do
6
5
  hosts.each do |host|
7
6
  on host, 'echo hello'
8
7
  end
9
8
  end
10
9
 
11
- example "use self.host" do
10
+ example 'use self.host' do
12
11
  self.hosts = hosts
13
12
  end
14
13
 
15
- example "use DSL method" do
14
+ example 'use DSL method' do
16
15
  echo_on hosts, 'Hello World!'
17
16
  end
18
17
 
19
- example "access the logger" do
20
- logger.debug("hi, i'm a debug message")
21
- logger.notify("hi, I'm a notify message")
18
+ example 'access the logger' do
19
+ logger.debug("hi, i'm a debug message")
20
+ logger.notify("hi, I'm a notify message")
22
21
  end
23
22
 
24
- example "access the options" do
23
+ example 'access the options' do
25
24
  expect(options).to be_kind_of(Hash)
26
25
  end
27
26
 
28
- example "create a beaker dsl::step" do
27
+ example 'create a beaker dsl::step' do
29
28
  step('testing that a step can be used')
30
29
  end
31
30
 
32
- context "has serverspec support" do
31
+ context 'has serverspec support' do
33
32
  hosts.each do |node|
34
33
  sshd = case node['platform']
35
34
  when /windows|el-|redhat|centos/
@@ -37,8 +36,8 @@ describe "ignore" do
37
36
  else
38
37
  'ssh'
39
38
  end
40
- describe service(sshd), :node => node do
41
- it { should be_running }
39
+ describe service(sshd), node: node do
40
+ it { is_expected.to be_running }
42
41
  end
43
42
 
44
43
  usr = case node['platform']
@@ -47,13 +46,13 @@ describe "ignore" do
47
46
  else
48
47
  'root'
49
48
  end
50
- describe user(usr), :node => node do
51
- it { should exist }
49
+ describe user(usr), node: node do
50
+ it { is_expected.to exist }
52
51
  end
53
52
  end
54
53
  end
55
54
 
56
- context "serverspec: can access default node" do
55
+ context 'serverspec: can access default node' do
57
56
  usr = case default['platform']
58
57
  when /windows/
59
58
  'Administrator'
@@ -61,16 +60,16 @@ describe "ignore" do
61
60
  'root'
62
61
  end
63
62
  describe user(usr) do
64
- it { should exist }
63
+ it { is_expected.to exist }
65
64
  end
66
65
  end
67
66
 
68
- context "serverspec: can match multiline file to multiline contents" do
67
+ context 'serverspec: can match multiline file to multiline contents' do
69
68
  contents = "four = five\n[one]\ntwo = three"
70
- create_remote_file(default, "file_with_contents.txt", contents)
71
- describe file("file_with_contents.txt") do
72
- it { should be_file }
73
- it { should contain(contents) }
69
+ create_remote_file(default, 'file_with_contents.txt', contents)
70
+ describe file('file_with_contents.txt') do
71
+ it { is_expected.to be_file }
72
+ it { is_expected.to contain(contents) }
74
73
  end
75
74
  end
76
75
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  ENV['RS_SETFILE'] ||= 'centos8-64'
2
2
 
3
- require "beaker-rspec"
3
+ require 'beaker-rspec'
metadata CHANGED
@@ -1,15 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vox Pupuli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-14 00:00:00.000000000 Z
11
+ date: 2023-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fakefs
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0.6'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '0.6'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2'
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: minitest
15
35
  requirement: !ruby/object:Gem::Requirement
@@ -25,41 +45,77 @@ dependencies:
25
45
  - !ruby/object:Gem::Version
26
46
  version: '5.4'
27
47
  - !ruby/object:Gem::Dependency
28
- name: fakefs
48
+ name: rake
29
49
  requirement: !ruby/object:Gem::Requirement
30
50
  requirements:
31
- - - ">="
51
+ - - "~>"
32
52
  - !ruby/object:Gem::Version
33
- version: '0.6'
34
- - - "<"
53
+ version: '13.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
35
59
  - !ruby/object:Gem::Version
36
- version: '2'
60
+ version: '13.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rubocop
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 1.48.1
37
68
  type: :development
38
69
  prerelease: false
39
70
  version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 1.48.1
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubocop-minitest
77
+ requirement: !ruby/object:Gem::Requirement
40
78
  requirements:
41
79
  - - ">="
42
80
  - !ruby/object:Gem::Version
43
- version: '0.6'
44
- - - "<"
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
45
87
  - !ruby/object:Gem::Version
46
- version: '2'
88
+ version: '0'
47
89
  - !ruby/object:Gem::Dependency
48
- name: rake
90
+ name: rubocop-performance
49
91
  requirement: !ruby/object:Gem::Requirement
50
92
  requirements:
51
- - - "~>"
93
+ - - ">="
52
94
  - !ruby/object:Gem::Version
53
- version: '13.0'
95
+ version: '0'
54
96
  type: :development
55
97
  prerelease: false
56
98
  version_requirements: !ruby/object:Gem::Requirement
57
99
  requirements:
58
- - - "~>"
100
+ - - ">="
59
101
  - !ruby/object:Gem::Version
60
- version: '13.0'
102
+ version: '0'
61
103
  - !ruby/object:Gem::Dependency
62
- name: yard
104
+ name: rubocop-rake
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rubocop-rspec
63
119
  requirement: !ruby/object:Gem::Requirement
64
120
  requirements:
65
121
  - - ">="
@@ -86,20 +142,40 @@ dependencies:
86
142
  - - ">="
87
143
  - !ruby/object:Gem::Version
88
144
  version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: yard
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
89
159
  - !ruby/object:Gem::Dependency
90
160
  name: beaker
91
161
  requirement: !ruby/object:Gem::Requirement
92
162
  requirements:
93
- - - ">"
163
+ - - ">="
94
164
  - !ruby/object:Gem::Version
95
- version: '3.0'
165
+ version: '4.0'
166
+ - - "<"
167
+ - !ruby/object:Gem::Version
168
+ version: '6'
96
169
  type: :runtime
97
170
  prerelease: false
98
171
  version_requirements: !ruby/object:Gem::Requirement
99
172
  requirements:
100
- - - ">"
173
+ - - ">="
101
174
  - !ruby/object:Gem::Version
102
- version: '3.0'
175
+ version: '4.0'
176
+ - - "<"
177
+ - !ruby/object:Gem::Version
178
+ version: '6'
103
179
  - !ruby/object:Gem::Dependency
104
180
  name: rspec
105
181
  requirement: !ruby/object:Gem::Requirement
@@ -153,6 +229,8 @@ files:
153
229
  - ".github/workflows/release.yml"
154
230
  - ".github/workflows/test.yml"
155
231
  - ".gitignore"
232
+ - ".rubocop.yml"
233
+ - ".rubocop_todo.yml"
156
234
  - CHANGELOG.md
157
235
  - Gemfile
158
236
  - HISTORY.md
@@ -180,7 +258,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
258
  requirements:
181
259
  - - ">="
182
260
  - !ruby/object:Gem::Version
183
- version: 2.4.0
261
+ version: 2.7.0
184
262
  - - "<"
185
263
  - !ruby/object:Gem::Version
186
264
  version: 4.0.0
@@ -190,7 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
268
  - !ruby/object:Gem::Version
191
269
  version: '0'
192
270
  requirements: []
193
- rubygems_version: 3.2.32
271
+ rubygems_version: 3.4.6
194
272
  signing_key:
195
273
  specification_version: 4
196
274
  summary: RSpec bindings for beaker