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 +4 -4
- data/Gemfile.lock +2 -1
- data/lib/cem_win_spec/fixture_cache.rb +11 -0
- data/lib/cem_win_spec/rake_tasks.rb +19 -0
- data/lib/cem_win_spec/test_runner.rb +6 -0
- data/lib/cem_win_spec/version.rb +1 -1
- data/lib/cem_win_spec/win_exec/cmd/base_cmd.rb +3 -0
- data/lib/cem_win_spec.rb +18 -8
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e2960628a1ecf002128b98f42b8309d0d69626a84c5a798b620b7a4566c5ad41
|
|
4
|
+
data.tar.gz: 6f3ea277e7143e778d812bb845ee502f859a0c95271d6307e7f987d3e0308fbb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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(
|
data/lib/cem_win_spec/version.rb
CHANGED
|
@@ -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.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|