testsupport

package
v0.6.1 Latest Latest
Warning

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

Go to latest
Published: Jul 3, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package testsupport provides shared test-fixture helpers used across awf's test suites: TestMain HOME isolation, project-config scaffolding, ADR frontmatter fixtures, file-writing primitives, and the seam-swap idiom. It is a leaf package — only the Go standard library may be imported here (see the gitfixture subpackage for the go-git-dependent helpers) — so it is safe to import from any package's tests without risking an import cycle (ADR-0044). deps_test.go enforces the zero-internal-deps constraint mechanically.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ADR

func ADR(status string, opts ...ADROption) string

ADR builds a ---delimited ADR frontmatter fixture as a raw string: a status field plus any of date/tags/domains/retires_invariants/superseded_by supplied via opts, a "# ADR-<title>" heading, and an optional trailing body. It intentionally does not import internal/adr and marshal its real frontmatter struct — doing so would break this package's zero-internal-deps invariant (see ADR-0044's Consequences).

func RunIsolated

func RunIsolated(m *testing.M, prefix string) int

RunIsolated gives m a throwaway HOME (os.MkdirTemp(prefix)) for the duration of its run, so go-git's global-gitignore read finds nothing belonging to the developer's real machine, then removes the temp HOME and returns the run's exit code for the caller to pass to os.Exit:

func TestMain(m *testing.M) { os.Exit(testsupport.RunIsolated(m, "awf-test-home")) }

func SwapVar

func SwapVar[T any](t *testing.T, seam *T, val T)

SwapVar overrides *seam with val for the duration of the test, restoring the original value via t.Cleanup. Covers the swapGetwd/swapHasGoMod/ forceNonInteractive-shaped idiom: a *T package-private seam variable reassigned for one test, in the same package as the test. Does not cover internal/adr's swapNow, an external-test-package accessor of a different shape (ADR-0044 Context).

func WriteAwfConfig

func WriteAwfConfig(t *testing.T, root, yamlContent string)

WriteAwfConfig writes <root>/.awf/config.yaml with the given content — the project-fixture seed step every scaffold-style helper across awf's test suites starts from.

func WriteFile

func WriteFile(t *testing.T, path, content string)

WriteFile creates path's parent directories and writes content to it, failing the test on either error. The primitive every other file-writing helper in this package is built from.

func WriteGoModule

func WriteGoModule(t *testing.T, dir, modPath, srcBody string)

WriteGoModule writes a minimal go.mod (pinned to this repo's Go toolchain version) and an f.go containing srcBody under dir.

func WriteProfile

func WriteProfile(t *testing.T, dir, body string) string

WriteProfile writes dir/cover.out with a "mode: set\n" prefix followed by body, returning the file's path.

Types

type ADROption

type ADROption func(*adrOpts)

ADROption configures an ADR fixture built by ADR.

func WithBody

func WithBody(body string) ADROption

WithBody appends raw markdown (e.g. "## Context\nx\n") after the title heading.

func WithDate

func WithDate(date string) ADROption

WithDate sets the frontmatter date field. Omitted from the frontmatter entirely when never called — some fixtures deliberately carry no date.

func WithDomains

func WithDomains(domains ...string) ADROption

WithDomains sets the frontmatter domains array.

func WithRetiresInvariants

func WithRetiresInvariants(slugs ...string) ADROption

WithRetiresInvariants sets the frontmatter retires_invariants array.

func WithSupersededBy

func WithSupersededBy(number string) ADROption

WithSupersededBy sets the frontmatter superseded_by field to an ADR number, e.g. "0002" — emitted YAML-quoted by ADR. Omitted from the frontmatter entirely when never called.

func WithTags

func WithTags(tags ...string) ADROption

WithTags sets the frontmatter tags array.

func WithTitle

func WithTitle(title string) ADROption

WithTitle sets the ADR's number+title heading text — the part after "# ADR-", e.g. "0001: My Title". Defaults to "0001: T".

Directories

Path Synopsis
Package gitfixture provides go-git-backed test fixtures (a fixed commit signature, a fresh repo, and a write+commit helper) for awf's test suites that need a real git repository.
Package gitfixture provides go-git-backed test fixtures (a fixed commit signature, a fresh repo, and a write+commit helper) for awf's test suites that need a real git repository.

Jump to

Keyboard shortcuts

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