Documentation
¶
Overview ¶
Package conformance defines the shared result and configuration vocabulary used by the conformance runner and per-format modules.
Exported in this package: Status, Priority, TestCase, Detail, HTTPDetail, CLIDetail, Credential, CredentialType, the convenience constructors (Pass, Fail, FailWithHTTPDetail, FailWithCLIDetail, FailWithDetail, Skip), Config, and Report. Per-format protocol logic lives under pkg/conformance/{maven,npm,oci}; per-format HTTP clients live under pkg/client/{maven,npm,oci}.
Index ¶
- func ContextWithLogger(ctx context.Context, log *slog.Logger) context.Context
- func GenerateRunID() (string, error)
- func LoggerFromContext(ctx context.Context) *slog.Logger
- type CLIDetail
- type CLIEnv
- type CLIExecutor
- type CLIResult
- type Config
- type ConfigError
- type Credential
- type CredentialType
- type Detail
- type Env
- type FilterNoMatchError
- type HTTPDetail
- type Module
- type Priority
- type PriorityNoMatchError
- type Report
- type RunOpts
- type Status
- type TestCase
- func Fail(name, message string) TestCase
- func FailWithCLIDetail(name, message string, d CLIDetail) TestCase
- func FailWithDetail(name, message string, d Detail) TestCase
- func FailWithHTTPDetail(name, message string, d HTTPDetail) TestCase
- func Pass(name string) TestCase
- func Skip(name, reason string) TestCase
- type TestDescriptor
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContextWithLogger ¶
ContextWithLogger returns a derived context carrying log. A later call to LoggerFromContext on the returned context (or any context derived from it) returns log, unless another ContextWithLogger call shadows it.
func GenerateRunID ¶
GenerateRunID returns 8 lowercase hex characters from 4 crypto/rand bytes per S04 §Run-ID resolution. The exported signature is fixed by S04 §843 so AR integration harnesses can call it without a reader argument; the random source is the unexported generateRunID seam, which tests substitute via export_test.go.
On failure the error is wrapped with this function's own operation context ("read random bytes"), not the caller's. Run / RunModule add the "generate run id" prefix per S04 §Run-ID resolution, so a failure surfaced through Run reads "generate run id: read random bytes: ...", with each layer naming what it was doing and no duplicated prefix.
func LoggerFromContext ¶
LoggerFromContext returns the logger previously stashed on ctx by ContextWithLogger. When no logger is present, it returns a non-nil fallback logger that discards every record. The fallback never returns nil and never panics when used by callers.
Types ¶
type CLIDetail ¶
type CLIDetail struct {
Driver string
Version string
Argv []string
ExitCode int
Signal string
Duration time.Duration
Stdout string
Stderr string
}
CLIDetail carries driver-level context for a failing TestCase per S04 §581-595. Field order matches the canonical render order used by the output layer.
type CLIEnv ¶
type CLIEnv interface {
// HasCLI reports whether a CLI executor is available in this env.
HasCLI() bool
// CLI returns the executor for driver-using tests. Valid only
// when HasCLI() is true; nil otherwise. See S04 §CLI drivers for
// the CLIExecutor contract.
CLI() CLIExecutor
// CLIVersion returns the resolved driver version captured at
// NewEnv time. Equal to the value CLI().Version() returns. Empty
// when HasCLI() is false. See S04 §CLI drivers / Version pinning.
CLIVersion() string
}
CLIEnv is implemented by envs that expose an external CLI driver per S04 §479-497. Driver-using tests type-assert to this interface and emit StatusSkip when HasCLI returns false. Modules with no driver support do not need to implement it. CLIEnv and Env are declared as separate interfaces in the spec; the runner holds Env and reaches CLIEnv only by type assertion at call sites that need driver methods (see S04 §499-504 for the smallest-interface rationale).
type CLIExecutor ¶
type CLIExecutor interface {
// Name reports the driver identifier used in CLIDetail.Driver
// and in skip / failure messages. Stable across invocations.
Name() string
// Version reports the resolved driver version. Resolved exactly
// once during Module.NewEnv (see S04 §Version pinning) and
// returned verbatim on every call thereafter. Empty only when
// version resolution failed and HasCLI() returned false.
Version() string
// Run invokes the driver with the supplied argv. The runner
// passes ctx for cancellation; the implementation MUST honor it
// via exec.CommandContext per S04 §Invocation contract.
//
// Returns CLIResult on every outcome where the process started.
// Returns a non-nil error only when the process could not be
// spawned at all (binary not found, permission denied, fork
// failure). Non-zero exit codes and signals are NOT returned as
// errors — they are conveyed via CLIResult so the test function
// can interpret them.
Run(ctx context.Context, argv []string, opts RunOpts) (CLIResult, error)
}
CLIExecutor invokes an external CLI with a fixed contract per S04 §1126-1159. One implementation per driver per format (e.g. pkg/client/npm/cli.go implements CLIExecutor for the npm CLI). The runner sees only the interface.
type CLIResult ¶
type CLIResult struct {
// Argv is the invocation argv with secret-flag values redacted: the
// built-in --password/--auth/--token set plus any flags the executor
// declared via WithSecretFlags. A caller building a CLIDetail must
// populate CLIDetail.Argv from this, not from the raw argv passed to
// Run, so a secret-bearing flag value never reaches the report
// (S04 §Secret-bearing argv). Empty when the driver was unavailable
// and no invocation was attempted.
Argv []string
// ExitCode is the process exit code; 0 on success; -1 if killed
// by a signal.
ExitCode int
// Signal is empty unless the process was killed by a signal
// (e.g. "killed", "terminated").
Signal string
// Duration is the wall-clock time the process ran.
Duration time.Duration
// Stdout is tail-truncated to 4 KiB with a "... [truncated]"
// marker on truncation.
Stdout string
// Stderr is tail-truncated to 4 KiB with a "... [truncated]"
// marker on truncation.
Stderr string
}
CLIResult is the structured outcome of a driver invocation per S04 §1173-1181. Every field is populated by the executor.
type Config ¶
type Config struct {
// Format selects the per-format module: "maven" | "npm" | "oci".
Format string
// RegistryURL is the base URL of the registry under test.
RegistryURL string
// Credential is the user-supplied secret carried into protocol
// requests. Zero value (empty Type, all halves empty) means
// unauthenticated.
Credential Credential
// Filter is a path.Match glob pattern. Empty means no filtering;
// otherwise only TestDescriptor.Name matching the glob runs.
Filter string
// Priorities is a non-empty allow-list of priorities to run. nil
// or empty means no priority filtering. AND-composes with Filter.
Priorities []Priority
// RunID is the per-invocation identifier. Empty triggers
// auto-generation inside Run / RunModule.
RunID string
// SettleTimeout is the per-write polling cap for async
// registries. Zero disables polling.
SettleTimeout time.Duration
// HTTPClient is the HTTP client tests use. nil triggers the
// library default client.
HTTPClient *http.Client
// Logger is the structured logger the library derives child
// loggers from. nil triggers a JSON handler over io.Discard.
Logger *slog.Logger
// AllowRedirectHosts is the per-host glob allow-list consulted by
// the library-default CheckRedirect before following a cross-host
// redirect. nil or empty preserves strict cross-host rejection.
AllowRedirectHosts []string
}
Config is the library-facing configuration value per S04 §645-657. Plain exported fields; callers literal-initialize.
func (Config) Validate ¶
Validate enforces the rules in S04 §Config.Validate. It performs no I/O and is called from the top of Run / RunModule before any module method is invoked. The CLI may also call it to pre-flight an invalid config at startup.
On the first rule failure Validate returns *ConfigError with the kebab-case Field name from S04 §Error Cases / Library layer; rules are checked in the order they appear in the spec so the error surfaced is deterministic. Permissive zero values (empty RunID, nil Priorities, empty Filter, nil AllowRedirectHosts, zero SettleTimeout, zero Credential) are accepted.
type ConfigError ¶
ConfigError is returned by Config.Validate and by Run/RunModule when validation fails. Callers use errors.As. Field is the kebab-case flag name (e.g. "registry-url"); Reason is the human-readable cause. See S04 §Config.Validate and §Error Cases / Library layer.
func (*ConfigError) Error ¶
func (e *ConfigError) Error() string
Error returns the wire-format message documented at S04 §Error Cases / Output layer (runtime): "<Field>: <Reason>" (single line). The CLI prints err.Error() verbatim to stderr, so this format also satisfies the Output layer contract that maps *ConfigError to the "<Field>: <Reason>" stderr line.
type Credential ¶
type Credential struct {
Type CredentialType
Token string
Username string
Password string
}
Credential is the user-supplied secret carried into protocol requests per S04 §628-633. The zero value (empty Type, all halves empty) represents unauthenticated.
func (Credential) String ¶ added in v1.57.0
func (c Credential) String() string
String implements fmt.Stringer so that formatting a Credential never prints its secret halves verbatim. Type and Username are identifiers, not secrets, so they print as-is; a non-empty Token or Password collapses to redact.Sentinel. This covers the "%v", "%s", and "%+v" verbs applied to a Credential value directly, and to a Credential held in an *exported* field of another struct — fmt invokes String() in both cases. It does NOT cover a Credential reached through an *unexported* field (e.g. a package-local struct's lowercased credential field under "%+v"): fmt cannot call methods on values it cannot interface, so it prints such fields by reflection instead. Keep secret-bearing values out of format strings regardless; this method is a backstop, not a licence to format credentials.
type CredentialType ¶
type CredentialType string
CredentialType is the credential kind per S04 §621-626.
const ( // CredentialBearer is a single-string token credential (npm Bearer, // GitLab Maven Private-Token). CredentialBearer CredentialType = "bearer" // CredentialBasic is a two-half user+password credential (OCI, // non-GitLab Maven). CredentialBasic CredentialType = "basic" )
type Detail ¶
type Detail struct {
// HTTP is populated when the failure is HTTP-shaped.
HTTP *HTTPDetail
// CLI is populated when the failure is driver-shaped.
CLI *CLIDetail
}
Detail carries failure context for diagnosis per S04 §556-563. At most one of HTTP or CLI is populated. FailWithHTTPDetail and FailWithCLIDetail enforce this at the signature level; FailWithDetail is the legacy escape hatch that panics only when both branches are populated and preserves an empty envelope as-given.
type Env ¶
type Env interface {
// Close releases resources held by the env (temp dirs,
// executors).
Close() error
}
Env is the per-credential environment a Module constructs in NewEnv per S04 §471-477. The runner only ever sees Env; per-format envs hold a live *Client and, when applicable, a CLIExecutor.
Format tests should depend on the smallest interface they need (e.g. CLIEnv for driver-using tests, or a package-local client-bearing interface for protocol tests) rather than type-asserting to concrete env internals — see S04 §499-504.
type FilterNoMatchError ¶
type FilterNoMatchError struct {
Pattern string
}
FilterNoMatchError is returned by Run/RunModule when cfg.Filter is non-empty but no TestDescriptor.Name in the catalog matches the pattern per S04 §851-855. Returned before any I/O beyond catalog construction.
func (*FilterNoMatchError) Error ¶
func (e *FilterNoMatchError) Error() string
Error reports the no-match condition with the offending pattern.
type HTTPDetail ¶
type HTTPDetail struct {
RequestMethod string
RequestURL string
StatusCode int
// ResponseBody preserves the START of the response body up to 4
// KiB; the END is truncated and a literal "... [truncated]" marker
// is appended when truncation occurs. The start is preferred
// because diagnostic content for HTTP errors (status code, error
// message, structured envelope) typically lives at the beginning.
// See S04 §570-578.
ResponseBody string
}
HTTPDetail carries HTTP-level context for a failing TestCase per S04 §565-579.
type Module ¶
type Module interface {
// TestCatalog returns the full set of tests this module declares.
// The runner owns filtering, prefixing, and skip dispatch.
//
// Implementations MUST be pure and idempotent per S04 §439-445:
// TestCatalog may be called more than once per process (e.g. by
// the `list` subcommand ahead of `run`, or by tests that
// introspect the catalog). The returned slice and the descriptors
// within it should be equivalent across calls for the same
// Config. Do not perform network I/O, filesystem I/O, environment
// reads, process execution, or shared state mutation inside
// TestCatalog.
TestCatalog(cfg Config) []TestDescriptor
// NewEnv constructs the per-credential environment per S04
// §448-450. Called once per credential. Returns an error if
// environment setup fails (tool error).
NewEnv(ctx context.Context, cfg Config, cred Credential) (Env, error)
// NegativeAuthTests returns descriptors for auth-failure tests
// that run outside the credential loop per S04 §452-462 — e.g.,
// an unauthenticated probe expected to 401. The runner executes
// each one through the same runOne wrapper as positive
// descriptors (panic recovery, ctx cancellation, name-format
// checks), and appends the resulting cases to
// Report.Cases. A descriptor's Fn is responsible for issuing
// requests without the env's authenticated client (e.g. by
// constructing a fresh client or stripping the Authorization
// header).
NegativeAuthTests(cfg Config) []TestDescriptor
}
Module is the cross-format extension boundary per S04 §432-464. Each supported registry format (maven, npm, oci) provides exactly one implementation; the runner never inspects cfg.Format for dispatch — that knowledge lives entirely in the Module implementation.
Adding a new format means supplying a new Module; the runner is unchanged.
type Priority ¶
type Priority string
Priority is the declared importance of a TestDescriptor per S04 §523-530, used by the runner's cfg.Priorities filter.
const ( // PriorityCritical marks tests that must pass for the registry to // be considered minimally functional. PriorityCritical Priority = "critical" // PriorityHigh marks tests covering the core protocol surface. PriorityHigh Priority = "high" // PriorityMedium marks tests covering common but non-essential // protocol features. PriorityMedium Priority = "medium" // PriorityLow marks tests covering edge cases and optional // behaviors. PriorityLow Priority = "low" )
type PriorityNoMatchError ¶
type PriorityNoMatchError struct {
Priorities []Priority
}
PriorityNoMatchError is returned by Run/RunModule when cfg.Priorities is non-empty but no descriptor in the (already filter-narrowed) catalog declares a Priority in the allow-list. Returned before any I/O beyond catalog construction.
func (*PriorityNoMatchError) Error ¶
func (e *PriorityNoMatchError) Error() string
Error reports the no-match condition with the offending priority allow-list.
type Report ¶
type Report struct {
RunID string
Format string
StartedAt time.Time
Duration time.Duration
Cases []TestCase
}
Report is the aggregate result returned by Run / RunModule per S04 §869-883.
func Run ¶
Run is the binary-facing entry point per S04 §1038-1057. Looks up a Module from cfg.Format via formatFactories then delegates to RunModule. Returns *ConfigError on validation failure (cfg.Format invalid, credential shape invalid, etc.) without performing any network I/O. See S04 §1038-1057.
func RunModule ¶
RunModule is the library-facing entry point per S04 §1064-1103. Pure orchestration: validate → resolve RunID / Logger → enumerate descriptors → newEnv → runOne loop. Returns *ConfigError on validation failure, *FilterNoMatchError / *PriorityNoMatchError on narrowing failure, (partialReport, ctx.Err()) when ctx is cancelled mid-run (per S04 §983-988), or (report, nil) on a completed run (including runs where every test case is fail). See S04 §1064-1103.
func (*Report) Counts ¶
Counts returns the number of pass, fail, and skip cases in r.Cases per S04 §882-883. Panics on a non-canonical Status (anything other than StatusPass / StatusFail / StatusSkip): the constructors enforce canonical values, but TestCase is exported with public fields and Config permits literal init per S04 §698-699, so an external library consumer can construct one by hand. Silently skipping the unknown value would make `pass+fail+skip < len(Cases)` and let Failed misclassify the run, so the boundary fails fast instead.
func (*Report) Failed ¶
Failed reports whether any TestCase in r.Cases has StatusFail. Per S04 §878-880, skipped cases do not constitute failure. Panics on a non-canonical Status — see Counts for the rationale. Walks the full slice so the fail-fast boundary holds even when a StatusFail precedes the non-canonical value: a consumer that gates exit code on Failed() and then renders via Counts() never observes a clean fail verdict followed by a panic trace.
type RunOpts ¶
type RunOpts struct {
// Dir is the absolute path of the working directory the driver runs
// in — the per-test temp directory the S04 §Invocation contract
// working-directory clause requires. The calling test creates it and
// removes it in its own deferred cleanup. A relative path is resolved
// against the runner's own working directory by os/exec, which defeats
// the point, so pass an absolute one.
//
// Empty means the driver inherits the runner's working directory,
// which the clause forbids. Every driver-invoking test should set it.
// Dir alone does not confine a driver that resolves its own root by
// walking up from the working directory; see the S04 §Invocation
// contract working-directory bullet.
Dir string
// Stdin is fed to the driver's stdin. nil = /dev/null.
Stdin io.Reader
// ExtraEnv is appended to the env-var allow-list (see S04
// §Invocation contract). Use for per-test secrets that must be
// passed through (e.g. an npm auth token written to a tmp
// .npmrc by the test). A value whose key matches a recognized
// secret-name pattern (password, token, secret, api_key,
// authorization; case-insensitive) is scrubbed from the captured
// streams the executor records in CLIDetail; a value under any
// other key is NOT scrubbed, so callers must not place a secret
// under an unrecognized key.
ExtraEnv []string
}
RunOpts is the per-invocation override surface for CLIExecutor.Run per S04 §1161-1171. All fields are optional; the zero value is the documented default.
type Status ¶
type Status string
Status is the outcome of a TestCase per S04 §532-538.
const ( // StatusPass marks a TestCase whose assertion held. StatusPass Status = "pass" // StatusFail marks a TestCase whose assertion failed, or that // surfaced a transport or panic outcome the runner converted into // a failure per the spec's failure-prefix conventions. StatusFail Status = "fail" // StatusSkip marks a TestCase the test author chose not to run // (driver unavailable, environment missing, etc.). StatusSkip Status = "skip" )
type TestCase ¶
type TestCase struct {
// Name is the canonical test identifier. Set by the test author at
// construction time (Pass(name), Fail(name, message), etc.); the
// runner preserves it on output.
Name string
// Status is the outcome.
Status Status
// Message is the human-readable diagnostic. Empty for pass;
// carries the skip reason for StatusSkip; carries the
// panic/failure message for StatusFail.
Message string
// StartedAt is the wall-clock UTC start timestamp; populated by
// runOne, not by test authors.
StartedAt time.Time
// Duration is the wall-clock duration the test ran. Zero means
// not measured.
Duration time.Duration
// Detail is the optional failure context. Nil for pass and skip.
Detail *Detail
}
TestCase is the result of executing one test per S04 §540-554.
func Fail ¶
Fail constructs a failing TestCase with no detail per S04 §599. Detail is nil; use FailWithHTTPDetail or FailWithCLIDetail for the shaped variants.
func FailWithCLIDetail ¶
FailWithCLIDetail constructs a failing TestCase with a CLI-only detail envelope per S04 §601 / §606-608. The mutually-exclusive shape is enforced by the signature: callers cannot supply an HTTP branch.
func FailWithDetail ¶
FailWithDetail constructs a failing TestCase with a caller-supplied detail envelope per S04 §602 / §606-613. Panics only when both HTTP and CLI branches are populated; the runner's runOne wrapper converts that panic into a failing TestCase. The envelope is stored as-given: an empty envelope (both branches nil) is preserved, not normalized to a nil Detail.
Detail aliasing: Detail is taken by value, but its HTTP and CLI fields are pointers. The returned TestCase's Detail.HTTP and Detail.CLI alias the same HTTPDetail/CLIDetail values the caller passed in, so a caller that mutates *d.HTTP after the call observes the mutation in the returned TestCase. This differs from FailWithHTTPDetail and FailWithCLIDetail, which take the inner struct by value and isolate it from caller mutations. Use the typed constructors for the isolation guarantee; reach for FailWithDetail only when both branches must remain nil or when the caller is shutting the value down at construction.
func FailWithHTTPDetail ¶
func FailWithHTTPDetail(name, message string, d HTTPDetail) TestCase
FailWithHTTPDetail constructs a failing TestCase with an HTTP-only detail envelope per S04 §600 / §606-608. The mutually-exclusive shape is enforced by the signature: callers cannot supply a CLI branch.
type TestDescriptor ¶
type TestDescriptor struct {
// Name is the canonical test identifier per S04 §510-512 and the
// naming convention at S04 §1066-1079. Format:
// <format>.<category>.<slug> — lowercase, dot-separated, no
// spaces.
Name string
// Priority is the test's declared importance per S04 §513-517,
// taken verbatim from the priority column of the test case
// tables. The runner uses this for cfg.Priorities filtering;
// rendering of priority counts in summaries is the output
// layer's concern.
Priority Priority
// Fn executes the test per S04 §518-520. Must not panic; the
// runner wraps each call in a recover. Must not write to stdout
// or stderr.
Fn func(ctx context.Context, env Env, runID string) TestCase
}
TestDescriptor declares one test per S04 §509-521. The runner invokes Fn under a panic-recovering wrapper (runOne); test authors MUST NOT panic from Fn directly and MUST NOT write to stdout or stderr.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package cliexec provides the concrete Executor that implements the conformance.CLIExecutor contract: it resolves an external driver binary on PATH, pins the driver version at construction time, and invokes the driver through real exec.CommandContext with the fixed invocation contract from S04 §CLI drivers (closed env allow-list, RunOpts.Dir working directory, RunOpts.Stdin policy, argv prefixing with the resolved binary path, a SIGTERM→5s→SIGKILL grace window, 16 KiB capture caps with 4 KiB tail truncation, and argv/stream scrubbing of secret-bearing values).
|
Package cliexec provides the concrete Executor that implements the conformance.CLIExecutor contract: it resolves an external driver binary on PATH, pins the driver version at construction time, and invokes the driver through real exec.CommandContext with the fixed invocation contract from S04 §CLI drivers (closed env allow-list, RunOpts.Dir working directory, RunOpts.Stdin policy, argv prefixing with the resolved binary path, a SIGTERM→5s→SIGKILL grace window, 16 KiB capture caps with 4 KiB tail truncation, and argv/stream scrubbing of secret-bearing values). |
|
internal/echodriver
command
Command echodriver is a test fixture for pkg/conformance/cliexec.
|
Command echodriver is a test fixture for pkg/conformance/cliexec. |
|
internal
|
|
|
catalogparse
Package catalogparse parses a per-format catalog markdown document (the byte contents of one docs/catalog/<format>.md file) into the set of slug values whose Status is not "optional".
|
Package catalogparse parses a per-format catalog markdown document (the byte contents of one docs/catalog/<format>.md file) into the set of slug values whose Status is not "optional". |
|
inventorytest
Package inventorytest holds the catalog-inventory guard helpers shared by the maven, npm, and oci format packages.
|
Package inventorytest holds the catalog-inventory guard helpers shared by the maven, npm, and oci format packages. |
|
testfake
Package testfake provides shared test fixtures for the pkg/conformance test suite.
|
Package testfake provides shared test fixtures for the pkg/conformance test suite. |
|
Package maven provides the Maven format implementation of the conformance Module interface defined in S04 §Module interface (§432-464).
|
Package maven provides the Maven format implementation of the conformance Module interface defined in S04 §Module interface (§432-464). |
|
internal/fixture
Package fixture builds the Maven artifacts every release-publish test ships: a POM, a settings.xml, a synthetic JAR, and a maven-metadata.xml document for either metadata level.
|
Package fixture builds the Maven artifacts every release-publish test ships: a POM, a settings.xml, a synthetic JAR, and a maven-metadata.xml document for either metadata level. |
|
internal/mvnfake
command
Command mvnfake is a test fixture for pkg/conformance/maven's cliExec wrapper.
|
Command mvnfake is a test fixture for pkg/conformance/maven's cliExec wrapper. |
|
Package npm provides the npm format implementation of the conformance Module interface defined in S04 §Module interface (§432-464).
|
Package npm provides the npm format implementation of the conformance Module interface defined in S04 §Module interface (§432-464). |
|
internal/fixture
Package fixture holds internal, driver-only fixture builders for pkg/conformance/npm.
|
Package fixture holds internal, driver-only fixture builders for pkg/conformance/npm. |
|
Package oci provides the OCI format implementation of the conformance Module interface defined in S04 §Module interface (§432-464).
|
Package oci provides the OCI format implementation of the conformance Module interface defined in S04 §Module interface (§432-464). |
|
internal/cranefake
command
Command cranefake is a test fixture for pkg/conformance/oci's cliExec wrapper.
|
Command cranefake is a test fixture for pkg/conformance/oci's cliExec wrapper. |
|
internal/fixture
Package fixture builds the synthetic OCI artifacts every push test ships: a config blob, zero or more layer blobs (as gzipped tarballs), an optional subject descriptor, and an image manifest referencing them (S07 OCI plan §Research Findings / Manifest, config, and blob fixtures).
|
Package fixture builds the synthetic OCI artifacts every push test ships: a config blob, zero or more layer blobs (as gzipped tarballs), an optional subject descriptor, and an image manifest referencing them (S07 OCI plan §Research Findings / Manifest, config, and blob fixtures). |
|
Package redact implements the field-name, content-scan, and argv scrubbing primitives that enforce S04 §Security Considerations: secret-bearing values must be replaced with the literal sentinel "[REDACTED]" before any log entry, failure-detail field, or captured argv element can reach a consumer.
|
Package redact implements the field-name, content-scan, and argv scrubbing primitives that enforce S04 §Security Considerations: secret-bearing values must be replaced with the literal sentinel "[REDACTED]" before any log entry, failure-detail field, or captured argv element can reach a consumer. |