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 +4 -4
- data/CHANGELOG.md +11 -0
- data/handbook/guides/scenario-yml-reference.g.md +3 -2
- data/handbook/templates/ace-taskflow-fixture.template.md +5 -0
- data/lib/ace/test/end_to_end_runner/molecules/pipeline_sandbox_builder.rb +5 -1
- data/lib/ace/test/end_to_end_runner/molecules/release_manifest.rb +27 -1
- data/lib/ace/test/end_to_end_runner/molecules/setup_executor.rb +1 -1
- data/lib/ace/test/end_to_end_runner/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4592c86349447ec53e4ab21b4ba9cb3325cf1a0a54d900071bff95d41ea74923
|
|
4
|
+
data.tar.gz: c6b337e5a49bb83d074480f8c1b4cb9e5ac12e1cd115274cd0ca22a0749dd40d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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-
|
|
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
|
|
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
|
-
|
|
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
|
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.
|
|
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
|
|
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
|