cem_win_spec 0.1.9 → 0.1.11

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
  SHA256:
3
- metadata.gz: 1b5689dd8fae43d58612457473f06c19baa7e798443f6393c87dda2c84b1a2f4
4
- data.tar.gz: 1535bc2325b68cdb08475020b79e1d1d96df40803800e13c5b273cf6e63778f6
3
+ metadata.gz: e2960628a1ecf002128b98f42b8309d0d69626a84c5a798b620b7a4566c5ad41
4
+ data.tar.gz: 6f3ea277e7143e778d812bb845ee502f859a0c95271d6307e7f987d3e0308fbb
5
5
  SHA512:
6
- metadata.gz: d58a1f16b67591c42c7566cb102023ab07f5706d0638fc5b2d89cdc4bf1c4d89101779faec8dd864b220b2edd663bd1004e721d5f91db0616af98557ab962ff9
7
- data.tar.gz: cafa3f69e03a737e06f840afd92abe2cc8c95d7f83cb8bfa5c043b2656ab59bec868c84467c3da6ee060451bd0515cfe4fc57c8fb21a73c7c15807fb3edc690f
6
+ metadata.gz: 9ba28e0a21df4ce9f63e87c5a975dafae4feb9cec5223752f40888f9fdfd5e419bc03004fc760a3af10988d8bfd76f3f02fc8de8b33170da9bd4b65686838322
7
+ data.tar.gz: c1f0f3a42c8ae6950188004e01c12a2bde848ce864cd0fa1b53c2e156d6b152833c0901cd34fbaaca7a5f5dc377a6030ad6c6ef012fd032099d4387071e8d621
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cem_win_spec (0.1.9)
4
+ cem_win_spec (0.1.11)
5
5
  parallel_tests (~> 3.4)
6
6
  puppet_forge (~> 4.1)
7
7
  winrm (~> 2.3)
@@ -111,6 +111,7 @@ GEM
111
111
 
112
112
  PLATFORMS
113
113
  arm64-darwin-22
114
+ arm64-darwin-23
114
115
  x86_64-darwin-19
115
116
  x86_64-darwin-20
116
117
 
@@ -27,6 +27,7 @@ module CemWinSpec
27
27
 
28
28
  def initialize
29
29
  validate_platform!
30
+ configure_forge_authorization!
30
31
  @cache_dir = CACHE_DIR
31
32
  @cache_entries = setup_and_load_cache
32
33
  @entries_digest = hexdigest(@cache_entries.to_s)
@@ -73,6 +74,16 @@ module CemWinSpec
73
74
  raise FixtureCacheError, 'FixtureCache must run on Windows'
74
75
  end
75
76
 
77
+ # Premium/entitled Forge modules (e.g. puppetlabs-security_policy) 401 on
78
+ # PuppetForge::Module.find/Release.find/download without this - the gem
79
+ # makes anonymous requests by default. FORGE_API_KEY matches the env var
80
+ # puppetlabs_spec_helper's spec_prep already reads for the same purpose,
81
+ # so a single secret covers both.
82
+ def configure_forge_authorization!
83
+ token = ENV.fetch('FORGE_API_KEY', nil)
84
+ PuppetForge::Connection.authorization = token unless token.nil? || token.strip.empty?
85
+ end
86
+
76
87
  def hexdigest(str)
77
88
  Digest(:SHA256).hexdigest(str)
78
89
  end
@@ -127,6 +127,25 @@ namespace 'cem_win_spec' do
127
127
  ParallelTests::CLI.new.run(pargs)
128
128
  end
129
129
 
130
+ desc 'Run prep and sequential spec tests (for coverage)'
131
+ task :sequential_spec do
132
+ Rake::Task['cem_win_spec:prep'].invoke
133
+ Rake::Task['cem_win_spec:sequential_spec_standalone'].invoke
134
+ end
135
+
136
+ desc 'Run RSpec tests sequentially on Windows host (no parallel_tests)'
137
+ task :sequential_spec_standalone do
138
+ require 'rspec/core'
139
+ spec_files = Rake::FileList[cem_win_spec_pattern]
140
+ rspec_args = []
141
+ rspec_args << '--fail-fast' if cem_win_spec_fail_fast
142
+ rspec_args << '--backtrace' if cem_win_spec_trace
143
+ rspec_args.concat(['--format', cem_win_spec_format])
144
+ puts "Running tests sequentially with pattern #{cem_win_spec_pattern}..."
145
+ rspec_args.concat(spec_files)
146
+ RSpec::Core::Runner.run(rspec_args)
147
+ end
148
+
130
149
  desc 'Clean fixture cache'
131
150
  task :clean_fixture_cache do
132
151
  CemWinSpec::FixtureCache.clean!
@@ -98,6 +98,12 @@ module CemWinSpec
98
98
  end
99
99
  end
100
100
 
101
+ def rspec_tests_sequential(**opts)
102
+ @rspec_tests_sequential ||= new_command('Run rspec tests sequentially', **opts) do
103
+ remote_run('bundle exec rake cem_win_spec:sequential_spec')
104
+ end
105
+ end
106
+
101
107
  def clean_up(**opts)
102
108
  @clean_up ||= new_command('Cleanup', **opts) do
103
109
  remote_run(
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CemWinSpec
4
- VERSION = "0.1.9"
4
+ VERSION = "0.1.11"
5
5
  end
@@ -49,6 +49,9 @@ module CemWinSpec
49
49
 
50
50
  value['PUPPET_GEM_VERSION'] = "~> #{puppet_version}" if puppet_version
51
51
  value['FACTER_GEM_VERSION'] = 'https://github.com/puppetlabs/facter#main' if puppet_version
52
+ value['FORGE_API_KEY'] = ENV['FORGE_API_KEY'] if ENV['FORGE_API_KEY']
53
+ value['SCE_COVERAGE'] = ENV['SCE_COVERAGE'] if ENV['SCE_COVERAGE']
54
+ value['COVERAGE'] = ENV['COVERAGE'] if ENV['COVERAGE']
52
55
  value.delete('password') if value.key?('password')
53
56
  @env_vars = value
54
57
  end
data/lib/cem_win_spec.rb CHANGED
@@ -140,15 +140,25 @@ module CemWinSpec
140
140
 
141
141
  # Runs RSpec tests
142
142
  def self.run_spec(runner, module_dir, **opts)
143
+ test_method = %w[ruby both].include?(ENV['SCE_COVERAGE']) ? :rspec_tests_sequential : :rspec_tests_parallel
143
144
  output = validate_output(validation_method: :inspect) do
144
- runner.rspec_tests_parallel(operation_timeout: 300,
145
- receive_timeout: 310,
146
- working_dir: module_dir,
147
- ignore_exitcode: true,
148
- reuse_tunnel: false,
149
- **opts).run
150
- end
151
- if output.stderr&.include?('Tests Failed')
145
+ runner.send(test_method,
146
+ operation_timeout: 300,
147
+ receive_timeout: 310,
148
+ working_dir: module_dir,
149
+ ignore_exitcode: true,
150
+ reuse_tunnel: false,
151
+ **opts).run
152
+ end
153
+ # `output.stderr.include?('Tests Failed')` only catches the specific string
154
+ # parallel_tests prints when some rspec examples fail. It misses any other
155
+ # reason `bundle exec rake cem_win_spec:parallel_spec` can exit non-zero on
156
+ # the remote host - e.g. a `rake aborted!` crash during `cem_win_spec:prep`
157
+ # (fixture cache setup, Hiera data copy, etc.) before rspec ever runs, which
158
+ # never prints "Tests Failed" at all. `ignore_exitcode: true` on the .run
159
+ # call above only suppresses Exec#run's own internal raise; output.exitcode
160
+ # still holds the real remote exit code, so check it too.
161
+ if !output.success? || output.stderr&.include?('Tests Failed')
152
162
  logger.error 'Tests failed'
153
163
  self.exit_code = 1
154
164
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cem_win_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Heston Snodgrass
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-03-31 00:00:00.000000000 Z
11
+ date: 2026-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: winrm
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  requirements: []
142
- rubygems_version: 3.5.18
142
+ rubygems_version: 3.5.22
143
143
  signing_key:
144
144
  specification_version: 4
145
145
  summary: Write a short summary, because RubyGems requires one.