ace-test-runner-e2e 0.42.0 → 0.43.1

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: f8c03365266949f68dd3364885060b9c27b4087d3ff84b0b42ac5c231ab092ed
4
- data.tar.gz: ea5b5009323c90d85ec27e417ae012ea09c2af8838b248bf8057caf2fd9174cd
3
+ metadata.gz: 4592c86349447ec53e4ab21b4ba9cb3325cf1a0a54d900071bff95d41ea74923
4
+ data.tar.gz: c6b337e5a49bb83d074480f8c1b4cb9e5ac12e1cd115274cd0ca22a0749dd40d
5
5
  SHA512:
6
- metadata.gz: e3a65486f96beb2288ca5648d16305da412e1d90f69afc6586818db90f029e8d3dbb3037ca3a780619cf0b067d18d2c96b739dcdf724c7a4dd6ad0a090b00dce
7
- data.tar.gz: 34c8755617d888e23307c21c53b21fd0de777195c6c6ac77d7eaf79cc3cc0efe8ba9fd5b8e1741e5ddb29ccaea7d9c181eb10c80b541d026d24d2713edadda9d
6
+ metadata.gz: 9fb30e791472f53e681fe1124b8e544b9831a23b1640dfab1cb3cf52d41da009687e67ea0d1d1510422bc86c3c53a898714b5c0f3bedf3d648af6e608b59dad1
7
+ data.tar.gz: 14af8cb0fd388501278520c8340ef2724ccf0006e116c8a9184f948b4d78c2fb2d2c48234af52205203616622c906a704e05d4252a20b2d698fbb1ff3bd6077c
data/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.43.1] - 2026-11-10
11
+
12
+ ### Fixed
13
+
14
+ - Mount result parent directories correctly in sandbox pipelines and include bounded setup stdout in failure diagnostics.
15
+
16
+ ## [0.43.0] - 2026-10-05
17
+
18
+ ### Added
19
+ - Frozen release manifests accept validated `runtime_dependencies` declarations for exact source-bound consumer edge verification. Missing required consumer declarations remain a proof failure.
20
+
10
21
  ## [0.42.0] - 2026-10-04
11
22
 
12
23
  ### Added
@@ -46,7 +46,7 @@ Example: `ace-lint/test/e2e/TS-LINT-001-lint-pipeline/scenario.yml`
46
46
  |-------|------|---------|-------------|
47
47
  | `priority` | string | `medium` | Test priority: `high`, `medium`, `low` |
48
48
  | `tool-under-test` | string | — | Primary command/tool validated |
49
- | `sandbox-layout` | object | `{}` | Directory-level outcome hints used to precreate `results/tc/*` paths and guide verification |
49
+ | `sandbox-layout` | object | `{}` | Directory and exact artifact-file declarations; trailing `/` denotes a directory, otherwise only the parent directory is created |
50
50
  | `duration` | string | — | Estimated duration (e.g., `~15min`) |
51
51
  | `timeout` | integer | — | Optional per-scenario execution timeout in seconds |
52
52
  | `automation-candidate` | boolean | `false` | Whether test is automatable |
@@ -74,7 +74,8 @@ Artifact layout conventions:
74
74
  - canonical: `results/tc/{NN}/`
75
75
  - avoid non-TC-scoped result folders
76
76
  - keep only declared verifier-dependent evidence under `results/tc/{NN}/`; runner observations live in harness reports, not sandbox helper files
77
- - file-level verifier checks must be declared by the runner; `sandbox-layout` does not replace exact file declarations
77
+ - file-level verifier checks require exact paths declared by the runner or `sandbox-layout`; directory hints alone are insufficient
78
+ - in `sandbox-layout`, keys ending in `/` declare directories; other keys declare files, whose parent directories are created without creating or replacing the files
78
79
  - grouped shorthand such as ``results/tc/01/help.stdout`, `.stderr`, `.exit`` is valid for exact sibling captures
79
80
  - wildcard artifact paths are not supported
80
81
  - absence of a declared path is debug context, not a standalone failure reason
@@ -9,6 +9,11 @@ ace-docs:
9
9
 
10
10
  # ACE Taskflow Test Fixture Template
11
11
 
12
+ > **Legacy layout notice (L1):** this fixture scaffolds the former release-folder
13
+ > tree (`.ace-task/v.test/tasks/...`). The current repository uses the flat
14
+ > `.ace-tasks/<task-folder>/` layout. Use this template only for legacy-layout
15
+ > fixtures; a current-layout template is a follow-up (L9).
16
+
12
17
  This template provides scaffolding for E2E tests that need valid ace-task structures.
13
18
 
14
19
  ## Basic Task Fixture
@@ -190,7 +190,11 @@ module Ace
190
190
  idx = extract_result_dir_index(key)
191
191
  idx.nil? || selected_positions.include?(idx)
192
192
  end
193
- return selected_from_layout unless selected_from_layout.empty?
193
+ unless selected_from_layout.empty?
194
+ return selected_from_layout.map do |path|
195
+ path.to_s.end_with?("/") ? path : File.dirname(path.to_s)
196
+ end.uniq
197
+ end
194
198
  end
195
199
 
196
200
  selected_positions.map { |idx| "results/tc/#{format("%02d", idx)}" }
@@ -4,6 +4,7 @@ require "digest"
4
4
  require "fileutils"
5
5
  require "json"
6
6
  require "rubygems/version"
7
+ require "rubygems/requirement"
7
8
 
8
9
  module Ace
9
10
  module Test
@@ -124,7 +125,7 @@ module Ace
124
125
  label = "packages[#{index}]"
125
126
  raise Invalid, "#{label} must be an object" unless entry.is_a?(Hash)
126
127
 
127
- reject_unknown_keys!(entry, %w[name artifact_version source_sha supersedes], label)
128
+ reject_unknown_keys!(entry, %w[name artifact_version source_sha supersedes runtime_dependencies], label)
128
129
 
129
130
  name = entry["name"]
130
131
  unless name.is_a?(String) && name.match?(GEM_NAME_PATTERN)
@@ -134,9 +135,34 @@ module Ace
134
135
  validate_exact_version!(entry["artifact_version"], "#{label}(#{name}) artifact_version")
135
136
  validate_source_sha!(entry["source_sha"], "#{label}(#{name}) source_sha")
136
137
  validate_supersedes!(entry["supersedes"], entry["artifact_version"], "#{label}(#{name})")
138
+ validate_runtime_dependencies!(entry["runtime_dependencies"], label) if entry.key?("runtime_dependencies")
137
139
  name
138
140
  end
139
141
 
142
+ # These are frozen source declarations, not requirements inferred
143
+ # from whatever a registry happened to return during the proof.
144
+ def validate_runtime_dependencies!(raw, label)
145
+ unless raw.is_a?(Hash)
146
+ raise Invalid, "#{label} runtime_dependencies must be an object"
147
+ end
148
+ raw.each do |name, requirements|
149
+ unless name.is_a?(String) && name.match?(GEM_NAME_PATTERN) &&
150
+ requirements.is_a?(Array) && !requirements.empty? &&
151
+ requirements.uniq.length == requirements.length
152
+ raise Invalid, "#{label} has invalid runtime dependency declaration"
153
+ end
154
+ requirements.each do |requirement|
155
+ parsed = requirement.is_a?(String) ? Gem::Requirement.new(requirement) : nil
156
+ canonical = parsed&.requirements&.map { |operator, version| "#{operator} #{version}" }
157
+ unless canonical == [requirement]
158
+ raise Invalid, "#{label} runtime dependency requirements must be canonical strings"
159
+ end
160
+ rescue ArgumentError
161
+ raise Invalid, "#{label} has invalid runtime dependency requirement"
162
+ end
163
+ end
164
+ end
165
+
140
166
  def validate_exact_version!(raw, label)
141
167
  unless raw.is_a?(String) && !raw.strip.empty?
142
168
  raise Invalid, "#{label} must be an exact version string, got #{raw.inspect}"
@@ -301,7 +301,7 @@ module Ace
301
301
  end
302
302
 
303
303
  unless status.success?
304
- raise "Setup step 'run' failed (exit #{status.exitstatus}): #{command}\n#{stderr}"
304
+ raise "Setup step 'run' failed (exit #{status.exitstatus}): #{command}\nstdout:\n#{stdout}\nstderr:\n#{stderr}"
305
305
  end
306
306
 
307
307
  stdout
@@ -3,7 +3,7 @@
3
3
  module Ace
4
4
  module Test
5
5
  module EndToEndRunner
6
- VERSION = "0.42.0"
6
+ VERSION = "0.43.1"
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-test-runner-e2e
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.42.0
4
+ version: 0.43.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-10-04 00:00:00.000000000 Z
10
+ date: 2026-11-10 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-cli