conformance

package
v1.64.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2026 License: MIT Imports: 16 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func ContextWithLogger

func ContextWithLogger(ctx context.Context, log *slog.Logger) context.Context

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

func GenerateRunID() (string, error)

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

func LoggerFromContext(ctx context.Context) *slog.Logger

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

func (c Config) Validate() error

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

type ConfigError struct {
	Field  string
	Reason string
}

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

func Run(ctx context.Context, cfg Config) (*Report, error)

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

func RunModule(ctx context.Context, m Module, cfg Config) (*Report, error)

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

func (r *Report) Counts() (pass, fail, skip int)

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

func (r *Report) Failed() bool

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

func Fail(name, message string) TestCase

Fail constructs a failing TestCase with no detail per S04 §599. Detail is nil; use FailWithHTTPDetail or FailWithCLIDetail for the shaped variants.

func FailWithCLIDetail

func FailWithCLIDetail(name, message string, d CLIDetail) TestCase

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

func FailWithDetail(name, message string, d Detail) TestCase

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.

func Pass

func Pass(name string) TestCase

Pass constructs a passing TestCase per S04 §598. Message is empty and Detail is nil per S04 §540-554. StartedAt is left zero; runOne overlays the wall-clock UTC start timestamp (S04 §615-617).

func Skip

func Skip(name, reason string) TestCase

Skip constructs a skipped TestCase per S04 §603. Message carries the skip reason (S04 §540-554); Detail is nil.

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.
npm
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.
oci
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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL