Test success 1m 55s
Annotations 1
warning
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-go@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
- Current runner version: 'v0.6.0'
- GITHUB_TOKEN Permissions
- Contents: read
- Metadata: read
- Secret source: Actions
- Cache mode: write
- Prepare workflow directory
- Prepare all required actions
- Getting action download info
- Download action repository 'actions/checkout@v6' (SHA:d23441a48e516b6c34aea4fa41551a30e30af803)
- Download action repository 'actions/setup-go@v5' (SHA:40f1582b2485089dde7abd97c1529aa768e1baff)
- Complete job name: Test
- Run actions/checkout@v6
- with:
- repository: bnema/gordon
- token: ***
- ssh-strict: true
- ssh-user: git
- persist-credentials: true
- clean: true
- sparse-checkout-cone-mode: true
- fetch-depth: 1
- fetch-tags: false
- show-progress: true
- lfs: false
- submodules: false
- set-safe-directory: true
- allow-unsafe-pr-checkout: false
- Syncing repository: bnema/gordon
- Getting Git version info
- Working directory is '/home/runner/work/gordon/gordon'
- [command]/usr/bin/git version
- git version 2.53.0
- Temporarily overriding HOME='/home/runner/work/_temp/25fdccd5-3a16-435c-92f5-ec443334e57f' before making global git config changes
- Adding repository directory to the temporary git global config as a safe directory
- [command]/usr/bin/git config --global --add safe.directory /home/runner/work/gordon/gordon
- Deleting the contents of '/home/runner/work/gordon/gordon'
- Determining repository object format
- Initializing the repository
- [command]/usr/bin/git init /home/runner/work/gordon/gordon
- hint: Using 'master' as the name for the initial branch. This default branch name
- hint: will change to "main" in Git 3.0. To configure the initial branch name
- hint: to use in all of your new repositories, which will suppress this warning,
- hint: call:
- hint:
- hint: git config --global init.defaultBranch <name>
- hint:
- hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
- hint: 'development'. The just-created branch can be renamed via this command:
- hint:
- hint: git branch -m <name>
- hint:
- hint: Disable this message with "git config set advice.defaultBranchName false"
- Initialized empty Git repository in /home/runner/work/gordon/gordon/.git/
- [command]/usr/bin/git remote add origin http://ermite:7341/bnema/gordon
- Disabling automatic garbage collection
- [command]/usr/bin/git config --local gc.auto 0
- Setting up auth
- Removing SSH command configuration
- [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
- [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
- Removing HTTP extra header
- [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/ermite\:7341\/\.extraheader
- [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/ermite\:7341\/\.extraheader' && git config --local --unset-all 'http.http://ermite:7341/.extraheader' || :"
- Removing includeIf entries pointing to credentials config files
- [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
- [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
- [command]/usr/bin/git config --file /home/runner/work/_temp/git-credentials-c43cfe16-e684-47c2-9fbb-5666bbf66959.config http.http://ermite:7341/.extraheader AUTHORIZATION: basic ***
- [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/gordon/gordon/.git.path /home/runner/work/_temp/git-credentials-c43cfe16-e684-47c2-9fbb-5666bbf66959.config
- [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/gordon/gordon/.git/worktrees/*.path /home/runner/work/_temp/git-credentials-c43cfe16-e684-47c2-9fbb-5666bbf66959.config
- [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-c43cfe16-e684-47c2-9fbb-5666bbf66959.config
- [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-c43cfe16-e684-47c2-9fbb-5666bbf66959.config
- Fetching the repository
- [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +32074ce8f32652bcf1c033f20eda79fab059088e:refs/remotes/pull/1/merge
- From http://ermite:7341/bnema/gordon
- * [new ref] 32074ce8f32652bcf1c033f20eda79fab059088e -> pull/1/merge
- Determining the checkout info
- [command]/usr/bin/git sparse-checkout disable
- [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
- Checking out the ref
- [command]/usr/bin/git checkout --progress --force refs/remotes/pull/1/merge
- Note: switching to 'refs/remotes/pull/1/merge'.
- You are in 'detached HEAD' state. You can look around, make experimental
- changes and commit them, and you can discard any commits you make in this
- state without impacting any branches by switching back to a branch.
- If you want to create a new branch to retain commits you create, you may
- do so (now or later) by using -c with the switch command. Example:
- git switch -c <new-branch-name>
- Or undo this operation with:
- git switch -
- Turn off this advice by setting config variable advice.detachedHead to false
- HEAD is now at 32074ce Merge 8345e76c4726a85985a2d128c0ce04eb3157c313 into c9e9163d8e10ed27f6d17474eb94538be54e665b
- [command]/usr/bin/git log -1 --format=%H
- 32074ce8f32652bcf1c033f20eda79fab059088e
- Run actions/setup-go@v5
- with:
- go-version: 1.27.x
- cache: true
- check-latest: false
- Setup go version spec 1.27.x
- (node:402) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
- (Use `node --trace-deprecation ...` to show where the warning was created)
- Found in cache @ /opt/hostedtoolcache/go/1.27.3/x64
- Added go to the path
- Successfully set up Go version 1.27.x
- [command]/opt/hostedtoolcache/go/1.27.3/x64/bin/go env GOMODCACHE
- [command]/opt/hostedtoolcache/go/1.27.3/x64/bin/go env GOCACHE
- /home/runner/go/pkg/mod
- /home/runner/.cache/go-build
- Cache Size: ~275 MB (288821446 B)
- [command]/usr/bin/tar -xf /home/runner/work/_temp/eb119813-cec3-4c5a-9588-b5550c82796e/cache.tgz -P -C /home/runner/work/gordon/gordon -z
- Cache restored successfully
- Cache restored from key: setup-go-Linux-x64-undefined-go-1.27.3-437aff1a951869a25a3f14777df461869b8e34e0c831a9cc78161d339cef3be7
- go version go1.27.3 linux/amd64
- go env
- AR='ar'
- CC='gcc'
- CGO_CFLAGS='-O2 -g'
- CGO_CPPFLAGS=''
- CGO_CXXFLAGS='-O2 -g'
- CGO_ENABLED='1'
- CGO_FFLAGS='-O2 -g'
- CGO_LDFLAGS='-O2 -g'
- CXX='g++'
- GCCGO='gccgo'
- GO111MODULE=''
- GOAMD64='v1'
- GOARCH='amd64'
- GOAUTH='netrc'
- GOBIN='/home/runner/go/bin'
- GOCACHE='/home/runner/.cache/go-build'
- GOCACHEPROG=''
- GODEBUG=''
- GOENV='/home/runner/.config/go/env'
- GOEXE=''
- GOEXPERIMENT=''
- GOFIPS140='off'
- GOFLAGS=''
- GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2030328743=/tmp/go-build -gno-record-gcc-switches'
- GOHOSTARCH='amd64'
- GOHOSTOS='linux'
- GOINSECURE=''
- GOMOD='/home/runner/work/gordon/gordon/go.mod'
- GOMODCACHE='/home/runner/go/pkg/mod'
- GONOPROXY=''
- GONOSUMDB=''
- GOOS='linux'
- GOPACKAGESDRIVER=''
- GOPATH='/home/runner/go'
- GOPRIVATE=''
- GOPROXY='https://proxy.golang.org,direct'
- GOROOT='/opt/hostedtoolcache/go/1.27.3/x64'
- GOSUMDB='sum.golang.org'
- GOTELEMETRY='local'
- GOTELEMETRYDIR='/home/runner/.config/go/telemetry'
- GOTMPDIR=''
- GOTOOLCHAIN='auto'
- GOTOOLDIR='/opt/hostedtoolcache/go/1.27.3/x64/pkg/tool/linux_amd64'
- GOVCS=''
- GOVERSION='go1.27.3'
- GOWORK=''
- PKG_CONFIG='pkg-config'
- Run go test -race -v ./...
- <U+001B>[36;1mgo test -race -v ./...<U+001B>[0m
- shell: /usr/bin/bash -e {0}
- ? github.com/bnema/gordon [no test files]
- === RUN TestAppErrorEnvelopeKeys
- --- PASS: TestAppErrorEnvelopeKeys (0.00s)
- === RUN TestAppApplyResponseKeys
- --- PASS: TestAppApplyResponseKeys (0.00s)
- === RUN TestAppDeployResponseKeys
- --- PASS: TestAppDeployResponseKeys (0.00s)
- === RUN TestAppShowResponseKeys
- --- PASS: TestAppShowResponseKeys (0.00s)
- === RUN TestAppResponsesCarryNoSecretValues
- --- PASS: TestAppResponsesCarryNoSecretValues (0.00s)
- === RUN TestBackupDTOsUseAppIdentity
- === RUN TestBackupDTOsUseAppIdentity/database_job
- === RUN TestBackupDTOsUseAppIdentity/volume_job
- --- PASS: TestBackupDTOsUseAppIdentity (0.00s)
- --- PASS: TestBackupDTOsUseAppIdentity/database_job (0.00s)
- --- PASS: TestBackupDTOsUseAppIdentity/volume_job (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/dto 1.020s
- === RUN TestParse_SecretForms
- === RUN TestParse_SecretForms/short_form
- === RUN TestParse_SecretForms/table_name_only
- === RUN TestParse_SecretForms/table_env
- === RUN TestParse_SecretForms/table_file
- === RUN TestParse_SecretForms/sub-table
- === RUN TestParse_SecretForms/mixed
- --- PASS: TestParse_SecretForms (0.00s)
- --- PASS: TestParse_SecretForms/short_form (0.00s)
- --- PASS: TestParse_SecretForms/table_name_only (0.00s)
- --- PASS: TestParse_SecretForms/table_env (0.00s)
- --- PASS: TestParse_SecretForms/table_file (0.00s)
- --- PASS: TestParse_SecretForms/sub-table (0.00s)
- --- PASS: TestParse_SecretForms/mixed (0.00s)
- === RUN TestParse_NoSecretsKeepsEmptyMap
- --- PASS: TestParse_NoSecretsKeepsEmptyMap (0.00s)
- === RUN TestParse_SecretFormsInvalid
- === RUN TestParse_SecretFormsInvalid/bad_as
- === RUN TestParse_SecretFormsInvalid/empty_as
- === RUN TestParse_SecretFormsInvalid/as_not_string
- === RUN TestParse_SecretFormsInvalid/missing_name
- === RUN TestParse_SecretFormsInvalid/name_not_string
- === RUN TestParse_SecretFormsInvalid/extra_key
- === RUN TestParse_SecretFormsInvalid/integer_value
- === RUN TestParse_SecretFormsInvalid/array_value
- === RUN TestParse_SecretFormsInvalid/file_key_collision
- --- PASS: TestParse_SecretFormsInvalid (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/bad_as (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/empty_as (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/as_not_string (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/missing_name (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/name_not_string (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/extra_key (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/integer_value (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/array_value (0.00s)
- --- PASS: TestParse_SecretFormsInvalid/file_key_collision (0.00s)
- === RUN TestParse_ValidWeb
- --- PASS: TestParse_ValidWeb (0.00s)
- === RUN TestParse_SharedNetwork
- --- PASS: TestParse_SharedNetwork (0.00s)
- === RUN TestParse_FileNameMismatchIsWarning
- --- PASS: TestParse_FileNameMismatchIsWarning (0.00s)
- === RUN TestParse_MissingTagNormalizesToLatest
- --- PASS: TestParse_MissingTagNormalizesToLatest (0.00s)
- === RUN TestParse_UnknownFieldsRejected
- === RUN TestParse_UnknownFieldsRejected/top_level
- === RUN TestParse_UnknownFieldsRejected/service
- === RUN TestParse_UnknownFieldsRejected/readiness
- === RUN TestParse_UnknownFieldsRejected/http
- --- PASS: TestParse_UnknownFieldsRejected (0.00s)
- --- PASS: TestParse_UnknownFieldsRejected/top_level (0.00s)
- --- PASS: TestParse_UnknownFieldsRejected/service (0.00s)
- --- PASS: TestParse_UnknownFieldsRejected/readiness (0.00s)
- --- PASS: TestParse_UnknownFieldsRejected/http (0.00s)
- === RUN TestParse_OldSyntaxRejected
- === RUN TestParse_OldSyntaxRejected/legacy_service_array
- === RUN TestParse_OldSyntaxRejected/legacy_plural_service_array
- === RUN TestParse_OldSyntaxRejected/service_name_as_field
- --- PASS: TestParse_OldSyntaxRejected (0.00s)
- --- PASS: TestParse_OldSyntaxRejected/legacy_service_array (0.00s)
- --- PASS: TestParse_OldSyntaxRejected/legacy_plural_service_array (0.00s)
- --- PASS: TestParse_OldSyntaxRejected/service_name_as_field (0.00s)
- === RUN TestParse_RetiredArraySyntaxHintIsActionable
- === RUN TestParse_RetiredArraySyntaxHintIsActionable/singular
- === RUN TestParse_RetiredArraySyntaxHintIsActionable/plural
- --- PASS: TestParse_RetiredArraySyntaxHintIsActionable (0.00s)
- --- PASS: TestParse_RetiredArraySyntaxHintIsActionable/singular (0.00s)
- --- PASS: TestParse_RetiredArraySyntaxHintIsActionable/plural (0.00s)
- === RUN TestParse_NonArrayTablesKeepPlainDiagnostic
- === RUN TestParse_NonArrayTablesKeepPlainDiagnostic/service_table
- === RUN TestParse_NonArrayTablesKeepPlainDiagnostic/service_scalar
- === RUN TestParse_NonArrayTablesKeepPlainDiagnostic/services_string_array
- --- PASS: TestParse_NonArrayTablesKeepPlainDiagnostic (0.00s)
- --- PASS: TestParse_NonArrayTablesKeepPlainDiagnostic/service_table (0.00s)
- --- PASS: TestParse_NonArrayTablesKeepPlainDiagnostic/service_scalar (0.00s)
- --- PASS: TestParse_NonArrayTablesKeepPlainDiagnostic/services_string_array (0.00s)
- === RUN TestParse_UnknownNestedFieldRejected
- === RUN TestParse_UnknownNestedFieldRejected/unknown_protocol_table
- === RUN TestParse_UnknownNestedFieldRejected/unknown_nested_table
- --- PASS: TestParse_UnknownNestedFieldRejected (0.00s)
- --- PASS: TestParse_UnknownNestedFieldRejected/unknown_protocol_table (0.00s)
- --- PASS: TestParse_UnknownNestedFieldRejected/unknown_nested_table (0.00s)
- === RUN TestParse_QuotedDottedServiceKey
- --- PASS: TestParse_QuotedDottedServiceKey (0.00s)
- === RUN TestParse_UnquotedDottedKeyRejected
- --- PASS: TestParse_UnquotedDottedKeyRejected (0.00s)
- === RUN TestParse_DuplicateServiceTableRejected
- --- PASS: TestParse_DuplicateServiceTableRejected (0.00s)
- === RUN TestParse_ServiceOrderDeterministic
- --- PASS: TestParse_ServiceOrderDeterministic (0.00s)
- === RUN TestParse_ServiceEnv
- --- PASS: TestParse_ServiceEnv (0.00s)
- === RUN TestParse_ServiceEnvInvalid
- === RUN TestParse_ServiceEnvInvalid/secret_reference
- === RUN TestParse_ServiceEnvInvalid/secret_key_collision
- === RUN TestParse_ServiceEnvInvalid/newline
- --- PASS: TestParse_ServiceEnvInvalid (0.00s)
- --- PASS: TestParse_ServiceEnvInvalid/secret_reference (0.00s)
- --- PASS: TestParse_ServiceEnvInvalid/secret_key_collision (0.00s)
- --- PASS: TestParse_ServiceEnvInvalid/newline (0.00s)
- === RUN TestParse_Names
- === RUN TestParse_Names/bad_app
- === RUN TestParse_Names/double_dash_app
- === RUN TestParse_Names/reserved_app
- === RUN TestParse_Names/no_services
- === RUN TestParse_Names/dup_service
- === RUN TestParse_Names/dup_service_case
- === RUN TestParse_Names/normalized_collision
- === RUN TestParse_Names/replicas_rejected
- === RUN TestParse_Names/volume_double_dash
- === RUN TestParse_Names/shared_volume
- === RUN TestParse_Names/env_secret_key_collision
- === RUN TestParse_Names/secret_ref_in_env
- --- PASS: TestParse_Names (0.00s)
- --- PASS: TestParse_Names/bad_app (0.00s)
- --- PASS: TestParse_Names/double_dash_app (0.00s)
- --- PASS: TestParse_Names/reserved_app (0.00s)
- --- PASS: TestParse_Names/no_services (0.00s)
- --- PASS: TestParse_Names/dup_service (0.00s)
- --- PASS: TestParse_Names/dup_service_case (0.00s)
- --- PASS: TestParse_Names/normalized_collision (0.00s)
- --- PASS: TestParse_Names/replicas_rejected (0.00s)
- --- PASS: TestParse_Names/volume_double_dash (0.00s)
- --- PASS: TestParse_Names/shared_volume (0.00s)
- --- PASS: TestParse_Names/env_secret_key_collision (0.00s)
- --- PASS: TestParse_Names/secret_ref_in_env (0.00s)
- === RUN TestParse_Readiness
- === RUN TestParse_Readiness/bad_type
- === RUN TestParse_Readiness/log_needs_path
- === RUN TestParse_Readiness/http_needs_path
- === RUN TestParse_Readiness/udp_tcp_rejected
- === RUN TestParse_Readiness/multi_tcp_needs_port
- === RUN TestParse_Readiness/bad_port_ref
- === RUN TestParse_Readiness/bad_timeout
- --- PASS: TestParse_Readiness (0.00s)
- --- PASS: TestParse_Readiness/bad_type (0.00s)
- --- PASS: TestParse_Readiness/log_needs_path (0.00s)
- --- PASS: TestParse_Readiness/http_needs_path (0.00s)
- --- PASS: TestParse_Readiness/udp_tcp_rejected (0.00s)
- --- PASS: TestParse_Readiness/multi_tcp_needs_port (0.00s)
- --- PASS: TestParse_Readiness/bad_port_ref (0.00s)
- --- PASS: TestParse_Readiness/bad_timeout (0.00s)
- === RUN TestParse_Interfaces
- === RUN TestParse_Interfaces/tcp_needs_entrypoint
- === RUN TestParse_Interfaces/publish_hostname
- === RUN TestParse_Interfaces/rcon_table_rejected
- === RUN TestParse_Interfaces/bad_host
- --- PASS: TestParse_Interfaces (0.00s)
- --- PASS: TestParse_Interfaces/tcp_needs_entrypoint (0.00s)
- --- PASS: TestParse_Interfaces/publish_hostname (0.00s)
- --- PASS: TestParse_Interfaces/rcon_table_rejected (0.00s)
- --- PASS: TestParse_Interfaces/bad_host (0.00s)
- === RUN TestParse_Backups
- --- PASS: TestParse_Backups (0.00s)
- === RUN TestParse_GameAndStagingExamples
- --- PASS: TestParse_GameAndStagingExamples (0.00s)
- === RUN TestParse_NoFileEnvSecretReads
- --- PASS: TestParse_NoFileEnvSecretReads (0.00s)
- === RUN TestParse_Binds
- --- PASS: TestParse_Binds (0.00s)
- === RUN TestParse_BindDestinationRejected
- --- PASS: TestParse_BindDestinationRejected (0.00s)
- === RUN TestParse_Devices
- --- PASS: TestParse_Devices (0.00s)
- === RUN TestParse_DevicesWrongType
- --- PASS: TestParse_DevicesWrongType (0.00s)
- === RUN TestParse_DevicesMalformedRejected
- --- PASS: TestParse_DevicesMalformedRejected (0.00s)
- === RUN TestParse_DevicesDuplicateRejected
- --- PASS: TestParse_DevicesDuplicateRejected (0.00s)
- === RUN TestParse_UnknownGPUFieldRejected
- --- PASS: TestParse_UnknownGPUFieldRejected (0.00s)
- === RUN TestParse_TelemetryLogsPrecedence
- --- PASS: TestParse_TelemetryLogsPrecedence (0.00s)
- === RUN TestParse_TelemetryLogsDefaultOn
- --- PASS: TestParse_TelemetryLogsDefaultOn (0.00s)
- === RUN TestParse_Capabilities
- --- PASS: TestParse_Capabilities (0.00s)
- === RUN TestParse_CapabilitiesWrongType
- --- PASS: TestParse_CapabilitiesWrongType (0.00s)
- === RUN TestParse_CapabilitiesMalformedAndDuplicateRejected
- --- PASS: TestParse_CapabilitiesMalformedAndDuplicateRejected (0.00s)
- === RUN TestParse_VisibilityNormalization
- === RUN TestParse_VisibilityNormalization/absent_visibility_stays_public_with_auto_tls
- === RUN TestParse_VisibilityNormalization/explicit_internal_keeps_tls_absent_and_has_no_host
- === RUN TestParse_VisibilityNormalization/explicit_public_normalizes_to_auto_tls
- --- PASS: TestParse_VisibilityNormalization (0.00s)
- --- PASS: TestParse_VisibilityNormalization/absent_visibility_stays_public_with_auto_tls (0.00s)
- --- PASS: TestParse_VisibilityNormalization/explicit_internal_keeps_tls_absent_and_has_no_host (0.00s)
- --- PASS: TestParse_VisibilityNormalization/explicit_public_normalizes_to_auto_tls (0.00s)
- === RUN TestParse_VisibilityRejections
- === RUN TestParse_VisibilityRejections/internal_forbids_host
- === RUN TestParse_VisibilityRejections/internal_forbids_tls
- === RUN TestParse_VisibilityRejections/internal_forbids_explicitly_empty_tls
- === RUN TestParse_VisibilityRejections/unknown_visibility_value
- === RUN TestParse_VisibilityRejections/internal_port_also_published_as_tcp
- --- PASS: TestParse_VisibilityRejections (0.00s)
- --- PASS: TestParse_VisibilityRejections/internal_forbids_host (0.00s)
- --- PASS: TestParse_VisibilityRejections/internal_forbids_tls (0.00s)
- --- PASS: TestParse_VisibilityRejections/internal_forbids_explicitly_empty_tls (0.00s)
- --- PASS: TestParse_VisibilityRejections/unknown_visibility_value (0.00s)
- --- PASS: TestParse_VisibilityRejections/internal_port_also_published_as_tcp (0.00s)
- === RUN TestParse_VisibilityUnknownFieldStillRejected
- --- PASS: TestParse_VisibilityUnknownFieldStillRejected (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/appmanifest 1.050s
- === RUN TestRunAppsApply_DeployAcceptedPollsToSuccess
- --- PASS: TestRunAppsApply_DeployAcceptedPollsToSuccess (0.00s)
- === RUN TestRunAppsApply_DeployAcceptedNoSecondMutation
- --- PASS: TestRunAppsApply_DeployAcceptedNoSecondMutation (0.00s)
- === RUN TestRunAppsApply_DeployAcceptedUnchangedStateNotReprinted
- --- PASS: TestRunAppsApply_DeployAcceptedUnchangedStateNotReprinted (0.01s)
- === RUN TestRunAppsApply_DeployAcceptedPartialFailsButKeepsApply
- --- PASS: TestRunAppsApply_DeployAcceptedPartialFailsButKeepsApply (0.00s)
- === RUN TestRunAppsApply_DeployAcceptedJSONKeepsStdoutSingleCombinedDocument
- --- PASS: TestRunAppsApply_DeployAcceptedJSONKeepsStdoutSingleCombinedDocument (0.00s)
- === RUN TestRunAppsApply_DeployAcceptedJSONFailureKeepsApplyDocument
- --- PASS: TestRunAppsApply_DeployAcceptedJSONFailureKeepsApplyDocument (0.00s)
- === RUN TestRunAppsApply_DeployAcceptedCancelPrintsResume
- --- PASS: TestRunAppsApply_DeployAcceptedCancelPrintsResume (0.00s)
- === RUN TestRunAppsApply_DeployAcceptedCancelKeepsJSONStdoutClean
- --- PASS: TestRunAppsApply_DeployAcceptedCancelKeepsJSONStdoutClean (0.00s)
- === RUN TestRunAppsApply_DryRunOmitsEmptyRevisionAndRendersDiff
- --- PASS: TestRunAppsApply_DryRunOmitsEmptyRevisionAndRendersDiff (0.00s)
- === RUN TestRunAppsApply_NoopOmitsEmptyRevision
- --- PASS: TestRunAppsApply_NoopOmitsEmptyRevision (0.00s)
- === RUN TestRunAppLogs_RejectsJSONWithFollow
- --- PASS: TestRunAppLogs_RejectsJSONWithFollow (0.00s)
- === RUN TestAppLogRef_ZeroServicesAccurateError
- --- PASS: TestAppLogRef_ZeroServicesAccurateError (0.00s)
- === RUN TestRunStatusCmd_AppsLabelAndSortedHelpers
- --- PASS: TestRunStatusCmd_AppsLabelAndSortedHelpers (0.00s)
- === RUN TestSharedCommandLocalAdminComposition_Status
- --- PASS: TestSharedCommandLocalAdminComposition_Status (0.01s)
- === RUN TestAppLocalAdminComposition_EndToEnd
- --- PASS: TestAppLocalAdminComposition_EndToEnd (0.01s)
- === RUN TestResolveAppPlane_UsesLocalAdminSocket
- --- PASS: TestResolveAppPlane_UsesLocalAdminSocket (0.00s)
- === RUN TestControlPlane_LocalAndRemoteDTOParity
- --- PASS: TestControlPlane_LocalAndRemoteDTOParity (0.01s)
- === RUN TestResolveAppPlane_ExplicitRemoteNeverProbesLocal
- === RUN TestResolveAppPlane_ExplicitRemoteNeverProbesLocal/remote_succeeds
- === RUN TestResolveAppPlane_ExplicitRemoteNeverProbesLocal/remote_fails_without_local_fallback
- --- PASS: TestResolveAppPlane_ExplicitRemoteNeverProbesLocal (0.00s)
- --- PASS: TestResolveAppPlane_ExplicitRemoteNeverProbesLocal/remote_succeeds (0.00s)
- --- PASS: TestResolveAppPlane_ExplicitRemoteNeverProbesLocal/remote_fails_without_local_fallback (0.00s)
- === RUN TestResolveAppPlane_ReportsDaemonUnavailable
- --- PASS: TestResolveAppPlane_ReportsDaemonUnavailable (0.00s)
- === RUN TestRunAppsApply_RejectsDryRunWithDeploy
- --- PASS: TestRunAppsApply_RejectsDryRunWithDeploy (0.00s)
- === RUN TestRunAppsApply_RequiresFile
- --- PASS: TestRunAppsApply_RequiresFile (0.00s)
- === RUN TestRunAppsApply_JSONParity
- --- PASS: TestRunAppsApply_JSONParity (0.00s)
- === RUN TestRunAppsApply_ChainsAcceptedRevision
- --- PASS: TestRunAppsApply_ChainsAcceptedRevision (0.00s)
- === RUN TestRunAppsApply_ChainedJSONIsOneDocument
- --- PASS: TestRunAppsApply_ChainedJSONIsOneDocument (0.00s)
- === RUN TestRunAppsList_JSONParityAndSorting
- --- PASS: TestRunAppsList_JSONParityAndSorting (0.00s)
- === RUN TestRunAppsList_EmptyJSONIsArray
- --- PASS: TestRunAppsList_EmptyJSONIsArray (0.00s)
- === RUN TestRenderActiveServices_SingleWriterLegend
- === RUN TestRenderActiveServices_SingleWriterLegend/none
- === RUN TestRenderActiveServices_SingleWriterLegend/one
- === RUN TestRenderActiveServices_SingleWriterLegend/two
- --- PASS: TestRenderActiveServices_SingleWriterLegend (0.00s)
- --- PASS: TestRenderActiveServices_SingleWriterLegend/none (0.00s)
- --- PASS: TestRenderActiveServices_SingleWriterLegend/one (0.00s)
- --- PASS: TestRenderActiveServices_SingleWriterLegend/two (0.00s)
- === RUN TestRunAppsShow_JSONParity
- --- PASS: TestRunAppsShow_JSONParity (0.00s)
- === RUN TestRunAppsSecretsSet_NeverEchoesValues
- --- PASS: TestRunAppsSecretsSet_NeverEchoesValues (0.00s)
- === RUN TestRunAppsSecretsSet_RequiresService
- --- PASS: TestRunAppsSecretsSet_RequiresService (0.00s)
- === RUN TestRunAppsSecretsSet_StdinAndValidation
- --- PASS: TestRunAppsSecretsSet_StdinAndValidation (0.00s)
- === RUN TestRunAppDeploy_OutcomeUnknownMentionsKey
- --- PASS: TestRunAppDeploy_OutcomeUnknownMentionsKey (0.00s)
- === RUN TestRunAppDeploy_ConflictRendersJournal
- --- PASS: TestRunAppDeploy_ConflictRendersJournal (0.00s)
- === RUN TestRunAppDeploy_ConflictJSONRendersJournal
- --- PASS: TestRunAppDeploy_ConflictJSONRendersJournal (0.00s)
- === RUN TestRunAppLifecycle_ConflictRendersJournal
- --- PASS: TestRunAppLifecycle_ConflictRendersJournal (0.00s)
- === RUN TestRenderAppDeployResponse_SortedServices
- --- PASS: TestRenderAppDeployResponse_SortedServices (0.00s)
- === RUN TestAppLogRef_Selection
- --- PASS: TestAppLogRef_Selection (0.00s)
- === RUN TestResolveAppPlane_FailsWithoutDaemon
- --- PASS: TestResolveAppPlane_FailsWithoutDaemon (0.00s)
- === RUN TestAppCommandSurface
- --- PASS: TestAppCommandSurface (0.00s)
- === RUN TestRunAppsDiff_TextAndJSON
- --- PASS: TestRunAppsDiff_TextAndJSON (0.00s)
- === RUN TestRunAppsSecretsDelete
- --- PASS: TestRunAppsSecretsDelete (0.00s)
- === RUN TestRunAppRestart_AndLifecycle
- --- PASS: TestRunAppRestart_AndLifecycle (0.00s)
- === RUN TestRunAppStatus_Observed
- --- PASS: TestRunAppStatus_Observed (0.00s)
- === RUN TestRunAppLogs_TextJSONFollow
- --- PASS: TestRunAppLogs_TextJSONFollow (0.00s)
- === RUN TestRunAppsSecretsList_RendersMetadataAndWrapsErrors
- --- PASS: TestRunAppsSecretsList_RendersMetadataAndWrapsErrors (0.00s)
- === RUN TestRunAppDeploy_PollsAcceptedToTerminal
- --- PASS: TestRunAppDeploy_PollsAcceptedToTerminal (0.00s)
- === RUN TestRunAppDeploy_UnchangedStateNotReprinted
- --- PASS: TestRunAppDeploy_UnchangedStateNotReprinted (0.00s)
- === RUN TestRunAppDeploy_AcceptedIssuesNoSecondMutation
- --- PASS: TestRunAppDeploy_AcceptedIssuesNoSecondMutation (0.00s)
- === RUN TestRunAppDeploy_TerminalPartialRendersAndFails
- --- PASS: TestRunAppDeploy_TerminalPartialRendersAndFails (0.00s)
- === RUN TestRunAppDeploy_JSONKeepsStdoutMachineReadable
- --- PASS: TestRunAppDeploy_JSONKeepsStdoutMachineReadable (0.00s)
- === RUN TestWatchOperation_CancelPrintsResumeWithoutAbort
- --- PASS: TestWatchOperation_CancelPrintsResumeWithoutAbort (0.00s)
- === RUN TestWatchOperation_CancelKeepsJSONStdoutClean
- --- PASS: TestWatchOperation_CancelKeepsJSONStdoutClean (0.00s)
- === RUN TestRunAppsOperationsWatch_ResumesExisting
- --- PASS: TestRunAppsOperationsWatch_ResumesExisting (0.00s)
- === RUN TestAwaitOperation_TransientErrorsAreBounded
- --- PASS: TestAwaitOperation_TransientErrorsAreBounded (0.01s)
- === RUN TestAwaitOperation_NotFoundFailsFast
- --- PASS: TestAwaitOperation_NotFoundFailsFast (0.00s)
- === RUN TestAppsOperationsWatchCmd_Flags
- --- PASS: TestAppsOperationsWatchCmd_Flags (0.00s)
- === RUN TestParseAndConvertScopes_DefaultWildcard
- --- PASS: TestParseAndConvertScopes_DefaultWildcard (0.00s)
- === RUN TestParseAndConvertScopes_SpecificRepo
- --- PASS: TestParseAndConvertScopes_SpecificRepo (0.00s)
- === RUN TestParseAndConvertScopes_SpecificRepoPushOnly
- --- PASS: TestParseAndConvertScopes_SpecificRepoPushOnly (0.00s)
- === RUN TestParseAndConvertScopes_MixedWithAdminScopes
- --- PASS: TestParseAndConvertScopes_MixedWithAdminScopes (0.00s)
- === RUN TestParseAndConvertScopes_AlreadyV2Format_RepoIgnored
- --- PASS: TestParseAndConvertScopes_AlreadyV2Format_RepoIgnored (0.00s)
- === RUN TestParseAndConvertScopes_EmptyRepo
- --- PASS: TestParseAndConvertScopes_EmptyRepo (0.00s)
- === RUN TestParseAndConvertScopes_WhitespaceRepo
- --- PASS: TestParseAndConvertScopes_WhitespaceRepo (0.00s)
- === RUN TestRunAuthLoginWithToken_StoresToken
- Warning: 'pass' not available. Storing token in plaintext config. Consider installing pass (https://www.passwordstore.org/) for secure token storage.
- --- PASS: TestRunAuthLoginWithToken_StoresToken (0.00s)
- === RUN TestVolumeBackupStatus_JSONFlag
- --- PASS: TestVolumeBackupStatus_JSONFlag (0.00s)
- === RUN TestVolumeBackupRun_PrintsPartialJobsBeforeReturningError
- --- PASS: TestVolumeBackupRun_PrintsPartialJobsBeforeReturningError (0.00s)
- === RUN TestCAExportRemoteUsesControlPlane
- --- PASS: TestCAExportRemoteUsesControlPlane (0.00s)
- === RUN TestCAExportRemoteWritesFile
- Before trusting this CA, check that fingerprint 59:86:0C:0A:6F:39:16:5A:91:CB:FF:8C:19:CC:38:4D:43:F6:70:7F:6D:B2:5A:88:3D:12:45:A9:21:E6:C3:2D matches `gordon ca info` on the Gordon host
- --- PASS: TestCAExportRemoteWritesFile (0.00s)
- === RUN TestCAInfoRemoteUsesControlPlane
- --- PASS: TestCAInfoRemoteUsesControlPlane (0.00s)
- === RUN TestCAInfoRemoteText
- --- PASS: TestCAInfoRemoteText (0.00s)
- === RUN TestCARemoteErrorIsWrapped
- --- PASS: TestCARemoteErrorIsWrapped (0.00s)
- === RUN TestCAInstallRejectsRemote
- --- PASS: TestCAInstallRejectsRemote (0.00s)
- === RUN TestCARemoteRejectsInvalidRoot
- === RUN TestCARemoteRejectsInvalidRoot/invalid_pem
- === RUN TestCARemoteRejectsInvalidRoot/garbage_der
- === RUN TestCARemoteRejectsInvalidRoot/wrong_block_type
- === RUN TestCARemoteRejectsInvalidRoot/multiple_certs
- === RUN TestCARemoteRejectsInvalidRoot/not_a_CA
- === RUN TestCARemoteRejectsInvalidRoot/fingerprint_mismatch
- --- PASS: TestCARemoteRejectsInvalidRoot (0.00s)
- --- PASS: TestCARemoteRejectsInvalidRoot/invalid_pem (0.00s)
- --- PASS: TestCARemoteRejectsInvalidRoot/garbage_der (0.00s)
- --- PASS: TestCARemoteRejectsInvalidRoot/wrong_block_type (0.00s)
- --- PASS: TestCARemoteRejectsInvalidRoot/multiple_certs (0.00s)
- --- PASS: TestCARemoteRejectsInvalidRoot/not_a_CA (0.00s)
- --- PASS: TestCARemoteRejectsInvalidRoot/fingerprint_mismatch (0.00s)
- === RUN TestCARemoteRejectsNotSelfSigned
- --- PASS: TestCARemoteRejectsNotSelfSigned (0.00s)
- === RUN TestCARemoteComputesFingerprintAndCNLocally
- --- PASS: TestCARemoteComputesFingerprintAndCNLocally (0.00s)
- === RUN TestCALocalErrorMentionsConfigAndRemote
- --- PASS: TestCALocalErrorMentionsConfigAndRemote (0.00s)
- === RUN TestErrLocalInternalTLSDisabledWithoutConfigFile
- --- PASS: TestErrLocalInternalTLSDisabledWithoutConfigFile (0.00s)
- === RUN TestRemoteControlPlane_RunVolumeBackupsPreservesPartialResult
- --- PASS: TestRemoteControlPlane_RunVolumeBackupsPreservesPartialResult (0.00s)
- === RUN TestRemoteControlPlane_VolumeBackupErrorsKeepHTTPStatus
- --- PASS: TestRemoteControlPlane_VolumeBackupErrorsKeepHTTPStatus (0.00s)
- === RUN TestResolveControlPlane_LocalUsesSocketBackedRemotePlane
- --- PASS: TestResolveControlPlane_LocalUsesSocketBackedRemotePlane (0.00s)
- === RUN TestResolveControlPlane_LocalFailsClosedWhenDaemonUnavailable
- --- PASS: TestResolveControlPlane_LocalFailsClosedWhenDaemonUnavailable (0.00s)
- === RUN TestResolveControlPlane_ExplicitRemoteDoesNotUseLocalFactory
- --- PASS: TestResolveControlPlane_ExplicitRemoteDoesNotUseLocalFactory (0.00s)
- === RUN TestResolveControlPlane_ExplicitUnknownRemoteReturnsError
- --- PASS: TestResolveControlPlane_ExplicitUnknownRemoteReturnsError (0.00s)
- === RUN TestResolveControlPlane_LocalIgnoresConfigAndStoreState
- --- PASS: TestResolveControlPlane_LocalIgnoresConfigAndStoreState (0.00s)
- === RUN TestFormatDeployFailure_RemoteStructuredError
- --- PASS: TestFormatDeployFailure_RemoteStructuredError (0.00s)
- === RUN TestFormatDeployFailure_LocalTypedError
- --- PASS: TestFormatDeployFailure_LocalTypedError (0.00s)
- === RUN TestFormatDeployFailure_GenericFallback
- --- PASS: TestFormatDeployFailure_GenericFallback (0.00s)
- === RUN TestFormatDeployFailure_SkipsEmptySanitizedLogsSection
- --- PASS: TestFormatDeployFailure_SkipsEmptySanitizedLogsSection (0.00s)
- === RUN TestShouldFallbackToLocal
- === RUN TestShouldFallbackToLocal/nil
- === RUN TestShouldFallbackToLocal/connection_refused
- === RUN TestShouldFallbackToLocal/status_503
- === RUN TestShouldFallbackToLocal/status_500
- === RUN TestShouldFallbackToLocal/timeout
- === RUN TestShouldFallbackToLocal/auth_error
- === RUN TestShouldFallbackToLocal/bad_request
- --- PASS: TestShouldFallbackToLocal (0.00s)
- --- PASS: TestShouldFallbackToLocal/nil (0.00s)
- --- PASS: TestShouldFallbackToLocal/connection_refused (0.00s)
- --- PASS: TestShouldFallbackToLocal/status_503 (0.00s)
- --- PASS: TestShouldFallbackToLocal/status_500 (0.00s)
- --- PASS: TestShouldFallbackToLocal/timeout (0.00s)
- --- PASS: TestShouldFallbackToLocal/auth_error (0.00s)
- --- PASS: TestShouldFallbackToLocal/bad_request (0.00s)
- === RUN TestRunImagesList_PrintsRowsAndSummary
- --- PASS: TestRunImagesList_PrintsRowsAndSummary (0.00s)
- === RUN TestRunImagesList_HeaderOrderAndSummaryLine
- --- PASS: TestRunImagesList_HeaderOrderAndSummaryLine (0.00s)
- === RUN TestRunImagesList_TruncatesLongValuesAndKeepsBoundedRowShape
- --- PASS: TestRunImagesList_TruncatesLongValuesAndKeepsBoundedRowShape (0.00s)
- === RUN TestRunImagesList_LongDigestLikeValuesAndEmptyFormattedFields
- --- PASS: TestRunImagesList_LongDigestLikeValuesAndEmptyFormattedFields (0.00s)
- === RUN TestRunImagesList_EmptyOutput
- --- PASS: TestRunImagesList_EmptyOutput (0.00s)
- === RUN TestRunImagesPrune_DefaultScopeIsBothDanglingAndRegistry
- --- PASS: TestRunImagesPrune_DefaultScopeIsBothDanglingAndRegistry (0.00s)
- === RUN TestRunImagesPrune_DanglingOnlyScopeSkipsRegistry
- --- PASS: TestRunImagesPrune_DanglingOnlyScopeSkipsRegistry (0.00s)
- === RUN TestRunImagesPrune_RegistryOnlyScopeSkipsRuntime
- --- PASS: TestRunImagesPrune_RegistryOnlyScopeSkipsRuntime (0.00s)
- === RUN TestRunImagesPrune_BothScopeFlagsExplicit
- --- PASS: TestRunImagesPrune_BothScopeFlagsExplicit (0.00s)
- === RUN TestRunImagesPrune_DryRunBothScopes
- --- PASS: TestRunImagesPrune_DryRunBothScopes (0.00s)
- === RUN TestRunImagesPrune_DryRunDanglingOnlyScope
- --- PASS: TestRunImagesPrune_DryRunDanglingOnlyScope (0.00s)
- === RUN TestRunImagesPrune_DryRunRegistryOnlyScope
- --- PASS: TestRunImagesPrune_DryRunRegistryOnlyScope (0.00s)
- === RUN TestRunImagesPrune_KeepReleasesControlsRetention
- --- PASS: TestRunImagesPrune_KeepReleasesControlsRetention (0.00s)
- === RUN TestRunImagesPrune_RejectsNegativeKeepReleases
- --- PASS: TestRunImagesPrune_RejectsNegativeKeepReleases (0.00s)
- === RUN TestRunImagesPrune_NonDryRunCallsConfirm
- --- PASS: TestRunImagesPrune_NonDryRunCallsConfirm (0.00s)
- === RUN TestRunImagesPrune_ConfirmPromptIncludesScopePreviewCounts
- --- PASS: TestRunImagesPrune_ConfirmPromptIncludesScopePreviewCounts (0.00s)
- === RUN TestRunImagesPrune_ConfirmRejectCancelsOperation
- --- PASS: TestRunImagesPrune_ConfirmRejectCancelsOperation (0.00s)
- === RUN TestRunImagesPrune_NoConfirmSkipsPrompt
- --- PASS: TestRunImagesPrune_NoConfirmSkipsPrompt (0.00s)
- === RUN TestRunImagesPrune_DryRunNeverPrompts
- --- PASS: TestRunImagesPrune_DryRunNeverPrompts (0.00s)
- === RUN TestRunImagesPrune_ReturnsRemoteErrors
- --- PASS: TestRunImagesPrune_ReturnsRemoteErrors (0.00s)
- === RUN TestRunImagesPrune_RejectsEmptyResponse
- --- PASS: TestRunImagesPrune_RejectsEmptyResponse (0.00s)
- === RUN TestAllListCommands_AcceptJSONFlag
- === RUN TestAllListCommands_AcceptJSONFlag/images_list
- === RUN TestAllListCommands_AcceptJSONFlag/backup_list
- === RUN TestAllListCommands_AcceptJSONFlag/backup_volumes_list
- === RUN TestAllListCommands_AcceptJSONFlag/backup_volumes_run
- === RUN TestAllListCommands_AcceptJSONFlag/backup_volumes_status
- === RUN TestAllListCommands_AcceptJSONFlag/auth_token_list
- === RUN TestAllListCommands_AcceptJSONFlag/remotes_list
- === RUN TestAllListCommands_AcceptJSONFlag/daemon_config_show
- === RUN TestAllListCommands_AcceptJSONFlag/daemon_networks
- === RUN TestAllListCommands_AcceptJSONFlag/images_tags
- === RUN TestAllListCommands_AcceptJSONFlag/daemon_tls
- --- PASS: TestAllListCommands_AcceptJSONFlag (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/images_list (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/backup_list (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/backup_volumes_list (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/backup_volumes_run (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/backup_volumes_status (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/auth_token_list (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/remotes_list (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/daemon_config_show (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/daemon_networks (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/images_tags (0.00s)
- --- PASS: TestAllListCommands_AcceptJSONFlag/daemon_tls (0.00s)
- === RUN TestImagesList_JSONFlag_Accepted
- --- PASS: TestImagesList_JSONFlag_Accepted (0.00s)
- === RUN TestBackupList_JSONFlag_Accepted
- --- PASS: TestBackupList_JSONFlag_Accepted (0.00s)
- === RUN TestTokenList_JSONFlag_Accepted
- --- PASS: TestTokenList_JSONFlag_Accepted (0.00s)
- === RUN TestRemotesList_JSONFlag_Accepted
- --- PASS: TestRemotesList_JSONFlag_Accepted (0.00s)
- === RUN TestImagesList_JSONShape_RoundTripsDTO
- --- PASS: TestImagesList_JSONShape_RoundTripsDTO (0.00s)
- === RUN TestPinList_JSONShape_RoundTripsTags
- --- PASS: TestPinList_JSONShape_RoundTripsTags (0.00s)
- === RUN TestBackupList_JSONShape_RoundTripsJobs
- --- PASS: TestBackupList_JSONShape_RoundTripsJobs (0.00s)
- === RUN TestTokenList_JSONShape_RoundTripsTokens
- --- PASS: TestTokenList_JSONShape_RoundTripsTokens (0.00s)
- === RUN TestRemotesList_JSONShape_RoundTripsRemoteObjects
- --- PASS: TestRemotesList_JSONShape_RoundTripsRemoteObjects (0.00s)
- === RUN TestWriteJSON_ProducesValidIndentedJSON
- --- PASS: TestWriteJSON_ProducesValidIndentedJSON (0.00s)
- === RUN TestHasLocalTLSCapableEntrypoint
- === RUN TestHasLocalTLSCapableEntrypoint/smart_tcp
- === RUN TestHasLocalTLSCapableEntrypoint/tls_mux
- === RUN TestHasLocalTLSCapableEntrypoint/plain_tcp
- === RUN TestHasLocalTLSCapableEntrypoint/empty
- --- PASS: TestHasLocalTLSCapableEntrypoint (0.00s)
- --- PASS: TestHasLocalTLSCapableEntrypoint/smart_tcp (0.00s)
- --- PASS: TestHasLocalTLSCapableEntrypoint/tls_mux (0.00s)
- --- PASS: TestHasLocalTLSCapableEntrypoint/plain_tcp (0.00s)
- --- PASS: TestHasLocalTLSCapableEntrypoint/empty (0.00s)
- === RUN TestTagAndPushPreservesExactSourceReference
- --- PASS: TestTagAndPushPreservesExactSourceReference (0.00s)
- === RUN TestTagAndPushRejectsMissingSourceReference
- --- PASS: TestTagAndPushRejectsMissingSourceReference (0.00s)
- === RUN TestExchangeRegistryAuth_Success
- --- PASS: TestExchangeRegistryAuth_Success (0.00s)
- === RUN TestExchangeRegistryAuth_VerifyAuthFails
- --- PASS: TestExchangeRegistryAuth_VerifyAuthFails (0.00s)
- === RUN TestExchangeRegistryAuth_TokenNotValid
- --- PASS: TestExchangeRegistryAuth_TokenNotValid (0.00s)
- === RUN TestIntegration_TagAndPush_NativeRegistry
- === PAUSE TestIntegration_TagAndPush_NativeRegistry
- === RUN TestResolveImageTarget_BareNameUsesTargetRegistry
- === RUN TestResolveImageTarget_BareNameUsesTargetRegistry/bare_name
- === RUN TestResolveImageTarget_BareNameUsesTargetRegistry/bare_name_with_tag
- === RUN TestResolveImageTarget_BareNameUsesTargetRegistry/namespaced_name
- === RUN TestResolveImageTarget_BareNameUsesTargetRegistry/bare_digest
- --- PASS: TestResolveImageTarget_BareNameUsesTargetRegistry (0.00s)
- --- PASS: TestResolveImageTarget_BareNameUsesTargetRegistry/bare_name (0.00s)
- --- PASS: TestResolveImageTarget_BareNameUsesTargetRegistry/bare_name_with_tag (0.00s)
- --- PASS: TestResolveImageTarget_BareNameUsesTargetRegistry/namespaced_name (0.00s)
- --- PASS: TestResolveImageTarget_BareNameUsesTargetRegistry/bare_digest (0.00s)
- === RUN TestResolveImageTarget_QualifiedRefMatchingTarget
- --- PASS: TestResolveImageTarget_QualifiedRefMatchingTarget (0.00s)
- === RUN TestResolveImageTarget_RejectsMismatchedRegistry
- === RUN TestResolveImageTarget_RejectsMismatchedRegistry/other.example.org/myapp:v1
- === RUN TestResolveImageTarget_RejectsMismatchedRegistry/reg.example.com:443/myapp:v1
- --- PASS: TestResolveImageTarget_RejectsMismatchedRegistry (0.00s)
- --- PASS: TestResolveImageTarget_RejectsMismatchedRegistry/other.example.org/myapp:v1 (0.00s)
- --- PASS: TestResolveImageTarget_RejectsMismatchedRegistry/reg.example.com:443/myapp:v1 (0.00s)
- === RUN TestTargetRegistryDomain_RemoteFallsBackToStatusForOlderServers
- --- PASS: TestTargetRegistryDomain_RemoteFallsBackToStatusForOlderServers (0.00s)
- === RUN TestTargetRegistryDomain_LocalSocketUsesStatus
- --- PASS: TestTargetRegistryDomain_LocalSocketUsesStatus (0.00s)
- === RUN TestTargetRegistryDomain_Errors
- === RUN TestTargetRegistryDomain_Errors/verify_fails
- === RUN TestTargetRegistryDomain_Errors/token_without_admin_scope
- === RUN TestTargetRegistryDomain_Errors/token_invalid
- === RUN TestTargetRegistryDomain_Errors/older_server_denies_status
- === RUN TestTargetRegistryDomain_Errors/no_registry_domain_configured
- --- PASS: TestTargetRegistryDomain_Errors (0.00s)
- --- PASS: TestTargetRegistryDomain_Errors/verify_fails (0.00s)
- --- PASS: TestTargetRegistryDomain_Errors/token_without_admin_scope (0.00s)
- --- PASS: TestTargetRegistryDomain_Errors/token_invalid (0.00s)
- --- PASS: TestTargetRegistryDomain_Errors/older_server_denies_status (0.00s)
- --- PASS: TestTargetRegistryDomain_Errors/no_registry_domain_configured (0.00s)
- === RUN TestInferPushRemote_UsesUniqueMatchingSavedRemote
- --- PASS: TestInferPushRemote_UsesUniqueMatchingSavedRemote (0.00s)
- === RUN TestInferPushRemote_ReturnsAmbiguousErrorWhenMultipleRemotesMatch
- --- PASS: TestInferPushRemote_ReturnsAmbiguousErrorWhenMultipleRemotesMatch (0.00s)
- === RUN TestInferPushRemote_SkipsGuessWhenExplicitRemoteSelected
- --- PASS: TestInferPushRemote_SkipsGuessWhenExplicitRemoteSelected (0.00s)
- === RUN TestInferPushRemote_SkipsGuessWhenActiveRemoteConfigured
- --- PASS: TestInferPushRemote_SkipsGuessWhenActiveRemoteConfigured (0.00s)
- === RUN TestInferPushRemote_FailsSafeWhenSomeRemotesCannotBeProbed
- --- PASS: TestInferPushRemote_FailsSafeWhenSomeRemotesCannotBeProbed (0.00s)
- === RUN TestInferRemoteForRepository_ReturnsAmbiguousErrorWhenMultipleRemotesMatch
- --- PASS: TestInferRemoteForRepository_ReturnsAmbiguousErrorWhenMultipleRemotesMatch (0.00s)
- === RUN TestValidateBuildArg
- === RUN TestValidateBuildArg/valid_simple
- === RUN TestValidateBuildArg/valid_with_underscore_key
- === RUN TestValidateBuildArg/valid_with_numbers_in_key
- === RUN TestValidateBuildArg/valid_empty_value
- === RUN TestValidateBuildArg/valid_complex_value
- === RUN TestValidateBuildArg/invalid_no_equals
- === RUN TestValidateBuildArg/invalid_starts_with_number
- === RUN TestValidateBuildArg/invalid_starts_with_dash
- === RUN TestValidateBuildArg/invalid_special_chars_in_key
- === RUN TestValidateBuildArg/invalid_empty_string
- === RUN TestValidateBuildArg/invalid_equals_only
- --- PASS: TestValidateBuildArg (0.00s)
- --- PASS: TestValidateBuildArg/valid_simple (0.00s)
- --- PASS: TestValidateBuildArg/valid_with_underscore_key (0.00s)
- --- PASS: TestValidateBuildArg/valid_with_numbers_in_key (0.00s)
- --- PASS: TestValidateBuildArg/valid_empty_value (0.00s)
- --- PASS: TestValidateBuildArg/valid_complex_value (0.00s)
- --- PASS: TestValidateBuildArg/invalid_no_equals (0.00s)
- --- PASS: TestValidateBuildArg/invalid_starts_with_number (0.00s)
- --- PASS: TestValidateBuildArg/invalid_starts_with_dash (0.00s)
- --- PASS: TestValidateBuildArg/invalid_special_chars_in_key (0.00s)
- --- PASS: TestValidateBuildArg/invalid_empty_string (0.00s)
- --- PASS: TestValidateBuildArg/invalid_equals_only (0.00s)
- === RUN TestParseImageRef
- === RUN TestParseImageRef/full_ref
- === RUN TestParseImageRef/no_tag
- === RUN TestParseImageRef/latest_tag
- === RUN TestParseImageRef/no_slash
- === RUN TestParseImageRef/namespace_without_registry_host
- === RUN TestParseImageRef/localhost
- === RUN TestParseImageRef/registry_with_port
- === RUN TestParseImageRef/registry_with_namespace
- --- PASS: TestParseImageRef (0.00s)
- --- PASS: TestParseImageRef/full_ref (0.00s)
- --- PASS: TestParseImageRef/no_tag (0.00s)
- --- PASS: TestParseImageRef/latest_tag (0.00s)
- --- PASS: TestParseImageRef/no_slash (0.00s)
- --- PASS: TestParseImageRef/namespace_without_registry_host (0.00s)
- --- PASS: TestParseImageRef/localhost (0.00s)
- --- PASS: TestParseImageRef/registry_with_port (0.00s)
- --- PASS: TestParseImageRef/registry_with_namespace (0.00s)
- === RUN TestClassifyPushArgument
- === RUN TestClassifyPushArgument/tagged_image_latest
- === RUN TestClassifyPushArgument/tagged_image_semver
- === RUN TestClassifyPushArgument/registry_qualified_image
- === RUN TestClassifyPushArgument/registry_qualified_digest
- === RUN TestClassifyPushArgument/legacy_domain
- === RUN TestClassifyPushArgument/bare_image_name
- --- PASS: TestClassifyPushArgument (0.00s)
- --- PASS: TestClassifyPushArgument/tagged_image_latest (0.00s)
- --- PASS: TestClassifyPushArgument/tagged_image_semver (0.00s)
- --- PASS: TestClassifyPushArgument/registry_qualified_image (0.00s)
- --- PASS: TestClassifyPushArgument/registry_qualified_digest (0.00s)
- --- PASS: TestClassifyPushArgument/legacy_domain (0.00s)
- --- PASS: TestClassifyPushArgument/bare_image_name (0.00s)
- === RUN TestBuildAndPush_BuildArgs
- --- PASS: TestBuildAndPush_BuildArgs (0.00s)
- === RUN TestBuildImageArgsInjectsGitBuildArgs
- --- PASS: TestBuildImageArgsInjectsGitBuildArgs (0.00s)
- === RUN TestBuildImageArgsUserArgsOverrideDefaults
- --- PASS: TestBuildImageArgsUserArgsOverrideDefaults (0.01s)
- === RUN TestParseTagRef
- === RUN TestParseTagRef/github_tag_ref
- === RUN TestParseTagRef/peeled_tag_ref
- === RUN TestParseTagRef/branch_ref
- === RUN TestParseTagRef/empty
- --- PASS: TestParseTagRef (0.00s)
- --- PASS: TestParseTagRef/github_tag_ref (0.00s)
- --- PASS: TestParseTagRef/peeled_tag_ref (0.00s)
- --- PASS: TestParseTagRef/branch_ref (0.00s)
- --- PASS: TestParseTagRef/empty (0.00s)
- === RUN TestVersionFromTagRefs
- === RUN TestVersionFromTagRefs/github_ref_tag
- === RUN TestVersionFromTagRefs/github_ref_type_and_name
- === RUN TestVersionFromTagRefs/gitlab_commit_tag
- === RUN TestVersionFromTagRefs/azure_source_branch_tag_ref
- === RUN TestVersionFromTagRefs/no_tag_refs
- --- PASS: TestVersionFromTagRefs (0.00s)
- --- PASS: TestVersionFromTagRefs/github_ref_tag (0.00s)
- --- PASS: TestVersionFromTagRefs/github_ref_type_and_name (0.00s)
- --- PASS: TestVersionFromTagRefs/gitlab_commit_tag (0.00s)
- --- PASS: TestVersionFromTagRefs/azure_source_branch_tag_ref (0.00s)
- --- PASS: TestVersionFromTagRefs/no_tag_refs (0.00s)
- === RUN TestBuildImageArgs_CustomDockerfile
- --- PASS: TestBuildImageArgs_CustomDockerfile (0.00s)
- === RUN TestParseDockerfileLabels
- === RUN TestParseDockerfileLabels/simple_label
- === RUN TestParseDockerfileLabels/multiple_labels
- === RUN TestParseDockerfileLabels/multi-label_on_one_line
- === RUN TestParseDockerfileLabels/unquoted_value
- === RUN TestParseDockerfileLabels/single-quoted_value
- === RUN TestParseDockerfileLabels/non-gordon_labels_ignored
- === RUN TestParseDockerfileLabels/comma-separated_domains
- === RUN TestParseDockerfileLabels/no_labels
- === RUN TestParseDockerfileLabels/comments_and_empty_lines
- --- PASS: TestParseDockerfileLabels (0.00s)
- --- PASS: TestParseDockerfileLabels/simple_label (0.00s)
- --- PASS: TestParseDockerfileLabels/multiple_labels (0.00s)
- --- PASS: TestParseDockerfileLabels/multi-label_on_one_line (0.00s)
- --- PASS: TestParseDockerfileLabels/unquoted_value (0.00s)
- --- PASS: TestParseDockerfileLabels/single-quoted_value (0.00s)
- --- PASS: TestParseDockerfileLabels/non-gordon_labels_ignored (0.00s)
- --- PASS: TestParseDockerfileLabels/comma-separated_domains (0.00s)
- --- PASS: TestParseDockerfileLabels/no_labels (0.00s)
- --- PASS: TestParseDockerfileLabels/comments_and_empty_lines (0.00s)
- === RUN TestParseDockerfileLabels_NonExistent
- --- PASS: TestParseDockerfileLabels_NonExistent (0.00s)
- === RUN TestDetectImageName_FromDockerfileLabels
- --- PASS: TestDetectImageName_FromDockerfileLabels (0.00s)
- === RUN TestDetectImageName_FallbackToDir
- --- PASS: TestDetectImageName_FallbackToDir (0.00s)
- === RUN TestSplitLabelPairs
- === RUN TestSplitLabelPairs/single_pair
- === RUN TestSplitLabelPairs/two_pairs
- === RUN TestSplitLabelPairs/unquoted
- === RUN TestSplitLabelPairs/quoted_with_spaces_in_value
- --- PASS: TestSplitLabelPairs (0.00s)
- --- PASS: TestSplitLabelPairs/single_pair (0.00s)
- --- PASS: TestSplitLabelPairs/two_pairs (0.00s)
- --- PASS: TestSplitLabelPairs/unquoted (0.00s)
- --- PASS: TestSplitLabelPairs/quoted_with_spaces_in_value (0.00s)
- === RUN TestGetGitVersionNoTagsReturnsFallbackAndWarns
- --- PASS: TestGetGitVersionNoTagsReturnsFallbackAndWarns (0.01s)
- === RUN TestParseLabelPair
- === RUN TestParseLabelPair/quoted
- === RUN TestParseLabelPair/unquoted
- === RUN TestParseLabelPair/single_quoted
- === RUN TestParseLabelPair/empty_value
- === RUN TestParseLabelPair/no_equals
- --- PASS: TestParseLabelPair (0.00s)
- --- PASS: TestParseLabelPair/quoted (0.00s)
- --- PASS: TestParseLabelPair/unquoted (0.00s)
- --- PASS: TestParseLabelPair/single_quoted (0.00s)
- --- PASS: TestParseLabelPair/empty_value (0.00s)
- --- PASS: TestParseLabelPair/no_equals (0.00s)
- === RUN TestTLSStatus_HumanOutput
- tls_test.go:58: Human output:
- Public TLS / ACME Status
- ACME: enabled
- Configured Mode: acme
- Effective Mode: acme-staging
- Reason: configured
- Token Source: env
- Certificates
- ID: cert-abc123
- Names: example.com, www.example.com
- Status: valid
- Not After: 2026-05-29 12:00:00
- Route Coverage
- example.com covered=yes covered_by=cert-abc123
- internal.local covered=no error=self-signed cert
- Errors
- route internal.local has no ACME cert
- --- PASS: TestTLSStatus_HumanOutput (0.00s)
- === RUN TestTLSStatus_JSONOutput
- --- PASS: TestTLSStatus_JSONOutput (0.00s)
- === RUN TestTrafficCommandExists
- --- PASS: TestTrafficCommandExists (0.00s)
- === RUN TestTrafficStatusRejectsArgs
- --- PASS: TestTrafficStatusRejectsArgs (0.00s)
- === RUN TestTrafficStatusHumanOutput
- --- PASS: TestTrafficStatusHumanOutput (0.00s)
- === RUN TestTrafficStatusJSONOutput
- --- PASS: TestTrafficStatusJSONOutput (0.00s)
- === RUN TestRunTrafficStatusUsesControlPlane
- --- PASS: TestRunTrafficStatusUsesControlPlane (0.00s)
- === RUN TestRemoteTrafficStatusControlPlaneStillRenders
- --- PASS: TestRemoteTrafficStatusControlPlaneStillRenders (0.00s)
- === RUN TestPresentationHelpers
- --- PASS: TestPresentationHelpers (0.00s)
- === RUN TestUIAdoptionRuntimeSeams
- --- PASS: TestUIAdoptionRuntimeSeams (0.00s)
- === RUN TestRunVolumesList_ShowsVolumes
- --- PASS: TestRunVolumesList_ShowsVolumes (0.00s)
- === RUN TestRunVolumesList_JSON
- --- PASS: TestRunVolumesList_JSON (0.00s)
- === RUN TestRunVolumesPrune_JSONExecutesActualPrune
- --- PASS: TestRunVolumesPrune_JSONExecutesActualPrune (0.00s)
- === RUN TestRunVolumesPrune_DryRun
- --- PASS: TestRunVolumesPrune_DryRun (0.00s)
- === CONT TestIntegration_TagAndPush_NativeRegistry
- <U+001B>[90m2026-10-22T08:23:45Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob storage initialized<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mroot_dir=<U+001B>[0m/tmp/TestIntegration_TagAndPush_NativeRegistry3778230020/001
- <U+001B>[90m2026-10-22T08:23:45Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mmanifest storage initialized<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mroot_dir=<U+001B>[0m/tmp/TestIntegration_TagAndPush_NativeRegistry3778230020/001
- <U+001B>[90m2026-10-22T08:23:45Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob upload started<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mtestapp <U+001B>[36muuid=<U+001B>[0m58fb0a48-b11d-4df3-934f-30580e7a6660
- <U+001B>[90m2026-10-22T08:23:45Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob upload finished<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:fc399e5dc9e1a332e8d28502e8b4e0b68aff7e160f12955e5c7d58d4ebee26fc <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mtestapp <U+001B>[36muuid=<U+001B>[0m58fb0a48-b11d-4df3-934f-30580e7a6660
- <U+001B>[90m2026-10-22T08:23:45Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob upload started<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mtestapp <U+001B>[36muuid=<U+001B>[0me286ea6f-6fa4-41f7-9090-f3c2a3eced98
- <U+001B>[90m2026-10-22T08:23:45Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob upload finished<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:af412399b42e315936940a3f1770880ce9e50ccd2b210859df8e37964f0c9647 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mtestapp <U+001B>[36muuid=<U+001B>[0me286ea6f-6fa4-41f7-9090-f3c2a3eced98
- <U+001B>[90m2026-10-22T08:23:45Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mmanifest stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mtestapp <U+001B>[36mreference=<U+001B>[0mv1.0.0
- <U+001B>[90m2026-10-22T08:23:45Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mmanifest stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mtestapp <U+001B>[36mreference=<U+001B>[0mlatest
- --- PASS: TestIntegration_TagAndPush_NativeRegistry (0.06s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/cli 1.297s
- ? github.com/bnema/gordon/internal/adapters/in/cli/mocks [no test files]
- === RUN TestClientApplyApp_SendsIdempotencyKey
- --- PASS: TestClientApplyApp_SendsIdempotencyKey (0.00s)
- === RUN TestClientDeployApp_GatewayErrorIsOutcomeUnknownWithoutReplay
- --- PASS: TestClientDeployApp_GatewayErrorIsOutcomeUnknownWithoutReplay (0.00s)
- === RUN TestClientOperationByKey_RecoveryPath
- --- PASS: TestClientOperationByKey_RecoveryPath (0.00s)
- === RUN TestClientLifecycle_MutationsCarryKeys
- --- PASS: TestClientLifecycle_MutationsCarryKeys (0.00s)
- === RUN TestClientRestartApp_SendsServiceScope
- --- PASS: TestClientRestartApp_SendsServiceScope (0.00s)
- === RUN TestClientDeployApp_AcceptedRunningJournal
- --- PASS: TestClientDeployApp_AcceptedRunningJournal (0.00s)
- === RUN TestClientDeployApp_ConflictDecodesJournal
- --- PASS: TestClientDeployApp_ConflictDecodesJournal (0.00s)
- === RUN TestClientStopApp_ConflictDecodesJournal
- --- PASS: TestClientStopApp_ConflictDecodesJournal (0.00s)
- === RUN TestClientDeployApp_ConflictWithoutJournalFallsBackToHTTPError
- --- PASS: TestClientDeployApp_ConflictWithoutJournalFallsBackToHTTPError (0.00s)
- === RUN TestClientListAppSecrets_ServiceFilterAndErrorContext
- --- PASS: TestClientListAppSecrets_ServiceFilterAndErrorContext (0.00s)
- === RUN TestClientReloadDoesNotRetryGatewayResponse
- --- PASS: TestClientReloadDoesNotRetryGatewayResponse (0.00s)
- === RUN TestClientGetStatusDoesNotRetryAuthenticationRejection
- --- PASS: TestClientGetStatusDoesNotRetryAuthenticationRejection (0.00s)
- === RUN TestClientGetStatusRetriesTransientGatewayResponse
- --- PASS: TestClientGetStatusRetriesTransientGatewayResponse (0.03s)
- === RUN TestClientGetStatusRetriesTransientTransportFailure
- --- PASS: TestClientGetStatusRetriesTransientTransportFailure (0.03s)
- === RUN TestClientGetStatusReportsTransportContextAfterRetryExhaustion
- --- PASS: TestClientGetStatusReportsTransportContextAfterRetryExhaustion (0.03s)
- === RUN TestClientWithInsecureTLS_AllowsSelfSignedCertificate
- 2026/10/22 08:23:45 http: TLS handshake error from 127.0.0.1:37096: remote error: tls: bad certificate
- 2026/10/22 08:23:45 http: TLS handshake error from 127.0.0.1:37106: remote error: tls: bad certificate
- 2026/10/22 08:23:46 http: TLS handshake error from 127.0.0.1:37114: remote error: tls: bad certificate
- WARNING: TLS certificate verification disabled for https://127.0.0.1:40893
- 2026/10/22 08:23:47 http: TLS handshake error from 127.0.0.1:59684: remote error: tls: bad certificate
- --- PASS: TestClientWithInsecureTLS_AllowsSelfSignedCertificate (1.90s)
- === RUN TestClientGetTrafficStatus
- --- PASS: TestClientGetTrafficStatus (0.00s)
- === RUN TestClientGetCA
- --- PASS: TestClientGetCA (0.00s)
- === RUN TestClientGetCADisabled
- --- PASS: TestClientGetCADisabled (0.00s)
- === RUN TestClientGetTLSStatus
- --- PASS: TestClientGetTLSStatus (0.00s)
- === RUN TestClientListImages
- --- PASS: TestClientListImages (0.00s)
- === RUN TestClientPruneImages
- --- PASS: TestClientPruneImages (0.00s)
- === RUN TestParseResponse_CapsErrorBodySize
- --- PASS: TestParseResponse_CapsErrorBodySize (0.02s)
- === RUN TestStreamLogs_CapsErrorBodySize
- --- PASS: TestStreamLogs_CapsErrorBodySize (0.03s)
- === RUN TestRequestWithRetry_CapsErrorBodySize
- --- PASS: TestRequestWithRetry_CapsErrorBodySize (0.03s)
- === RUN TestExchangeRegistryToken_Success
- --- PASS: TestExchangeRegistryToken_Success (0.00s)
- === RUN TestExchangeRegistryToken_Unauthorized
- --- PASS: TestExchangeRegistryToken_Unauthorized (0.00s)
- === RUN TestExchangeRegistryToken_EmptyToken
- --- PASS: TestExchangeRegistryToken_EmptyToken (0.00s)
- === RUN TestHTTPError_ErrorString
- --- PASS: TestHTTPError_ErrorString (0.00s)
- === RUN TestHTTPError_Unwrap
- --- PASS: TestHTTPError_Unwrap (0.00s)
- === RUN TestParseErrorResponse_ReturnsHTTPError
- --- PASS: TestParseErrorResponse_ReturnsHTTPError (0.00s)
- === RUN TestParseErrorResponse_AppErrorMessage
- --- PASS: TestParseErrorResponse_AppErrorMessage (0.00s)
- === RUN TestParseErrorResponse_DeployFailureFields
- --- PASS: TestParseErrorResponse_DeployFailureFields (0.00s)
- === RUN TestParseErrorResponse_ErrorOnlyJSONNotStructured
- --- PASS: TestParseErrorResponse_ErrorOnlyJSONNotStructured (0.00s)
- === RUN TestParseErrorResponse_NonJSON
- --- PASS: TestParseErrorResponse_NonJSON (0.00s)
- === RUN TestRunVolumeBackups_PartialContentReturnsResultAndError
- --- PASS: TestRunVolumeBackups_PartialContentReturnsResultAndError (0.00s)
- === RUN TestExchangeRegistryToken_AccessTokenFallback
- --- PASS: TestExchangeRegistryToken_AccessTokenFallback (0.00s)
- === RUN TestLocalAdminDiscoveryRejectsUnsafeSelectedCandidate
- --- PASS: TestLocalAdminDiscoveryRejectsUnsafeSelectedCandidate (0.00s)
- === RUN TestLocalAdminDiscoveryReportsUnavailable
- --- PASS: TestLocalAdminDiscoveryReportsUnavailable (0.00s)
- === RUN TestLocalAdminDiscoveryUsesXDGCandidates
- --- PASS: TestLocalAdminDiscoveryUsesXDGCandidates (0.00s)
- === RUN TestLocalAdminClientFailsWithoutSocket
- --- PASS: TestLocalAdminClientFailsWithoutSocket (0.00s)
- === RUN TestLocalAdminClientSendsNoTokenAndNoExchange
- --- PASS: TestLocalAdminClientSendsNoTokenAndNoExchange (0.10s)
- === RUN TestLocalAdminClientIgnoresEnvironmentProxy
- --- PASS: TestLocalAdminClientIgnoresEnvironmentProxy (0.00s)
- === RUN TestLocalAdminClientRejectsRedirects
- --- PASS: TestLocalAdminClientRejectsRedirects (0.00s)
- === RUN TestLocalAdminClientRespectsCancellation
- --- PASS: TestLocalAdminClientRespectsCancellation (0.00s)
- === RUN TestLocalAdminClientFailsOnMissingSocket
- --- PASS: TestLocalAdminClientFailsOnMissingSocket (0.00s)
- === RUN TestLocalAdminTransportDialsUnixOnly
- --- PASS: TestLocalAdminTransportDialsUnixOnly (0.00s)
- === RUN TestMigrateClientConfig
- Notice: migrated [client] config from gordon.toml to 'default' remote. The [client] section is deprecated; use 'gordon remotes' instead.
- --- PASS: TestMigrateClientConfig (0.00s)
- === RUN TestMigrateClientConfig_NoOverwrite
- --- PASS: TestMigrateClientConfig_NoOverwrite (0.00s)
- === RUN TestMigrateClientConfig_SkipsLocalMode
- --- PASS: TestMigrateClientConfig_SkipsLocalMode (0.00s)
- === RUN TestValidateRemoteName
- === RUN TestValidateRemoteName/valid_simple
- === RUN TestValidateRemoteName/valid_with_dots
- === RUN TestValidateRemoteName/valid_with_dashes
- === RUN TestValidateRemoteName/valid_with_underscore
- === RUN TestValidateRemoteName/invalid_slash
- === RUN TestValidateRemoteName/invalid_dotdot
- === RUN TestValidateRemoteName/invalid_space
- === RUN TestValidateRemoteName/empty
- === RUN TestValidateRemoteName/leading_dot
- === RUN TestValidateRemoteName/trailing_dot
- === RUN TestValidateRemoteName/only_dots
- === RUN TestValidateRemoteName/only_dashes
- === RUN TestValidateRemoteName/very_long_name
- --- PASS: TestValidateRemoteName (0.00s)
- --- PASS: TestValidateRemoteName/valid_simple (0.00s)
- --- PASS: TestValidateRemoteName/valid_with_dots (0.00s)
- --- PASS: TestValidateRemoteName/valid_with_dashes (0.00s)
- --- PASS: TestValidateRemoteName/valid_with_underscore (0.00s)
- --- PASS: TestValidateRemoteName/invalid_slash (0.00s)
- --- PASS: TestValidateRemoteName/invalid_dotdot (0.00s)
- --- PASS: TestValidateRemoteName/invalid_space (0.00s)
- --- PASS: TestValidateRemoteName/empty (0.00s)
- --- PASS: TestValidateRemoteName/leading_dot (0.00s)
- --- PASS: TestValidateRemoteName/trailing_dot (0.00s)
- --- PASS: TestValidateRemoteName/only_dots (0.00s)
- --- PASS: TestValidateRemoteName/only_dashes (0.00s)
- --- PASS: TestValidateRemoteName/very_long_name (0.00s)
- === RUN TestResolve_FlagNameLookup
- --- PASS: TestResolve_FlagNameLookup (0.00s)
- === RUN TestResolve_FlagURLPassthrough
- --- PASS: TestResolve_FlagURLPassthrough (0.00s)
- === RUN TestResolve_ActiveRemoteFallback
- --- PASS: TestResolve_ActiveRemoteFallback (0.00s)
- === RUN TestResolve_NoRemote_LocalMode
- --- PASS: TestResolve_NoRemote_LocalMode (0.00s)
- === RUN TestResolve_EnvRemoteName
- --- PASS: TestResolve_EnvRemoteName (0.00s)
- === RUN TestResolve_EnvRemoteURL
- --- PASS: TestResolve_EnvRemoteURL (0.00s)
- === RUN TestResolve_FlagTokenOverridesStored
- --- PASS: TestResolve_FlagTokenOverridesStored (0.00s)
- === RUN TestResolve_EnvTokenOverridesStored
- --- PASS: TestResolve_EnvTokenOverridesStored (0.00s)
- === RUN TestResolve_InsecureTLSFlag
- --- PASS: TestResolve_InsecureTLSFlag (0.00s)
- === RUN TestResolve_InsecureTLSFromEntry
- --- PASS: TestResolve_InsecureTLSFromEntry (0.00s)
- === RUN TestResolve_TokenEnvVar
- --- PASS: TestResolve_TokenEnvVar (0.00s)
- === RUN TestResolve_UnknownNameReturnsNotFound
- --- PASS: TestResolve_UnknownNameReturnsNotFound (0.00s)
- === RUN TestResolveStrict_UnknownFlagRemoteWrapsErrRemoteNotFound
- --- PASS: TestResolveStrict_UnknownFlagRemoteWrapsErrRemoteNotFound (0.00s)
- === RUN TestResolveStrict_LoadRemotesErrorIsReturned
- --- PASS: TestResolveStrict_LoadRemotesErrorIsReturned (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/cli/remote 3.227s
- === RUN TestStatusIcon_ReturnsStyledIcon
- === RUN TestStatusIcon_ReturnsStyledIcon/success_renders_without_error
- === RUN TestStatusIcon_ReturnsStyledIcon/running_renders_without_error
- === RUN TestStatusIcon_ReturnsStyledIcon/error_renders_without_error
- === RUN TestStatusIcon_ReturnsStyledIcon/stopped_renders_without_error
- === RUN TestStatusIcon_ReturnsStyledIcon/exited_renders_without_error
- === RUN TestStatusIcon_ReturnsStyledIcon/unknown_renders_without_error
- === RUN TestStatusIcon_ReturnsStyledIcon/pending_renders_without_error
- --- PASS: TestStatusIcon_ReturnsStyledIcon (0.00s)
- --- PASS: TestStatusIcon_ReturnsStyledIcon/success_renders_without_error (0.00s)
- --- PASS: TestStatusIcon_ReturnsStyledIcon/running_renders_without_error (0.00s)
- --- PASS: TestStatusIcon_ReturnsStyledIcon/error_renders_without_error (0.00s)
- --- PASS: TestStatusIcon_ReturnsStyledIcon/stopped_renders_without_error (0.00s)
- --- PASS: TestStatusIcon_ReturnsStyledIcon/exited_renders_without_error (0.00s)
- --- PASS: TestStatusIcon_ReturnsStyledIcon/unknown_renders_without_error (0.00s)
- --- PASS: TestStatusIcon_ReturnsStyledIcon/pending_renders_without_error (0.00s)
- === RUN TestStatusIcon_DifferentStatusesProduceDifferentOutput
- --- PASS: TestStatusIcon_DifferentStatusesProduceDifferentOutput (0.00s)
- === RUN TestTableRender_AppliesConfiguredColumnWidth
- --- PASS: TestTableRender_AppliesConfiguredColumnWidth (0.00s)
- === RUN TestTableRender_TruncatesLongCellTextWithEllipsis
- --- PASS: TestTableRender_TruncatesLongCellTextWithEllipsis (0.00s)
- === RUN TestTruncateCell_LeavesShortTextUnchanged
- --- PASS: TestTruncateCell_LeavesShortTextUnchanged (0.00s)
- === RUN TestTruncateCell_EdgeCases
- === RUN TestTruncateCell_EdgeCases/zero_width_passthrough
- === RUN TestTruncateCell_EdgeCases/width_three_all_dots
- === RUN TestTruncateCell_EdgeCases/ascii_truncates
- === RUN TestTruncateCell_EdgeCases/cjk_truncates_by_display_width
- === RUN TestTruncateCell_EdgeCases/grapheme-safe_emoji_truncation
- --- PASS: TestTruncateCell_EdgeCases (0.01s)
- --- PASS: TestTruncateCell_EdgeCases/zero_width_passthrough (0.00s)
- --- PASS: TestTruncateCell_EdgeCases/width_three_all_dots (0.00s)
- --- PASS: TestTruncateCell_EdgeCases/ascii_truncates (0.00s)
- --- PASS: TestTruncateCell_EdgeCases/cjk_truncates_by_display_width (0.01s)
- --- PASS: TestTruncateCell_EdgeCases/grapheme-safe_emoji_truncation (0.00s)
- === RUN TestTruncateCell_AnsiInputPassthrough
- --- PASS: TestTruncateCell_AnsiInputPassthrough (0.00s)
- === RUN TestTree_SingleNodeNoChildren
- --- PASS: TestTree_SingleNodeNoChildren (0.00s)
- === RUN TestTree_NodeWithOneChild
- --- PASS: TestTree_NodeWithOneChild (0.00s)
- === RUN TestTree_NodeWithMultipleChildren
- --- PASS: TestTree_NodeWithMultipleChildren (0.00s)
- === RUN TestTree_GroupWithNodes
- --- PASS: TestTree_GroupWithNodes (0.00s)
- === RUN TestTree_MixedNodesAndGroups
- --- PASS: TestTree_MixedNodesAndGroups (0.00s)
- === RUN TestTree_EmptyTreeRendersEmpty
- --- PASS: TestTree_EmptyTreeRendersEmpty (0.00s)
- === RUN TestTree_NodeWithChildSubtitleIndented
- --- PASS: TestTree_NodeWithChildSubtitleIndented (0.00s)
- === RUN TestTree_GroupNodeWithChild
- --- PASS: TestTree_GroupNodeWithChild (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/cli/ui/components 1.023s
- ? github.com/bnema/gordon/internal/adapters/in/cli/ui/styles [no test files]
- === RUN TestHandlerServesGETChallenge
- --- PASS: TestHandlerServesGETChallenge (0.00s)
- === RUN TestHandlerServesHEADChallenge
- --- PASS: TestHandlerServesHEADChallenge (0.00s)
- === RUN TestHandlerRejectsUnsafeToken
- === RUN TestHandlerRejectsUnsafeToken/path_traversal
- === RUN TestHandlerRejectsUnsafeToken/slash_in_token
- === RUN TestHandlerRejectsUnsafeToken/empty_token
- === RUN TestHandlerRejectsUnsafeToken/backslash_in_token
- --- PASS: TestHandlerRejectsUnsafeToken (0.00s)
- --- PASS: TestHandlerRejectsUnsafeToken/path_traversal (0.00s)
- --- PASS: TestHandlerRejectsUnsafeToken/slash_in_token (0.00s)
- --- PASS: TestHandlerRejectsUnsafeToken/empty_token (0.00s)
- --- PASS: TestHandlerRejectsUnsafeToken/backslash_in_token (0.00s)
- === RUN TestHandlerRejectsPOST
- --- PASS: TestHandlerRejectsPOST (0.00s)
- === RUN TestHandlerRejectsMissingPrefix
- --- PASS: TestHandlerRejectsMissingPrefix (0.00s)
- === RUN TestHandlerRejectsUnknownToken
- --- PASS: TestHandlerRejectsUnknownToken (0.00s)
- === RUN TestHandlerRejectsNilService
- --- PASS: TestHandlerRejectsNilService (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/http/acme 1.024s
- === RUN TestHandler_AppApply_Persists
- --- PASS: TestHandler_AppApply_Persists (0.00s)
- === RUN TestHandler_AppApply_RejectsBadManifest
- --- PASS: TestHandler_AppApply_RejectsBadManifest (0.00s)
- === RUN TestHandler_AppDeploy_MapsOp
- --- PASS: TestHandler_AppDeploy_MapsOp (0.00s)
- === RUN TestHandler_AppDeploy_MapsCleanupWarnings
- --- PASS: TestHandler_AppDeploy_MapsCleanupWarnings (0.00s)
- === RUN TestHandler_AppDeploy_RunningReturns202
- --- PASS: TestHandler_AppDeploy_RunningReturns202 (0.00s)
- === RUN TestHandler_AppDeploy_TerminalReplayReturnsOK
- --- PASS: TestHandler_AppDeploy_TerminalReplayReturnsOK (0.00s)
- === RUN TestHandler_AppDeploy_TerminalFailureReplayIsVisible
- --- PASS: TestHandler_AppDeploy_TerminalFailureReplayIsVisible (0.00s)
- === RUN TestHandler_AppDeploy_RunningReplayBeforeServiceSteps
- --- PASS: TestHandler_AppDeploy_RunningReplayBeforeServiceSteps (0.00s)
- === RUN TestHandler_AppDeploy_RunningReplayAfterServiceSteps
- --- PASS: TestHandler_AppDeploy_RunningReplayAfterServiceSteps (0.00s)
- === RUN TestHandler_AppDeploy_ServiceScopeRequiredIs400
- --- PASS: TestHandler_AppDeploy_ServiceScopeRequiredIs400 (0.00s)
- === RUN TestHandler_AppDeploy_PassesAll
- --- PASS: TestHandler_AppDeploy_PassesAll (0.00s)
- === RUN TestHandler_AppRestart_PassesServiceAndAll
- --- PASS: TestHandler_AppRestart_PassesServiceAndAll (0.00s)
- === RUN TestHandler_AppDeploy_RejectsMissingIdempotencyKey
- --- PASS: TestHandler_AppDeploy_RejectsMissingIdempotencyKey (0.00s)
- === RUN TestHandler_AppList_RequiresScope
- --- PASS: TestHandler_AppList_RequiresScope (0.00s)
- === RUN TestHandler_AppSecretsSet_Forwards
- --- PASS: TestHandler_AppSecretsSet_Forwards (0.00s)
- === RUN TestHandler_AppSecretsSet_MissingRegistrationHasNoDeployHint
- --- PASS: TestHandler_AppSecretsSet_MissingRegistrationHasNoDeployHint (0.00s)
- === RUN TestHandler_AppLifecycle_UnknownAppIsNotFound
- --- PASS: TestHandler_AppLifecycle_UnknownAppIsNotFound (0.00s)
- === RUN TestHandler_AppLifecycle_ReplayConflictCarriesJournal
- --- PASS: TestHandler_AppLifecycle_ReplayConflictCarriesJournal (0.00s)
- === RUN TestHandler_AppShow_MapsReadModel
- --- PASS: TestHandler_AppShow_MapsReadModel (0.00s)
- === RUN TestHandler_AppShow_UnknownAppIsNotFound
- --- PASS: TestHandler_AppShow_UnknownAppIsNotFound (0.00s)
- === RUN TestHandler_AppList_MapsReadModel
- --- PASS: TestHandler_AppList_MapsReadModel (0.00s)
- === RUN TestHandler_AppOpLookup_Recovers
- --- PASS: TestHandler_AppOpLookup_Recovers (0.00s)
- === RUN TestHandler_AppOpLookup_GatesDiagnosticsByLogsScope
- --- PASS: TestHandler_AppOpLookup_GatesDiagnosticsByLogsScope (0.00s)
- === RUN TestHandler_AppApply_DryRunOmitsRevision
- --- PASS: TestHandler_AppApply_DryRunOmitsRevision (0.00s)
- === RUN TestHandler_AppSecretsList_MissingAppIs404
- --- PASS: TestHandler_AppSecretsList_MissingAppIs404 (0.00s)
- === RUN TestHandler_AppApply_MapsDevicePolicyViolation
- --- PASS: TestHandler_AppApply_MapsDevicePolicyViolation (0.00s)
- === RUN TestSendAppOpError_MapsRuntimeGuard
- --- PASS: TestSendAppOpError_MapsRuntimeGuard (0.00s)
- === RUN TestHandler_AppApply_MapsRuntimeUnsupported
- --- PASS: TestHandler_AppApply_MapsRuntimeUnsupported (0.00s)
- === RUN TestApplyApp_MapsCapabilityPolicyViolation
- --- PASS: TestApplyApp_MapsCapabilityPolicyViolation (0.00s)
- === RUN TestHandler_CA
- --- PASS: TestHandler_CA (0.00s)
- === RUN TestHandler_CARequiresStatusRead
- --- PASS: TestHandler_CARequiresStatusRead (0.00s)
- === RUN TestHandler_CARejectsNonGet
- --- PASS: TestHandler_CARejectsNonGet (0.00s)
- === RUN TestHandler_CADisabledReturnsNotFound
- --- PASS: TestHandler_CADisabledReturnsNotFound (0.00s)
- === RUN TestHandler_RetiredMutations_Return410
- --- PASS: TestHandler_RetiredMutations_Return410 (0.00s)
- === RUN TestHandler_VolumesGet_RequiresVolumesReadScope
- === RUN TestHandler_VolumesGet_RequiresVolumesReadScope/volumes_read_access_granted
- === RUN TestHandler_VolumesGet_RequiresVolumesReadScope/all_admin_access_granted
- === RUN TestHandler_VolumesGet_RequiresVolumesReadScope/status_read_denied
- === RUN TestHandler_VolumesGet_RequiresVolumesReadScope/volumes_write_denied
- --- PASS: TestHandler_VolumesGet_RequiresVolumesReadScope (0.00s)
- --- PASS: TestHandler_VolumesGet_RequiresVolumesReadScope/volumes_read_access_granted (0.00s)
- --- PASS: TestHandler_VolumesGet_RequiresVolumesReadScope/all_admin_access_granted (0.00s)
- --- PASS: TestHandler_VolumesGet_RequiresVolumesReadScope/status_read_denied (0.00s)
- --- PASS: TestHandler_VolumesGet_RequiresVolumesReadScope/volumes_write_denied (0.00s)
- === RUN TestHandler_VolumesPrune_RequiresVolumesWriteScope
- === RUN TestHandler_VolumesPrune_RequiresVolumesWriteScope/volumes_write_access_granted
- === RUN TestHandler_VolumesPrune_RequiresVolumesWriteScope/all_admin_access_granted
- === RUN TestHandler_VolumesPrune_RequiresVolumesWriteScope/config_write_denied
- === RUN TestHandler_VolumesPrune_RequiresVolumesWriteScope/volumes_read_denied
- --- PASS: TestHandler_VolumesPrune_RequiresVolumesWriteScope (0.00s)
- --- PASS: TestHandler_VolumesPrune_RequiresVolumesWriteScope/volumes_write_access_granted (0.00s)
- --- PASS: TestHandler_VolumesPrune_RequiresVolumesWriteScope/all_admin_access_granted (0.00s)
- --- PASS: TestHandler_VolumesPrune_RequiresVolumesWriteScope/config_write_denied (0.00s)
- --- PASS: TestHandler_VolumesPrune_RequiresVolumesWriteScope/volumes_read_denied (0.00s)
- === RUN TestHandler_Status_RequiresReadScope
- === RUN TestHandler_Status_RequiresReadScope/status_read_access_granted
- === RUN TestHandler_Status_RequiresReadScope/all_admin_access_granted
- === RUN TestHandler_Status_RequiresReadScope/wrong_resource_denied
- --- PASS: TestHandler_Status_RequiresReadScope (0.00s)
- --- PASS: TestHandler_Status_RequiresReadScope/status_read_access_granted (0.00s)
- --- PASS: TestHandler_Status_RequiresReadScope/all_admin_access_granted (0.00s)
- --- PASS: TestHandler_Status_RequiresReadScope/wrong_resource_denied (0.00s)
- === RUN TestHandler_AuthVerify_PublishesRegistryDomainForValidTokens
- === RUN TestHandler_AuthVerify_PublishesRegistryDomainForValidTokens/valid_token_without_status_scope
- === RUN TestHandler_AuthVerify_PublishesRegistryDomainForValidTokens/invalid_token
- --- PASS: TestHandler_AuthVerify_PublishesRegistryDomainForValidTokens (0.00s)
- --- PASS: TestHandler_AuthVerify_PublishesRegistryDomainForValidTokens/valid_token_without_status_scope (0.00s)
- --- PASS: TestHandler_AuthVerify_PublishesRegistryDomainForValidTokens/invalid_token (0.00s)
- === RUN TestHandler_Config_HidesSensitiveInventoryByDefault
- --- PASS: TestHandler_Config_HidesSensitiveInventoryByDefault (0.00s)
- === RUN TestHandler_Config_RequiresReadScope
- === RUN TestHandler_Config_RequiresReadScope/config_read_access_granted
- === RUN TestHandler_Config_RequiresReadScope/all_admin_access_granted
- === RUN TestHandler_Config_RequiresReadScope/wrong_resource_denied
- --- PASS: TestHandler_Config_RequiresReadScope (0.00s)
- --- PASS: TestHandler_Config_RequiresReadScope/config_read_access_granted (0.00s)
- --- PASS: TestHandler_Config_RequiresReadScope/all_admin_access_granted (0.00s)
- --- PASS: TestHandler_Config_RequiresReadScope/wrong_resource_denied (0.00s)
- === RUN TestHandler_Reload_RequiresWriteScope
- === RUN TestHandler_Reload_RequiresWriteScope/config_write_access_granted
- === RUN TestHandler_Reload_RequiresWriteScope/all_admin_access_granted
- === RUN TestHandler_Reload_RequiresWriteScope/only_read_access_denied
- === RUN TestHandler_Reload_RequiresWriteScope/wrong_resource_denied
- --- PASS: TestHandler_Reload_RequiresWriteScope (0.00s)
- --- PASS: TestHandler_Reload_RequiresWriteScope/config_write_access_granted (0.00s)
- --- PASS: TestHandler_Reload_RequiresWriteScope/all_admin_access_granted (0.00s)
- --- PASS: TestHandler_Reload_RequiresWriteScope/only_read_access_denied (0.00s)
- --- PASS: TestHandler_Reload_RequiresWriteScope/wrong_resource_denied (0.00s)
- === RUN TestHandler_Reload_ReturnsServerErrorOnTriggerFailure
- --- PASS: TestHandler_Reload_ReturnsServerErrorOnTriggerFailure (0.00s)
- === RUN TestHandler_Reload_UsesDetachedContextWithDeadline
- --- PASS: TestHandler_Reload_UsesDetachedContextWithDeadline (0.00s)
- === RUN TestHandler_MethodNotAllowed
- === RUN TestHandler_MethodNotAllowed/DELETE_/admin/status
- === RUN TestHandler_MethodNotAllowed/PUT_/admin/status
- === RUN TestHandler_MethodNotAllowed/GET_/admin/reload
- === RUN TestHandler_MethodNotAllowed/DELETE_/admin/reload
- === RUN TestHandler_MethodNotAllowed/POST_/admin/config
- === RUN TestHandler_MethodNotAllowed/DELETE_/admin/config
- --- PASS: TestHandler_MethodNotAllowed (0.00s)
- --- PASS: TestHandler_MethodNotAllowed/DELETE_/admin/status (0.00s)
- --- PASS: TestHandler_MethodNotAllowed/PUT_/admin/status (0.00s)
- --- PASS: TestHandler_MethodNotAllowed/GET_/admin/reload (0.00s)
- --- PASS: TestHandler_MethodNotAllowed/DELETE_/admin/reload (0.00s)
- --- PASS: TestHandler_MethodNotAllowed/POST_/admin/config (0.00s)
- --- PASS: TestHandler_MethodNotAllowed/DELETE_/admin/config (0.00s)
- === RUN TestHandler_Tags_InvalidRepository
- === RUN TestHandler_Tags_InvalidRepository/path_traversal
- === RUN TestHandler_Tags_InvalidRepository/empty_repo
- --- PASS: TestHandler_Tags_InvalidRepository (0.00s)
- --- PASS: TestHandler_Tags_InvalidRepository/path_traversal (0.00s)
- --- PASS: TestHandler_Tags_InvalidRepository/empty_repo (0.00s)
- === RUN TestHandler_Tags_Success
- --- PASS: TestHandler_Tags_Success (0.00s)
- === RUN TestHandler_Tags_Error
- --- PASS: TestHandler_Tags_Error (0.00s)
- === RUN TestHandler_Tags_URLDecodedRepository
- --- PASS: TestHandler_Tags_URLDecodedRepository (0.00s)
- === RUN TestHandler_NotFound
- --- PASS: TestHandler_NotFound (0.00s)
- === RUN TestHandler_BackupsStatus
- --- PASS: TestHandler_BackupsStatus (0.00s)
- === RUN TestHandler_BackupsListApp
- --- PASS: TestHandler_BackupsListApp (0.00s)
- === RUN TestHandler_BackupsRunApp
- --- PASS: TestHandler_BackupsRunApp (0.00s)
- === RUN TestHandler_VolumeBackupsRunDomain_ReturnsPartialResults
- --- PASS: TestHandler_VolumeBackupsRunDomain_ReturnsPartialResults (0.00s)
- === RUN TestHandler_VolumeBackupsRunDomain_ReturnsServerErrorWithoutResults
- --- PASS: TestHandler_VolumeBackupsRunDomain_ReturnsServerErrorWithoutResults (0.00s)
- === RUN TestHandler_BackupsRunApp_ChunkedBodyIsDecoded
- --- PASS: TestHandler_BackupsRunApp_ChunkedBodyIsDecoded (0.00s)
- === RUN TestHandler_LogsRequireLogsReadAndRedact
- === RUN TestHandler_LogsRequireLogsReadAndRedact/status_read_denied
- === RUN TestHandler_LogsRequireLogsReadAndRedact/logs_read_allowed_and_redacted
- --- PASS: TestHandler_LogsRequireLogsReadAndRedact (0.00s)
- --- PASS: TestHandler_LogsRequireLogsReadAndRedact/status_read_denied (0.00s)
- --- PASS: TestHandler_LogsRequireLogsReadAndRedact/logs_read_allowed_and_redacted (0.00s)
- === RUN TestHandler_ImagesGet_ReturnsMappedList
- --- PASS: TestHandler_ImagesGet_ReturnsMappedList (0.00s)
- === RUN TestHandler_ImagesPrune_AcceptsOptionalKeepLast
- === RUN TestHandler_ImagesPrune_AcceptsOptionalKeepLast/missing_keep_last_uses_default
- === RUN TestHandler_ImagesPrune_AcceptsOptionalKeepLast/provided_keep_last
- --- PASS: TestHandler_ImagesPrune_AcceptsOptionalKeepLast (0.00s)
- --- PASS: TestHandler_ImagesPrune_AcceptsOptionalKeepLast/missing_keep_last_uses_default (0.00s)
- --- PASS: TestHandler_ImagesPrune_AcceptsOptionalKeepLast/provided_keep_last (0.00s)
- === RUN TestHandler_Images_ErrorMappingForServiceFailures
- === RUN TestHandler_Images_ErrorMappingForServiceFailures/list_failure_maps_to_internal_server_error
- === RUN TestHandler_Images_ErrorMappingForServiceFailures/prune_failure_maps_to_internal_server_error
- --- PASS: TestHandler_Images_ErrorMappingForServiceFailures (0.00s)
- --- PASS: TestHandler_Images_ErrorMappingForServiceFailures/list_failure_maps_to_internal_server_error (0.00s)
- --- PASS: TestHandler_Images_ErrorMappingForServiceFailures/prune_failure_maps_to_internal_server_error (0.00s)
- === RUN TestHandler_ImagesPrune_ValidationAndAvailability
- === RUN TestHandler_ImagesPrune_ValidationAndAvailability/rejects_negative_keep_last
- === RUN TestHandler_ImagesPrune_ValidationAndAvailability/returns_service_unavailable_when_image_service_missing
- --- PASS: TestHandler_ImagesPrune_ValidationAndAvailability (0.00s)
- --- PASS: TestHandler_ImagesPrune_ValidationAndAvailability/rejects_negative_keep_last (0.00s)
- --- PASS: TestHandler_ImagesPrune_ValidationAndAvailability/returns_service_unavailable_when_image_service_missing (0.00s)
- === RUN TestHandler_ImagesPrune_ScopeDefaults
- === RUN TestHandler_ImagesPrune_ScopeDefaults/missing_scope_fields_defaults_to_both_true
- === RUN TestHandler_ImagesPrune_ScopeDefaults/explicit_dangling_only
- === RUN TestHandler_ImagesPrune_ScopeDefaults/explicit_registry_only
- === RUN TestHandler_ImagesPrune_ScopeDefaults/both_scopes_false_returns_400
- --- PASS: TestHandler_ImagesPrune_ScopeDefaults (0.00s)
- --- PASS: TestHandler_ImagesPrune_ScopeDefaults/missing_scope_fields_defaults_to_both_true (0.00s)
- --- PASS: TestHandler_ImagesPrune_ScopeDefaults/explicit_dangling_only (0.00s)
- --- PASS: TestHandler_ImagesPrune_ScopeDefaults/explicit_registry_only (0.00s)
- --- PASS: TestHandler_ImagesPrune_ScopeDefaults/both_scopes_false_returns_400 (0.00s)
- === RUN TestHandler_Images_Authorization
- === RUN TestHandler_Images_Authorization/images_list_requires_status:read
- === RUN TestHandler_Images_Authorization/images_prune_requires_config:write
- --- PASS: TestHandler_Images_Authorization (0.00s)
- --- PASS: TestHandler_Images_Authorization/images_list_requires_status:read (0.00s)
- --- PASS: TestHandler_Images_Authorization/images_prune_requires_config:write (0.00s)
- === RUN TestHandler_TLSStatus_RequiresStatusReadScope
- --- PASS: TestHandler_TLSStatus_RequiresStatusReadScope (0.00s)
- === RUN TestHandler_TLSStatus_GETReturnsJSON
- --- PASS: TestHandler_TLSStatus_GETReturnsJSON (0.00s)
- === RUN TestHandler_TLSStatus_POSTReturns405
- --- PASS: TestHandler_TLSStatus_POSTReturns405 (0.00s)
- === RUN TestHandler_TrafficStatus
- --- PASS: TestHandler_TrafficStatus (0.00s)
- === RUN TestHandler_TrafficStatusRequiresStatusRead
- --- PASS: TestHandler_TrafficStatusRequiresStatusRead (0.00s)
- === RUN TestHandler_TrafficStatusUnavailableWithoutService
- --- PASS: TestHandler_TrafficStatusUnavailableWithoutService (0.00s)
- === RUN TestLocalAuthorityInjectsLeastPrivilegeScopes
- --- PASS: TestLocalAuthorityInjectsLeastPrivilegeScopes (0.00s)
- === RUN TestLocalAuthorityCanonicalAllowlist
- === PAUSE TestLocalAuthorityCanonicalAllowlist
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths
- === PAUSE TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths
- === RUN TestLocalAuthorityRejectsNonAdminAndTraversalRequests
- --- PASS: TestLocalAuthorityRejectsNonAdminAndTraversalRequests (0.00s)
- === RUN TestAuthMiddleware_GlobalRateLimitHit
- --- PASS: TestAuthMiddleware_GlobalRateLimitHit (0.00s)
- === RUN TestAuthMiddleware_PerIPRateLimitHit
- --- PASS: TestAuthMiddleware_PerIPRateLimitHit (0.00s)
- === RUN TestAuthMiddleware_TrustedProxy
- --- PASS: TestAuthMiddleware_TrustedProxy (0.00s)
- === RUN TestAuthMiddleware_NoRateLimiting
- --- PASS: TestAuthMiddleware_NoRateLimiting (0.00s)
- === RUN TestAuthMiddleware_AuthDisabled
- <U+001B>[90m2026-10-22T08:23:46Z<U+001B>[0m <U+001B>[31mERR<U+001B>[0m <U+001B>[1mauthentication disabled/misconfigured - denying admin API request<U+001B>[0m <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/admin/status <U+001B>[36mremote_addr=<U+001B>[0m192.168.1.100:12345
- --- PASS: TestAuthMiddleware_AuthDisabled (0.00s)
- === RUN TestAuthMiddleware_MissingAuthHeader
- --- PASS: TestAuthMiddleware_MissingAuthHeader (0.00s)
- === RUN TestAuthMiddleware_InvalidToken
- <U+001B>[90m2026-10-22T08:23:46Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1minvalid admin token<U+001B>[0m <U+001B>[36merror=<U+001B>[0m<U+001B>[31m<U+001B>[1m"assert.AnError general error for testing"<U+001B>[0m<U+001B>[0m
- --- PASS: TestAuthMiddleware_InvalidToken (0.00s)
- === RUN TestAuthMiddleware_RejectsLongLivedToken
- <U+001B>[90m2026-10-22T08:23:46Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mlong-lived token rejected on admin endpoint<U+001B>[0m <U+001B>[36mpath=<U+001B>[0m/admin/status <U+001B>[36msubject=<U+001B>[0madmin
- --- PASS: TestAuthMiddleware_RejectsLongLivedToken (0.00s)
- === RUN TestAuthMiddleware_AcceptsEphemeralToken
- --- PASS: TestAuthMiddleware_AcceptsEphemeralToken (0.00s)
- === RUN TestAuthMiddleware_MissingAdminScope
- <U+001B>[90m2026-10-22T08:23:46Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mtoken missing admin scopes<U+001B>[0m <U+001B>[36msubject=<U+001B>[0muser1
- --- PASS: TestAuthMiddleware_MissingAdminScope (0.00s)
- === RUN TestAuthMiddleware_Success
- --- PASS: TestAuthMiddleware_Success (0.00s)
- === RUN TestAuthMiddleware_DirectToken_Rejected
- --- PASS: TestAuthMiddleware_DirectToken_Rejected (0.00s)
- === RUN TestRequireScope
- === RUN TestRequireScope/wildcard_scope_grants_access
- === RUN TestRequireScope/exact_scope_grants_access
- === RUN TestRequireScope/wrong_resource_denies_access
- === RUN TestRequireScope/wrong_action_denies_access
- --- PASS: TestRequireScope (0.00s)
- --- PASS: TestRequireScope/wildcard_scope_grants_access (0.00s)
- --- PASS: TestRequireScope/exact_scope_grants_access (0.00s)
- --- PASS: TestRequireScope/wrong_resource_denies_access (0.00s)
- --- PASS: TestRequireScope/wrong_action_denies_access (0.00s)
- === RUN TestHasAccess
- --- PASS: TestHasAccess (0.00s)
- === RUN TestHandler_ImagesPrune_ExposesPerCandidateVerdicts
- --- PASS: TestHandler_ImagesPrune_ExposesPerCandidateVerdicts (0.00s)
- === RUN TestHandler_VolumesPrune_ExposesPerCandidateVerdicts
- --- PASS: TestHandler_VolumesPrune_ExposesPerCandidateVerdicts (0.00s)
- === CONT TestLocalAuthorityCanonicalAllowlist
- === CONT TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/status
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/POST_/status
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/tls/status
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/traffic/status
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/reload
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/config
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/networks
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/POST_/config
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/volumes
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/volumes/prune
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/volumes/prune
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/images
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/images/prune
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/images/prune
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/auth/verify
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/reload
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/auth/tokens
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/tags/repository
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/logs
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/POST_/auth/tokens
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/health
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/appsX
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/logs/blog/web
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/secrets
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/secrets/blog.example.com
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/POST_/secrets/blog.example.com
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/backups
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/DELETE_/secrets/blog
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/backups/status
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/backups/shop
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/images/anything
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/backups/shop
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/tags/repository/extra
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/logs/blog
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/backups/volumes
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/backups/volumes/status/extra
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/backups/volumes
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/backups/volumes/status
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/backups/volumes/blog.example.com
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/backups/volumes/blog.example.com
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/apps/blog/operations/by-key/key/extra
- === RUN TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/apps
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/POST_/status (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/reload (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/POST_/config (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/volumes/prune (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/images/prune (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/auth/verify (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/auth/tokens (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/POST_/auth/tokens (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/health (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/appsX (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/secrets (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/secrets/blog.example.com (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/POST_/secrets/blog.example.com (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/DELETE_/secrets/blog (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/images/anything (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/tags/repository/extra (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/logs/blog (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/backups/volumes/status/extra (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/apps/blog/operations/by-key/key/extra (0.00s)
- --- PASS: TestLocalAuthorityDeniesNearMissesAndNonCanonicalPaths/GET_/ (0.00s)
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/apps/apply
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/apps/blog
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/apps/blog/diff
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/deploy
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/restart
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/stop
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/start
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/remove
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/secrets/set
- === RUN TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/secrets/delete
- === RUN TestLocalAuthorityCanonicalAllowlist/GET_/apps/blog/operations/by-key/request-1
- --- PASS: TestLocalAuthorityCanonicalAllowlist (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/status (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/tls/status (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/traffic/status (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/config (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/networks (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/volumes (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/volumes/prune (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/images (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/images/prune (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/reload (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/tags/repository (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/logs (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/logs/blog/web (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/backups (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/backups/status (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/backups/shop (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/backups/shop (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/backups/volumes (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/backups/volumes (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/backups/volumes/status (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/backups/volumes/blog.example.com (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/backups/volumes/blog.example.com (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/apps (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/apps/apply (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/apps/blog (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/apps/blog/diff (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/deploy (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/restart (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/stop (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/start (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/remove (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/secrets/set (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/POST_/apps/blog/secrets/delete (0.00s)
- --- PASS: TestLocalAuthorityCanonicalAllowlist/GET_/apps/blog/operations/by-key/request-1 (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/http/admin 1.099s
- === RUN TestHandler_Password_AlwaysGone
- --- PASS: TestHandler_Password_AlwaysGone (0.00s)
- === RUN TestHandler_Token_Success
- --- PASS: TestHandler_Token_Success (0.00s)
- === RUN TestHandler_Token_MissingCredentials
- --- PASS: TestHandler_Token_MissingCredentials (0.00s)
- === RUN TestHandler_Token_AuthDisabled
- --- PASS: TestHandler_Token_AuthDisabled (0.00s)
- === RUN TestHandler_Token_InvalidCredentials
- --- PASS: TestHandler_Token_InvalidCredentials (0.00s)
- === RUN TestHandler_Token_InternalAuth
- --- PASS: TestHandler_Token_InternalAuth (0.00s)
- === RUN TestHandler_Token_TokenAuth
- --- PASS: TestHandler_Token_TokenAuth (0.00s)
- === RUN TestHandler_Token_TokenAuthScopeIntersection
- --- PASS: TestHandler_Token_TokenAuthScopeIntersection (0.00s)
- === RUN TestHandler_Token_TokenAuthScopeDenied
- --- PASS: TestHandler_Token_TokenAuthScopeDenied (0.00s)
- === RUN TestHandler_Token_PasswordAuthWithJWT
- --- PASS: TestHandler_Token_PasswordAuthWithJWT (0.00s)
- === RUN TestHandler_Token_MethodNotAllowed
- === RUN TestHandler_Token_MethodNotAllowed/POST
- === RUN TestHandler_Token_MethodNotAllowed/PUT
- === RUN TestHandler_Token_MethodNotAllowed/DELETE
- === RUN TestHandler_Token_MethodNotAllowed/PATCH
- --- PASS: TestHandler_Token_MethodNotAllowed (0.00s)
- --- PASS: TestHandler_Token_MethodNotAllowed/POST (0.00s)
- --- PASS: TestHandler_Token_MethodNotAllowed/PUT (0.00s)
- --- PASS: TestHandler_Token_MethodNotAllowed/DELETE (0.00s)
- --- PASS: TestHandler_Token_MethodNotAllowed/PATCH (0.00s)
- === RUN TestHandler_NotFound
- === RUN TestHandler_NotFound//auth/unknown
- === RUN TestHandler_NotFound//auth/
- === RUN TestHandler_NotFound//auth
- --- PASS: TestHandler_NotFound (0.00s)
- --- PASS: TestHandler_NotFound//auth/unknown (0.00s)
- --- PASS: TestHandler_NotFound//auth/ (0.00s)
- --- PASS: TestHandler_NotFound//auth (0.00s)
- === RUN TestParseRequestedScopes_MultipleScopeParams
- --- PASS: TestParseRequestedScopes_MultipleScopeParams (0.00s)
- === RUN TestParseRequestedScopes_InvalidScopeFiltered
- === RUN TestParseRequestedScopes_InvalidScopeFiltered/invalid_format_is_skipped
- === RUN TestParseRequestedScopes_InvalidScopeFiltered/missing_actions_is_skipped
- === RUN TestParseRequestedScopes_InvalidScopeFiltered/all_invalid_returns_default
- --- PASS: TestParseRequestedScopes_InvalidScopeFiltered (0.00s)
- --- PASS: TestParseRequestedScopes_InvalidScopeFiltered/invalid_format_is_skipped (0.00s)
- --- PASS: TestParseRequestedScopes_InvalidScopeFiltered/missing_actions_is_skipped (0.00s)
- --- PASS: TestParseRequestedScopes_InvalidScopeFiltered/all_invalid_returns_default (0.00s)
- === RUN TestParseRequestedScopes_NoScopeReturnsDefault
- --- PASS: TestParseRequestedScopes_NoScopeReturnsDefault (0.00s)
- === RUN TestIsLocalhostRequest
- === RUN TestIsLocalhostRequest/127.0.0.1_is_localhost
- === RUN TestIsLocalhostRequest/127.0.0.2_is_localhost
- === RUN TestIsLocalhostRequest/::1_is_localhost
- === RUN TestIsLocalhostRequest/192.168.1.1_is_not_localhost
- === RUN TestIsLocalhostRequest/10.0.0.1_is_not_localhost
- === RUN TestIsLocalhostRequest/public_IP_is_not_localhost
- --- PASS: TestIsLocalhostRequest (0.00s)
- --- PASS: TestIsLocalhostRequest/127.0.0.1_is_localhost (0.00s)
- --- PASS: TestIsLocalhostRequest/127.0.0.2_is_localhost (0.00s)
- --- PASS: TestIsLocalhostRequest/::1_is_localhost (0.00s)
- --- PASS: TestIsLocalhostRequest/192.168.1.1_is_not_localhost (0.00s)
- --- PASS: TestIsLocalhostRequest/10.0.0.1_is_not_localhost (0.00s)
- --- PASS: TestIsLocalhostRequest/public_IP_is_not_localhost (0.00s)
- === RUN TestHandler_isInternalAuth
- === RUN TestHandler_isInternalAuth/correct_credentials
- === RUN TestHandler_isInternalAuth/incorrect_username
- === RUN TestHandler_isInternalAuth/incorrect_password
- === RUN TestHandler_isInternalAuth/empty_internal_auth_credentials
- === RUN TestHandler_isInternalAuth/partially_empty_internal_auth_-_empty_password
- === RUN TestHandler_isInternalAuth/partially_empty_internal_auth_-_empty_username
- --- PASS: TestHandler_isInternalAuth (0.00s)
- --- PASS: TestHandler_isInternalAuth/correct_credentials (0.00s)
- --- PASS: TestHandler_isInternalAuth/incorrect_username (0.00s)
- --- PASS: TestHandler_isInternalAuth/incorrect_password (0.00s)
- --- PASS: TestHandler_isInternalAuth/empty_internal_auth_credentials (0.00s)
- --- PASS: TestHandler_isInternalAuth/partially_empty_internal_auth_-_empty_password (0.00s)
- --- PASS: TestHandler_isInternalAuth/partially_empty_internal_auth_-_empty_username (0.00s)
- === RUN TestHandler_Token_EphemeralTokenRejected
- --- PASS: TestHandler_Token_EphemeralTokenRejected (0.00s)
- === RUN TestHandler_Token_LongLivedTokenAccepted
- --- PASS: TestHandler_Token_LongLivedTokenAccepted (0.00s)
- === RUN TestHandler_Token_AdminScopeSuccess
- --- PASS: TestHandler_Token_AdminScopeSuccess (0.00s)
- === RUN TestHandler_Token_AdminScopeDeniedWithRegistryOnly
- --- PASS: TestHandler_Token_AdminScopeDeniedWithRegistryOnly (0.00s)
- === RUN TestHandler_Token_AdminScopeWildcard
- --- PASS: TestHandler_Token_AdminScopeWildcard (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/http/auth 1.024s
- === RUN TestIsLocalhostRequest
- === RUN TestIsLocalhostRequest/ipv4_loopback
- === RUN TestIsLocalhostRequest/ipv4_loopback_other
- === RUN TestIsLocalhostRequest/ipv6_loopback_bracketed
- === RUN TestIsLocalhostRequest/external_ipv4
- === RUN TestIsLocalhostRequest/external_ipv6
- === RUN TestIsLocalhostRequest/empty
- --- PASS: TestIsLocalhostRequest (0.00s)
- --- PASS: TestIsLocalhostRequest/ipv4_loopback (0.00s)
- --- PASS: TestIsLocalhostRequest/ipv4_loopback_other (0.00s)
- --- PASS: TestIsLocalhostRequest/ipv6_loopback_bracketed (0.00s)
- --- PASS: TestIsLocalhostRequest/external_ipv4 (0.00s)
- --- PASS: TestIsLocalhostRequest/external_ipv6 (0.00s)
- --- PASS: TestIsLocalhostRequest/empty (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/http/httphelper 1.010s
- === RUN TestAccessLogger_EmitsEntryPerRequest
- --- PASS: TestAccessLogger_EmitsEntryPerRequest (0.00s)
- === RUN TestAccessLogger_RedactsSensitiveQueryParams
- --- PASS: TestAccessLogger_RedactsSensitiveQueryParams (0.00s)
- === RUN TestAccessLogger_RedactsSensitiveReferers
- === RUN TestAccessLogger_RedactsSensitiveReferers/query_params
- === RUN TestAccessLogger_RedactsSensitiveReferers/fragment_removed
- === RUN TestAccessLogger_RedactsSensitiveReferers/userinfo_removed
- === RUN TestAccessLogger_RedactsSensitiveReferers/malformed_query_key_redacted_conservatively
- --- PASS: TestAccessLogger_RedactsSensitiveReferers (0.00s)
- --- PASS: TestAccessLogger_RedactsSensitiveReferers/query_params (0.00s)
- --- PASS: TestAccessLogger_RedactsSensitiveReferers/fragment_removed (0.00s)
- --- PASS: TestAccessLogger_RedactsSensitiveReferers/userinfo_removed (0.00s)
- --- PASS: TestAccessLogger_RedactsSensitiveReferers/malformed_query_key_redacted_conservatively (0.00s)
- === RUN TestAccessLogger_RequestIDReused
- --- PASS: TestAccessLogger_RequestIDReused (0.00s)
- === RUN TestAccessLogger_ExcludeHealthCheckUA
- --- PASS: TestAccessLogger_ExcludeHealthCheckUA (0.00s)
- === RUN TestAccessLogger_ExcludeLoopbackIP
- --- PASS: TestAccessLogger_ExcludeLoopbackIP (0.00s)
- === RUN TestAccessLogger_NoExcludeWhenDisabled
- --- PASS: TestAccessLogger_NoExcludeWhenDisabled (0.00s)
- === RUN TestAccessLogger_WriteFailureDoesNotAffectResponse
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1maccess log write failed<U+001B>[0m <U+001B>[36merror=<U+001B>[0m<U+001B>[31m<U+001B>[1m"disk full"<U+001B>[0m<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m192.0.2.1 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/ <U+001B>[36mrequest_id=<U+001B>[0m5b5745b8bd646e0d9361d168cde874e9 <U+001B>[36mstatus=<U+001B>[0m200
- --- PASS: TestAccessLogger_WriteFailureDoesNotAffectResponse (0.00s)
- === RUN TestAccessLogger_PanicRecoveryChain_Captures500
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[31mERR<U+001B>[0m <U+001B>[1mpanic recovered<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mhost=<U+001B>[0mexample.com <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpanic=<U+001B>[0m"test panic" <U+001B>[36mpath=<U+001B>[0m/crash
- --- PASS: TestAccessLogger_PanicRecoveryChain_Captures500 (0.00s)
- === RUN TestRegistryAuthV2_LocalhostBypassRequiresInternalAuth
- --- PASS: TestRegistryAuthV2_LocalhostBypassRequiresInternalAuth (0.00s)
- === RUN TestRegistryAuthV2_LocalhostWrongInternalAuthFallsBack
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1munauthorized registry access attempt<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m127.0.0.1 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/
- --- PASS: TestRegistryAuthV2_LocalhostWrongInternalAuthFallsBack (0.00s)
- === RUN TestRegistryAuthV2_NonLocalhostIgnoresInternalAuth
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mregistry auth over insecure HTTP connection<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m192.168.1.10 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1munauthorized registry access attempt<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m192.168.1.10 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/
- --- PASS: TestRegistryAuthV2_NonLocalhostIgnoresInternalAuth (0.00s)
- === RUN TestCheckScopeAccess_ActionMapping
- === RUN TestCheckScopeAccess_ActionMapping/GET_maps_to_pull
- === RUN TestCheckScopeAccess_ActionMapping/HEAD_maps_to_pull
- === RUN TestCheckScopeAccess_ActionMapping/PUT_maps_to_push
- === RUN TestCheckScopeAccess_ActionMapping/POST_maps_to_push
- === RUN TestCheckScopeAccess_ActionMapping/PATCH_maps_to_push
- === RUN TestCheckScopeAccess_ActionMapping/DELETE_maps_to_push
- === RUN TestCheckScopeAccess_ActionMapping/OPTIONS_defaults_to_pull
- --- PASS: TestCheckScopeAccess_ActionMapping (0.00s)
- --- PASS: TestCheckScopeAccess_ActionMapping/GET_maps_to_pull (0.00s)
- --- PASS: TestCheckScopeAccess_ActionMapping/HEAD_maps_to_pull (0.00s)
- --- PASS: TestCheckScopeAccess_ActionMapping/PUT_maps_to_push (0.00s)
- --- PASS: TestCheckScopeAccess_ActionMapping/POST_maps_to_push (0.00s)
- --- PASS: TestCheckScopeAccess_ActionMapping/PATCH_maps_to_push (0.00s)
- --- PASS: TestCheckScopeAccess_ActionMapping/DELETE_maps_to_push (0.00s)
- --- PASS: TestCheckScopeAccess_ActionMapping/OPTIONS_defaults_to_pull (0.00s)
- === RUN TestCheckScopeAccess_RepoNameExtraction
- === RUN TestCheckScopeAccess_RepoNameExtraction/simple_repo_with_manifests
- === RUN TestCheckScopeAccess_RepoNameExtraction/simple_repo_with_blobs
- === RUN TestCheckScopeAccess_RepoNameExtraction/nested_repo_with_manifests
- === RUN TestCheckScopeAccess_RepoNameExtraction/deeply_nested_repo
- === RUN TestCheckScopeAccess_RepoNameExtraction/repo_with_tags_list
- === RUN TestCheckScopeAccess_RepoNameExtraction/wrong_repo_name
- --- PASS: TestCheckScopeAccess_RepoNameExtraction (0.00s)
- --- PASS: TestCheckScopeAccess_RepoNameExtraction/simple_repo_with_manifests (0.00s)
- --- PASS: TestCheckScopeAccess_RepoNameExtraction/simple_repo_with_blobs (0.00s)
- --- PASS: TestCheckScopeAccess_RepoNameExtraction/nested_repo_with_manifests (0.00s)
- --- PASS: TestCheckScopeAccess_RepoNameExtraction/deeply_nested_repo (0.00s)
- --- PASS: TestCheckScopeAccess_RepoNameExtraction/repo_with_tags_list (0.00s)
- --- PASS: TestCheckScopeAccess_RepoNameExtraction/wrong_repo_name (0.00s)
- === RUN TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository
- === RUN TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository/unauthorized_repo_behind_reserved_first_component
- === RUN TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository/authorized_prefix_cannot_reach_a_nested_repository
- === RUN TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository/pull_token_cannot_PUT_a_reserved-looking_repository
- === RUN TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository/exact_nested_repository_is_authorized
- --- PASS: TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository (0.00s)
- --- PASS: TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository/unauthorized_repo_behind_reserved_first_component (0.00s)
- --- PASS: TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository/authorized_prefix_cannot_reach_a_nested_repository (0.00s)
- --- PASS: TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository/pull_token_cannot_PUT_a_reserved-looking_repository (0.00s)
- --- PASS: TestCheckScopeAccess_ReservedComponentsCannotRedirectRepository/exact_nested_repository_is_authorized (0.00s)
- === RUN TestCheckScopeAccess_WildcardMatching
- === RUN TestCheckScopeAccess_WildcardMatching/wildcard_repo_matches_any
- === RUN TestCheckScopeAccess_WildcardMatching/org_wildcard_matches_repo_in_org
- === RUN TestCheckScopeAccess_WildcardMatching/org_wildcard_does_not_match_other_org
- === RUN TestCheckScopeAccess_WildcardMatching/wildcard_action_grants_push
- --- PASS: TestCheckScopeAccess_WildcardMatching (0.00s)
- --- PASS: TestCheckScopeAccess_WildcardMatching/wildcard_repo_matches_any (0.00s)
- --- PASS: TestCheckScopeAccess_WildcardMatching/org_wildcard_matches_repo_in_org (0.00s)
- --- PASS: TestCheckScopeAccess_WildcardMatching/org_wildcard_does_not_match_other_org (0.00s)
- --- PASS: TestCheckScopeAccess_WildcardMatching/wildcard_action_grants_push (0.00s)
- === RUN TestCheckScopeAccess_SpecialRoutes
- === RUN TestCheckScopeAccess_SpecialRoutes/v2_root_is_allowed
- === RUN TestCheckScopeAccess_SpecialRoutes/non-v2_path_is_denied
- === RUN TestCheckScopeAccess_SpecialRoutes/catalog_path_is_handled
- --- PASS: TestCheckScopeAccess_SpecialRoutes (0.00s)
- --- PASS: TestCheckScopeAccess_SpecialRoutes/v2_root_is_allowed (0.00s)
- --- PASS: TestCheckScopeAccess_SpecialRoutes/non-v2_path_is_denied (0.00s)
- --- PASS: TestCheckScopeAccess_SpecialRoutes/catalog_path_is_handled (0.00s)
- === RUN TestRegistryAuthV2_RejectsLongLivedToken
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mregistry auth over insecure HTTP connection<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m10.0.0.1 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/myrepo/manifests/latest
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mlong-lived token rejected on registry endpoint<U+001B>[0m <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/myrepo/manifests/latest <U+001B>[36msubject=<U+001B>[0madmin
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1munauthorized registry access attempt<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m10.0.0.1 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/myrepo/manifests/latest
- --- PASS: TestRegistryAuthV2_RejectsLongLivedToken (0.00s)
- === RUN TestRegistryAuthV2_AcceptsEphemeralToken
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mregistry auth over insecure HTTP connection<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m10.0.0.1 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/myrepo/manifests/latest
- --- PASS: TestRegistryAuthV2_AcceptsEphemeralToken (0.00s)
- === RUN TestRegistryAuthV2_RejectsLongLivedTokenAsPassword
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mregistry auth over insecure HTTP connection<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m10.0.0.1 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/myrepo/manifests/latest
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mlong-lived token rejected on registry endpoint<U+001B>[0m <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/myrepo/manifests/latest <U+001B>[36msubject=<U+001B>[0mci-user
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1munauthorized registry access attempt<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m10.0.0.1 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET <U+001B>[36mpath=<U+001B>[0m/v2/myrepo/manifests/latest
- --- PASS: TestRegistryAuthV2_RejectsLongLivedTokenAsPassword (0.00s)
- === RUN TestCheckScopeAccess_DenialCases
- === RUN TestCheckScopeAccess_DenialCases/pull_scope_denies_push
- === RUN TestCheckScopeAccess_DenialCases/wrong_repo_denies_access
- === RUN TestCheckScopeAccess_DenialCases/empty_scopes_denies_access
- === RUN TestCheckScopeAccess_DenialCases/invalid_scope_format_is_skipped
- --- PASS: TestCheckScopeAccess_DenialCases (0.00s)
- --- PASS: TestCheckScopeAccess_DenialCases/pull_scope_denies_push (0.00s)
- --- PASS: TestCheckScopeAccess_DenialCases/wrong_repo_denies_access (0.00s)
- --- PASS: TestCheckScopeAccess_DenialCases/empty_scopes_denies_access (0.00s)
- --- PASS: TestCheckScopeAccess_DenialCases/invalid_scope_format_is_skipped (0.00s)
- === RUN TestRegistryCIDRAllowlist
- === RUN TestRegistryCIDRAllowlist/no_CIDRs_configured_passes_through
- === RUN TestRegistryCIDRAllowlist/empty_CIDRs_passes_through
- === RUN TestRegistryCIDRAllowlist/allowed_IP_returns_200
- === RUN TestRegistryCIDRAllowlist/denied_IP_returns_403
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mregistry access denied by CIDR allowlist<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m203.0.113.50 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET
- === RUN TestRegistryCIDRAllowlist/localhost_always_allowed_even_when_not_in_allowlist
- === RUN TestRegistryCIDRAllowlist/127.x.x.x_always_allowed
- === RUN TestRegistryCIDRAllowlist/IPv6_localhost_always_allowed
- === RUN TestRegistryCIDRAllowlist/trusted_proxy_forwards_allowed_client_IP
- === RUN TestRegistryCIDRAllowlist/trusted_proxy_forwards_denied_client_IP
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mregistry access denied by CIDR allowlist<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m203.0.113.50 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET
- --- PASS: TestRegistryCIDRAllowlist (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/no_CIDRs_configured_passes_through (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/empty_CIDRs_passes_through (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/allowed_IP_returns_200 (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/denied_IP_returns_403 (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/localhost_always_allowed_even_when_not_in_allowlist (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/127.x.x.x_always_allowed (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/IPv6_localhost_always_allowed (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/trusted_proxy_forwards_allowed_client_IP (0.00s)
- --- PASS: TestRegistryCIDRAllowlist/trusted_proxy_forwards_denied_client_IP (0.00s)
- === RUN TestHTTPSRedirect_NoPortHost_OmitsTLSPort
- --- PASS: TestHTTPSRedirect_NoPortHost_OmitsTLSPort (0.00s)
- === RUN TestHTTPSRedirect_HTTPListenerPort_MapsToTLSPort
- --- PASS: TestHTTPSRedirect_HTTPListenerPort_MapsToTLSPort (0.00s)
- === RUN TestHTTPSRedirect_UnknownExplicitPort_IsPreserved
- --- PASS: TestHTTPSRedirect_UnknownExplicitPort_IsPreserved (0.00s)
- === RUN TestHTTPSRedirect_TrailingDotHostRedirectsToCanonicalHost
- --- PASS: TestHTTPSRedirect_TrailingDotHostRedirectsToCanonicalHost (0.00s)
- === RUN TestHTTPSRedirect_RejectsInvalidHost
- === RUN TestHTTPSRedirect_RejectsInvalidHost/invalid_port
- === RUN TestHTTPSRedirect_RejectsInvalidHost/localhost
- === RUN TestHTTPSRedirect_RejectsInvalidHost/ipv6
- === RUN TestHTTPSRedirect_RejectsInvalidHost/unconfigured_public_host
- --- PASS: TestHTTPSRedirect_RejectsInvalidHost (0.00s)
- --- PASS: TestHTTPSRedirect_RejectsInvalidHost/invalid_port (0.00s)
- --- PASS: TestHTTPSRedirect_RejectsInvalidHost/localhost (0.00s)
- --- PASS: TestHTTPSRedirect_RejectsInvalidHost/ipv6 (0.00s)
- --- PASS: TestHTTPSRedirect_RejectsInvalidHost/unconfigured_public_host (0.00s)
- === RUN TestHTTPSRedirect_TLSAlwaysNeverServesPlaintext
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mplaintext refused: host requires TLS but no HTTPS endpoint is configured<U+001B>[0m <U+001B>[36mhost=<U+001B>[0msecure.example.com
- --- PASS: TestHTTPSRedirect_TLSAlwaysNeverServesPlaintext (0.00s)
- === RUN TestHTTPSRedirect_TLSAlwaysIgnoresDisabledRedirectConfig
- --- PASS: TestHTTPSRedirect_TLSAlwaysIgnoresDisabledRedirectConfig (0.00s)
- === RUN TestHTTPSRedirect_IneligibleKnownHostPassesThrough
- --- PASS: TestHTTPSRedirect_IneligibleKnownHostPassesThrough (0.00s)
- === RUN TestProxyCIDRAllowlist
- === RUN TestProxyCIDRAllowlist/no_CIDRs_configured_passes_through
- === RUN TestProxyCIDRAllowlist/allowed_IP_gets_redirect
- === RUN TestProxyCIDRAllowlist/blocked_IP_gets_403
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mproxy origin access denied by CIDR allowlist<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m203.0.113.50 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET
- === RUN TestProxyCIDRAllowlist/localhost_always_allowed
- === RUN TestProxyCIDRAllowlist/ignores_XFF_(uses_RemoteAddr_only)
- <U+001B>[90m2026-10-22T08:23:47Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mproxy origin access denied by CIDR allowlist<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mhttp <U+001B>[36mclient_ip=<U+001B>[0m203.0.113.50 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mmethod=<U+001B>[0mGET
- --- PASS: TestProxyCIDRAllowlist (0.00s)
- --- PASS: TestProxyCIDRAllowlist/no_CIDRs_configured_passes_through (0.00s)
- --- PASS: TestProxyCIDRAllowlist/allowed_IP_gets_redirect (0.00s)
- --- PASS: TestProxyCIDRAllowlist/blocked_IP_gets_403 (0.00s)
- --- PASS: TestProxyCIDRAllowlist/localhost_always_allowed (0.00s)
- --- PASS: TestProxyCIDRAllowlist/ignores_XFF_(uses_RemoteAddr_only) (0.00s)
- === RUN TestGetClientIP
- === RUN TestGetClientIP/from_RemoteAddr_with_port
- === RUN TestGetClientIP/from_RemoteAddr_without_port
- === RUN TestGetClientIP/XFF_ignored_when_no_trusted_proxies
- === RUN TestGetClientIP/XFF_ignored_when_remote_is_not_trusted
- === RUN TestGetClientIP/XFF_honored_from_trusted_proxy_(single_IP)
- === RUN TestGetClientIP/XFF_honored_from_trusted_proxy_(multiple_IPs)
- === RUN TestGetClientIP/XFF_spoof_chain_returns_first_untrusted_from_right
- === RUN TestGetClientIP/XFF_honored_from_trusted_CIDR
- === RUN TestGetClientIP/X-Real-IP_honored_from_trusted_proxy
- === RUN TestGetClientIP/X-Real-IP_ignored_when_not_trusted
- === RUN TestGetClientIP/XFF_takes_precedence_over_X-Real-IP
- === RUN TestGetClientIP/Cf-Connecting-Ip_honored_from_Cloudflare_IP
- === RUN TestGetClientIP/Cf-Connecting-Ip_ignored_from_non-Cloudflare_trusted_proxy
- === RUN TestGetClientIP/Cf-Connecting-Ip_ignored_from_untrusted_IP
- === RUN TestGetClientIP/IPv6_RemoteAddr
- --- PASS: TestGetClientIP (0.00s)
- --- PASS: TestGetClientIP/from_RemoteAddr_with_port (0.00s)
- --- PASS: TestGetClientIP/from_RemoteAddr_without_port (0.00s)
- --- PASS: TestGetClientIP/XFF_ignored_when_no_trusted_proxies (0.00s)
- --- PASS: TestGetClientIP/XFF_ignored_when_remote_is_not_trusted (0.00s)
- --- PASS: TestGetClientIP/XFF_honored_from_trusted_proxy_(single_IP) (0.00s)
- --- PASS: TestGetClientIP/XFF_honored_from_trusted_proxy_(multiple_IPs) (0.00s)
- --- PASS: TestGetClientIP/XFF_spoof_chain_returns_first_untrusted_from_right (0.00s)
- --- PASS: TestGetClientIP/XFF_honored_from_trusted_CIDR (0.00s)
- --- PASS: TestGetClientIP/X-Real-IP_honored_from_trusted_proxy (0.00s)
- --- PASS: TestGetClientIP/X-Real-IP_ignored_when_not_trusted (0.00s)
- --- PASS: TestGetClientIP/XFF_takes_precedence_over_X-Real-IP (0.00s)
- --- PASS: TestGetClientIP/Cf-Connecting-Ip_honored_from_Cloudflare_IP (0.00s)
- --- PASS: TestGetClientIP/Cf-Connecting-Ip_ignored_from_non-Cloudflare_trusted_proxy (0.00s)
- --- PASS: TestGetClientIP/Cf-Connecting-Ip_ignored_from_untrusted_IP (0.00s)
- --- PASS: TestGetClientIP/IPv6_RemoteAddr (0.00s)
- === RUN TestParseTrustedProxies
- === RUN TestParseTrustedProxies/empty_list
- === RUN TestParseTrustedProxies/single_IP_match
- === RUN TestParseTrustedProxies/single_IP_no_match
- === RUN TestParseTrustedProxies/CIDR_match
- === RUN TestParseTrustedProxies/CIDR_no_match
- === RUN TestParseTrustedProxies/mixed_IP_and_CIDR
- === RUN TestParseTrustedProxies/invalid_entries_ignored
- === RUN TestParseTrustedProxies/IPv6_single_IP
- === RUN TestParseTrustedProxies/IPv6_CIDR
- --- PASS: TestParseTrustedProxies (0.00s)
- --- PASS: TestParseTrustedProxies/empty_list (0.00s)
- --- PASS: TestParseTrustedProxies/single_IP_match (0.00s)
- --- PASS: TestParseTrustedProxies/single_IP_no_match (0.00s)
- --- PASS: TestParseTrustedProxies/CIDR_match (0.00s)
- --- PASS: TestParseTrustedProxies/CIDR_no_match (0.00s)
- --- PASS: TestParseTrustedProxies/mixed_IP_and_CIDR (0.00s)
- --- PASS: TestParseTrustedProxies/invalid_entries_ignored (0.00s)
- --- PASS: TestParseTrustedProxies/IPv6_single_IP (0.00s)
- --- PASS: TestParseTrustedProxies/IPv6_CIDR (0.00s)
- === RUN TestIsTrustedProxy
- === RUN TestIsTrustedProxy/empty_trusted_nets
- === RUN TestIsTrustedProxy/nil_trusted_nets
- === RUN TestIsTrustedProxy/invalid_IP
- === RUN TestIsTrustedProxy/empty_IP
- --- PASS: TestIsTrustedProxy (0.00s)
- --- PASS: TestIsTrustedProxy/empty_trusted_nets (0.00s)
- --- PASS: TestIsTrustedProxy/nil_trusted_nets (0.00s)
- --- PASS: TestIsTrustedProxy/invalid_IP (0.00s)
- --- PASS: TestIsTrustedProxy/empty_IP (0.00s)
- === RUN TestRequestLogger_RedactsSensitiveReferers
- === RUN TestRequestLogger_RedactsSensitiveReferers/query_params
- === RUN TestRequestLogger_RedactsSensitiveReferers/fragment_removed
- === RUN TestRequestLogger_RedactsSensitiveReferers/userinfo_removed
- === RUN TestRequestLogger_RedactsSensitiveReferers/malformed_query_key_redacted_conservatively
- --- PASS: TestRequestLogger_RedactsSensitiveReferers (0.00s)
- --- PASS: TestRequestLogger_RedactsSensitiveReferers/query_params (0.00s)
- --- PASS: TestRequestLogger_RedactsSensitiveReferers/fragment_removed (0.00s)
- --- PASS: TestRequestLogger_RedactsSensitiveReferers/userinfo_removed (0.00s)
- --- PASS: TestRequestLogger_RedactsSensitiveReferers/malformed_query_key_redacted_conservatively (0.00s)
- === RUN TestPanicRecovery_RethrowsReverseProxyAbort
- --- PASS: TestPanicRecovery_RethrowsReverseProxyAbort (0.00s)
- === RUN TestSecurityHeaders
- --- PASS: TestSecurityHeaders (0.00s)
- === RUN TestSecurityHeaders_HSTS_WithTLS
- --- PASS: TestSecurityHeaders_HSTS_WithTLS (0.00s)
- === RUN TestSecurityHeaders_HSTS_WithForwardedProto_NotTrusted
- --- PASS: TestSecurityHeaders_HSTS_WithForwardedProto_NotTrusted (0.00s)
- === RUN TestSecurityHeaders_PreservesExistingHeaders
- --- PASS: TestSecurityHeaders_PreservesExistingHeaders (0.00s)
- === RUN TestSecurityHeaders_CallsNextHandler
- --- PASS: TestSecurityHeaders_CallsNextHandler (0.00s)
- === RUN TestTransferIdleTimeout_SlowActiveDownloadCompletes
- --- PASS: TestTransferIdleTimeout_SlowActiveDownloadCompletes (0.60s)
- === RUN TestTransferIdleTimeout_SilentResponseIsCut
- --- PASS: TestTransferIdleTimeout_SilentResponseIsCut (0.90s)
- === RUN TestTransferIdleTimeout_SilentHandlerBeforeFirstByteIsCut
- --- PASS: TestTransferIdleTimeout_SilentHandlerBeforeFirstByteIsCut (0.90s)
- === RUN TestTransferIdleTimeout_SlowActiveUploadCompletes
- --- PASS: TestTransferIdleTimeout_SlowActiveUploadCompletes (0.60s)
- === RUN TestTransferIdleTimeout_StalledUploadIsCut
- --- PASS: TestTransferIdleTimeout_StalledUploadIsCut (0.80s)
- === RUN TestTransferIdleTimeout_PreservesFlusherAndUnwrap
- --- PASS: TestTransferIdleTimeout_PreservesFlusherAndUnwrap (0.00s)
- === RUN TestTransferIdleTimeout_HijackStillWorks
- --- PASS: TestTransferIdleTimeout_HijackStillWorks (0.60s)
- === RUN TestTransferIdleTimeout_ReverseProxyFlushesStream
- --- PASS: TestTransferIdleTimeout_ReverseProxyFlushesStream (0.40s)
- === RUN TestTransferIdleTimeout_DisabledWhenNonPositive
- --- PASS: TestTransferIdleTimeout_DisabledWhenNonPositive (0.00s)
- === RUN TestTransferIdleTimeout_HTTP2
- --- PASS: TestTransferIdleTimeout_HTTP2 (0.62s)