ace-test-runner-e2e 0.42.0 → 0.43.0

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: a10bfe582cd05ba82acd9de7b3cde9164748ae79f10197839d30ce1be1d5aa08
4
+ data.tar.gz: 92cb523accd05c05fbe2e7c76c1778204fb048b9e1794b8956d225bc257f2779
5
5
  SHA512:
6
- metadata.gz: e3a65486f96beb2288ca5648d16305da412e1d90f69afc6586818db90f029e8d3dbb3037ca3a780619cf0b067d18d2c96b739dcdf724c7a4dd6ad0a090b00dce
7
- data.tar.gz: 34c8755617d888e23307c21c53b21fd0de777195c6c6ac77d7eaf79cc3cc0efe8ba9fd5b8e1741e5ddb29ccaea7d9c181eb10c80b541d026d24d2713edadda9d
6
+ metadata.gz: 2bf18a436f8f4148db5acc308df5f2071803c173539a1f6b60c5b6dd631ed176fb3c9dce8ce265af0cc493b07160b59b9373e81af877331cddd21571721694ed
7
+ data.tar.gz: 7c0024804c817351a3dc980b71496ac2d010f28c626206c2def6dd32cce48f35e01d73a9fbf8fd805c4691a3fcf3f2054c56dec51dd877026b0f65594c5a1986
data/CHANGELOG.md CHANGED
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.43.0] - 2026-10-05
11
+
12
+ ### Added
13
+ - Frozen release manifests accept validated `runtime_dependencies` declarations for exact source-bound consumer edge verification. Missing required consumer declarations remain a proof failure.
14
+
10
15
  ## [0.42.0] - 2026-10-04
11
16
 
12
17
  ### Added
@@ -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}"
@@ -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.0"
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.0
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-10-05 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-cli