NAME

run-integration.pl - blank-environment Docker integration runner for a host-built tarball

SYNOPSIS

perl /opt/integration/run-integration.pl

DESCRIPTION

This script expects a host-built Developer-Dashboard tarball to be mounted into the container. It extracts that tarball to a temporary source tree, stages a versioned local tarball copy for cpanm so the install and its test phase stay on the host-built artifact rather than drifting to a CPAN lookup, and then exercises the installed dashboard CLI and web runtime against a fake project after the source-tree test and coverage gates have already run. The installed-runtime help check requires the concise built-in command index and an API catalog entry rather than the old full-module POD dump. It also checks that d2 version matches the installed tarball, d2 of grep --help reaches GNU grep, and native Docker Compose help arguments survive the installed short entrypoint unchanged.

FUNCTIONS

main, _run_shell, _wait_for_http, _run_browser_dom, _browser_command, _browser_binary, _single_subdir, _decode_json_tail, _reset_dir, _write_text, _read_text, _trim, _shell_quote, _assert, _assert_match

Run and validate the host-built-tarball integration workflow.

PURPOSE

This integration script drives environment overrides and persisted configuration behavior in an environment that is closer to a real install than the unit tests. Read it when you need the exact orchestration steps, external tools, and explicit assertions for that broader check.

WHY IT EXISTS

It exists because environment overrides and persisted configuration behavior cannot be trusted from isolated unit coverage alone. The repository needs one place that shows how the bigger environment is created and what success looks like there.

WHEN TO USE

Use this file when validating environment overrides and persisted configuration behavior, when the blank-environment or browser-smoke docs change, or when a release verification step fails outside the unit-test layer.

HOW TO USE

Run it directly from the repository root in the environment it expects, read the emitted paths and logs on failure, and prefer the documented wrapper path when one exists so the integration environment stays reproducible.

WHAT USES IT

Release verification, integration checklists, and contributors diagnosing environment-specific failures use this file.

EXAMPLES

Example 1:

integration/blank-env/run-host-integration.sh

Use the host-side wrapper when you want the repository-managed Docker launch path instead of entering the container manually.

Example 2:

DASHBOARD_TARBALL_IN_CONTAINER=/artifacts/Developer-Dashboard-2.17.tar.gz perl integration/blank-env/run-integration.pl

Point the integration runner at one concrete tarball path inside the container.

Example 3:

perl integration/blank-env/run-integration.pl

Run this integration helper directly from the repository root.

Example 4:

prove -lv t/13-integration-assets.t

Check the lightweight asset guardrails before launching the heavier integration path.

Example 5:

d2 version
d2 of grep --help
d2 docker compose config --help

These installed-command checks are run by the integration harness after cpanm finishes, using a fake Docker executable for the Compose passthrough assertions.