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/
- === RUN TestTransferIdleTimeout_BackpressuredButReadingClientIsNotCut
- --- PASS: TestTransferIdleTimeout_BackpressuredButReadingClientIsNotCut (0.63s)
- === RUN TestTransferIdleTimeout_NonReadingClientUnblocksWrite
- --- PASS: TestTransferIdleTimeout_NonReadingClientUnblocksWrite (0.30s)
- === RUN TestTransferIdleTimeout_SilentHandlerContextCanceledAndConnectionClosed
- --- PASS: TestTransferIdleTimeout_SilentHandlerContextCanceledAndConnectionClosed (0.30s)
- === RUN TestTransferIdleTimeout_ProgressKeepsContextAlive
- --- PASS: TestTransferIdleTimeout_ProgressKeepsContextAlive (0.61s)
- === RUN TestTransferIdleTimeout_BodyUseAfterHandlerReturnedIsSafe
- --- PASS: TestTransferIdleTimeout_BodyUseAfterHandlerReturnedIsSafe (0.00s)
- === RUN TestTransferIdleTimeout_HTTP2ReverseProxyEarlyResponseDuringUpload
- --- PASS: TestTransferIdleTimeout_HTTP2ReverseProxyEarlyResponseDuringUpload (0.19s)
- === RUN TestTransferIdleTimeout_HTTP2BodyUsedAfterHandlerReturned
- --- PASS: TestTransferIdleTimeout_HTTP2BodyUsedAfterHandlerReturned (0.11s)
- === RUN TestTransferIdleTimeout_FinalFlushToNonReadingClientIsBounded
- --- PASS: TestTransferIdleTimeout_FinalFlushToNonReadingClientIsBounded (0.30s)
- === RUN TestTransferIdleTimeout_UnreadDeclaredBodyDrainIsBounded
- --- PASS: TestTransferIdleTimeout_UnreadDeclaredBodyDrainIsBounded (0.80s)
- === RUN TestTransferIdleTimeout_UnreadDeclaredBodyDrainIsBoundedOverTCP
- --- PASS: TestTransferIdleTimeout_UnreadDeclaredBodyDrainIsBoundedOverTCP (0.80s)
- === RUN TestTransferIdleTimeout_KeepAliveNextRequestNotAffectedByLeftoverDeadlines
- --- PASS: TestTransferIdleTimeout_KeepAliveNextRequestNotAffectedByLeftoverDeadlines (1.80s)
- === RUN TestTransferIdleTimeout_HijackBlockedOnNonReadingClientIsBounded
- --- PASS: TestTransferIdleTimeout_HijackBlockedOnNonReadingClientIsBounded (0.30s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/http/middleware 12.634s
- === RUN TestHandler_CACert
- --- PASS: TestHandler_CACert (0.00s)
- === RUN TestHandler_Mobileconfig
- --- PASS: TestHandler_Mobileconfig (0.00s)
- === RUN TestHandler_OnboardingPage
- --- PASS: TestHandler_OnboardingPage (0.00s)
- === RUN TestHandler_OnboardingPage_DefaultHTTPSURLOmitsInternalTLSPort
- --- PASS: TestHandler_OnboardingPage_DefaultHTTPSURLOmitsInternalTLSPort (0.00s)
- === RUN TestHandler_OnboardingPage_ExplicitHTTPPortMapsToTLSPort
- --- PASS: TestHandler_OnboardingPage_ExplicitHTTPPortMapsToTLSPort (0.00s)
- === RUN TestHandler_OnboardingPage_ExplicitNonHTTPPortIsPreserved
- --- PASS: TestHandler_OnboardingPage_ExplicitNonHTTPPortIsPreserved (0.00s)
- === RUN TestHandler_OnboardingPage_IPHostHidesGoToSiteLink
- --- PASS: TestHandler_OnboardingPage_IPHostHidesGoToSiteLink (0.00s)
- === RUN TestHandler_OnboardingPage_IncludesFingerprintAndClientImportCopy
- --- PASS: TestHandler_OnboardingPage_IncludesFingerprintAndClientImportCopy (0.00s)
- === RUN TestHandler_OnboardingPage_GoToSiteLinkIsPlainLink
- --- PASS: TestHandler_OnboardingPage_GoToSiteLinkIsPlainLink (0.00s)
- === RUN TestHandler_OnboardingPage_HEAD
- --- PASS: TestHandler_OnboardingPage_HEAD (0.00s)
- === RUN TestHandler_CACert_HEAD
- --- PASS: TestHandler_CACert_HEAD (0.00s)
- === RUN TestHandler_Mobileconfig_HEAD
- --- PASS: TestHandler_Mobileconfig_HEAD (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/http/onboarding 1.024s
- === RUN TestForwardToTarget_H2CEndToEnd
- --- PASS: TestForwardToTarget_H2CEndToEnd (0.00s)
- === RUN TestForwardToTarget_HTTP1StillWorks
- --- PASS: TestForwardToTarget_HTTP1StillWorks (0.00s)
- === RUN TestTransportForTarget_SelectsCorrectTransport
- --- PASS: TestTransportForTarget_SelectsCorrectTransport (0.00s)
- === RUN TestForwardToTarget_OriginalHostPreserved
- --- PASS: TestForwardToTarget_OriginalHostPreserved (0.00s)
- === RUN TestForwardToTarget_RouteHostPreservedForManagedTarget
- --- PASS: TestForwardToTarget_RouteHostPreservedForManagedTarget (0.00s)
- === RUN TestForwardToTarget_ContextCanceled_Returns499
- --- PASS: TestForwardToTarget_ContextCanceled_Returns499 (0.00s)
- === RUN TestForwardToTarget_BackendDown_Returns503
- --- PASS: TestForwardToTarget_BackendDown_Returns503 (0.00s)
- === RUN TestForwardToTarget_ProxyHeaderSet
- --- PASS: TestForwardToTarget_ProxyHeaderSet (0.00s)
- === RUN TestNewReverseProxy_XForwardedProto
- === RUN TestNewReverseProxy_XForwardedProto/trusted_proxy_with_https_preserved
- === RUN TestNewReverseProxy_XForwardedProto/untrusted_source_proto_overwritten
- === RUN TestNewReverseProxy_XForwardedProto/trusted_proxy_without_proto_set_normally
- === RUN TestNewReverseProxy_XForwardedProto/no_trusted_nets_proto_not_preserved
- === RUN TestNewReverseProxy_XForwardedProto/bare_IPv4_no_port_trusted_source_preserves_proto
- === RUN TestNewReverseProxy_XForwardedProto/bare_IPv6_with_brackets_trusted_source_preserves_proto
- === RUN TestNewReverseProxy_XForwardedProto/bare_IPv4_no_port_untrusted_source_strips_proto
- --- PASS: TestNewReverseProxy_XForwardedProto (0.01s)
- --- PASS: TestNewReverseProxy_XForwardedProto/trusted_proxy_with_https_preserved (0.00s)
- --- PASS: TestNewReverseProxy_XForwardedProto/untrusted_source_proto_overwritten (0.00s)
- --- PASS: TestNewReverseProxy_XForwardedProto/trusted_proxy_without_proto_set_normally (0.00s)
- --- PASS: TestNewReverseProxy_XForwardedProto/no_trusted_nets_proto_not_preserved (0.00s)
- --- PASS: TestNewReverseProxy_XForwardedProto/bare_IPv4_no_port_trusted_source_preserves_proto (0.00s)
- --- PASS: TestNewReverseProxy_XForwardedProto/bare_IPv6_with_brackets_trusted_source_preserves_proto (0.00s)
- --- PASS: TestNewReverseProxy_XForwardedProto/bare_IPv4_no_port_untrusted_source_strips_proto (0.00s)
- === RUN TestNewReverseProxy_ClientIPHeaders
- === RUN TestNewReverseProxy_ClientIPHeaders/untrusted_IPv4_peer_forged_headers_replaced
- === RUN TestNewReverseProxy_ClientIPHeaders/untrusted_IPv6_peer_forged_X-Real-IP_replaced
- === RUN TestNewReverseProxy_ClientIPHeaders/untrusted_IPv4-mapped_IPv6_peer_normalized_to_IPv4
- === RUN TestNewReverseProxy_ClientIPHeaders/no_trusted_nets_ignores_proxy_headers
- === RUN TestNewReverseProxy_ClientIPHeaders/trusted_Cloudflare_peer_uses_Cf-Connecting-Ip
- === RUN TestNewReverseProxy_ClientIPHeaders/trusted_Cloudflare_peer_with_IPv6_client
- === RUN TestNewReverseProxy_ClientIPHeaders/trusted_non-Cloudflare_proxy_uses_right-most_untrusted_XFF_hop
- === RUN TestNewReverseProxy_ClientIPHeaders/trusted_IPv6_proxy_with_IPv4-mapped_XFF_hop
- === RUN TestNewReverseProxy_ClientIPHeaders/trusted_proxy_X-Real-IP_honored_without_XFF
- === RUN TestNewReverseProxy_ClientIPHeaders/trusted_proxy_adding_a_new_XFF_line_uses_that_line
- === RUN TestNewReverseProxy_ClientIPHeaders/trusted_proxy_repeated_X-Real-IP_ignored
- === RUN TestNewReverseProxy_ClientIPHeaders/underscore_header_variants_removed
- === RUN TestNewReverseProxy_ClientIPHeaders/Cloudflare_peer_not_in_trusted_proxies_strips_Cf-Connecting-Ip
- === RUN TestNewReverseProxy_ClientIPHeaders/IPv4-mapped_trusted_Cloudflare_peer_uses_Cf-Connecting-Ip
- === RUN TestNewReverseProxy_ClientIPHeaders/trusted_Cloudflare_peer_with_invalid_Cf-Connecting-Ip_falls_back
- === RUN TestNewReverseProxy_ClientIPHeaders/unparsable_peer_sends_no_client_IP
- --- PASS: TestNewReverseProxy_ClientIPHeaders (0.01s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/untrusted_IPv4_peer_forged_headers_replaced (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/untrusted_IPv6_peer_forged_X-Real-IP_replaced (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/untrusted_IPv4-mapped_IPv6_peer_normalized_to_IPv4 (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/no_trusted_nets_ignores_proxy_headers (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/trusted_Cloudflare_peer_uses_Cf-Connecting-Ip (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/trusted_Cloudflare_peer_with_IPv6_client (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/trusted_non-Cloudflare_proxy_uses_right-most_untrusted_XFF_hop (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/trusted_IPv6_proxy_with_IPv4-mapped_XFF_hop (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/trusted_proxy_X-Real-IP_honored_without_XFF (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/trusted_proxy_adding_a_new_XFF_line_uses_that_line (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/trusted_proxy_repeated_X-Real-IP_ignored (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/underscore_header_variants_removed (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/Cloudflare_peer_not_in_trusted_proxies_strips_Cf-Connecting-Ip (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/IPv4-mapped_trusted_Cloudflare_peer_uses_Cf-Connecting-Ip (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/trusted_Cloudflare_peer_with_invalid_Cf-Connecting-Ip_falls_back (0.00s)
- --- PASS: TestNewReverseProxy_ClientIPHeaders/unparsable_peer_sends_no_client_IP (0.00s)
- === RUN TestHandler_ConcurrentConnectionLimit_503WhenFull
- --- PASS: TestHandler_ConcurrentConnectionLimit_503WhenFull (0.00s)
- === RUN TestHandler_RoutesToRegistry
- --- PASS: TestHandler_RoutesToRegistry (0.00s)
- === RUN TestHandler_DeniesRegistryForwardingWhenAuthDisabled
- --- PASS: TestHandler_DeniesRegistryForwardingWhenAuthDisabled (0.00s)
- === RUN TestHandler_NormalizesRequestHostForLookup
- === RUN TestHandler_NormalizesRequestHostForLookup/mixed_case
- === RUN TestHandler_NormalizesRequestHostForLookup/explicit_port
- === RUN TestHandler_NormalizesRequestHostForLookup/trailing_dot
- --- PASS: TestHandler_NormalizesRequestHostForLookup (0.00s)
- --- PASS: TestHandler_NormalizesRequestHostForLookup/mixed_case (0.00s)
- --- PASS: TestHandler_NormalizesRequestHostForLookup/explicit_port (0.00s)
- --- PASS: TestHandler_NormalizesRequestHostForLookup/trailing_dot (0.00s)
- === RUN TestHandler_RejectsInvalidRequestHost
- --- PASS: TestHandler_RejectsInvalidRequestHost (0.00s)
- === RUN TestHandler_Returns404WhenNoTarget
- --- PASS: TestHandler_Returns404WhenNoTarget (0.00s)
- === RUN TestHandler_ProxiesToTarget
- --- PASS: TestHandler_ProxiesToTarget (0.00s)
- === RUN TestHandler_ReadsMaxBodySizeConfig
- --- PASS: TestHandler_ReadsMaxBodySizeConfig (0.00s)
- === RUN TestHandler_UpdatedConfigReflected
- --- PASS: TestHandler_UpdatedConfigReflected (0.00s)
- === RUN TestHandler_NoConcurrencyLimitWhenZero
- --- PASS: TestHandler_NoConcurrencyLimitWhenZero (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/http/proxy 1.055s
- === RUN TestHandler_Base
- --- PASS: TestHandler_Base (0.00s)
- === RUN TestHandler_NotFound
- --- PASS: TestHandler_NotFound (0.00s)
- === RUN TestHandler_GetManifest_Success
- --- PASS: TestHandler_GetManifest_Success (0.00s)
- === RUN TestHandler_GetManifest_HEAD
- --- PASS: TestHandler_GetManifest_HEAD (0.00s)
- === RUN TestHandler_GetManifest_NotFound
- --- PASS: TestHandler_GetManifest_NotFound (0.00s)
- === RUN TestHandler_GetManifest_NestedName
- --- PASS: TestHandler_GetManifest_NestedName (0.00s)
- === RUN TestHandler_ReservedLookingRepositoryIsServedExactly
- --- PASS: TestHandler_ReservedLookingRepositoryIsServedExactly (0.00s)
- === RUN TestHandler_PutManifest_Success
- --- PASS: TestHandler_PutManifest_Success (0.00s)
- === RUN TestHandler_PutManifest_MissingContentType
- --- PASS: TestHandler_PutManifest_MissingContentType (0.00s)
- === RUN TestHandler_PutManifest_StorageError
- --- PASS: TestHandler_PutManifest_StorageError (0.00s)
- === RUN TestHandler_ManifestRoutes_MethodNotAllowed
- --- PASS: TestHandler_ManifestRoutes_MethodNotAllowed (0.00s)
- === RUN TestHandler_GetBlob_Success
- --- PASS: TestHandler_GetBlob_Success (0.02s)
- === RUN TestHandler_GetBlob_NotFound
- --- PASS: TestHandler_GetBlob_NotFound (0.00s)
- === RUN TestHandler_BlobRoutes_MethodNotAllowed
- --- PASS: TestHandler_BlobRoutes_MethodNotAllowed (0.00s)
- === RUN TestHandler_StartBlobUpload_Success
- --- PASS: TestHandler_StartBlobUpload_Success (0.00s)
- === RUN TestHandler_StartBlobUpload_Error
- --- PASS: TestHandler_StartBlobUpload_Error (0.00s)
- === RUN TestHandler_BlobUpload_PATCH
- --- PASS: TestHandler_BlobUpload_PATCH (0.00s)
- === RUN TestHandler_BlobUpload_PUT_Finalize
- --- PASS: TestHandler_BlobUpload_PUT_Finalize (0.00s)
- === RUN TestHandler_BlobUpload_PUT_DigestMismatch
- --- PASS: TestHandler_BlobUpload_PUT_DigestMismatch (0.00s)
- === RUN TestHandler_ListTags_Success
- --- PASS: TestHandler_ListTags_Success (0.00s)
- === RUN TestHandler_ListTags_NotFound
- --- PASS: TestHandler_ListTags_NotFound (0.00s)
- === RUN TestHandler_ListTags_MethodNotAllowed
- --- PASS: TestHandler_ListTags_MethodNotAllowed (0.00s)
- === RUN TestHandler_RegisterRoutes
- --- PASS: TestHandler_RegisterRoutes (0.00s)
- === RUN TestHandler_StartBlobUpload_ReturnsDockerUploadUUID
- --- PASS: TestHandler_StartBlobUpload_ReturnsDockerUploadUUID (0.00s)
- === RUN TestHandler_BlobUpload_PATCH_ReturnsDockerUploadUUID
- --- PASS: TestHandler_BlobUpload_PATCH_ReturnsDockerUploadUUID (0.00s)
- === RUN TestDefaultMaxBlobChunkSize_Is95MB
- --- PASS: TestDefaultMaxBlobChunkSize_Is95MB (0.00s)
- === RUN TestHandler_BlobUpload_PATCH_RespectsConfiguredMaxBlobChunkSize
- --- PASS: TestHandler_BlobUpload_PATCH_RespectsConfiguredMaxBlobChunkSize (0.00s)
- === RUN TestHandler_BlobUpload_PATCH_ReturnsRangeHeader
- --- PASS: TestHandler_BlobUpload_PATCH_ReturnsRangeHeader (0.00s)
- === RUN TestDefaultMaxBlobSize_Is1GB
- --- PASS: TestDefaultMaxBlobSize_Is1GB (0.00s)
- === RUN TestHandler_BlobUpload_PATCH_MaxBlobSizeExceededReturnsSizeInvalidAndCancels
- --- PASS: TestHandler_BlobUpload_PATCH_MaxBlobSizeExceededReturnsSizeInvalidAndCancels (0.00s)
- === RUN TestHandler_BlobUpload_PATCH_ContentLengthTooLargeReturnsSizeInvalidAndCancels
- --- PASS: TestHandler_BlobUpload_PATCH_ContentLengthTooLargeReturnsSizeInvalidAndCancels (0.00s)
- === RUN TestHandler_BlobUpload_PUT_FinalizeUnderMaxBlobSize
- --- PASS: TestHandler_BlobUpload_PUT_FinalizeUnderMaxBlobSize (0.00s)
- === RUN TestRateLimitMiddleware_Disabled
- --- PASS: TestRateLimitMiddleware_Disabled (0.00s)
- === RUN TestRateLimitMiddleware_GlobalLimitHit
- --- PASS: TestRateLimitMiddleware_GlobalLimitHit (0.00s)
- === RUN TestRateLimitMiddleware_PerIPLimitHit
- --- PASS: TestRateLimitMiddleware_PerIPLimitHit (0.00s)
- === RUN TestRateLimitMiddleware_BothLimitsPass
- --- PASS: TestRateLimitMiddleware_BothLimitsPass (0.00s)
- === RUN TestRateLimitMiddleware_TrustedProxy
- --- PASS: TestRateLimitMiddleware_TrustedProxy (0.00s)
- === RUN TestRateLimitMiddleware_UntrustedProxy
- --- PASS: TestRateLimitMiddleware_UntrustedProxy (0.00s)
- === RUN TestRateLimitMiddleware_ResponseFormat
- --- PASS: TestRateLimitMiddleware_ResponseFormat (0.00s)
- === RUN TestRateLimitMiddleware_Integration
- --- PASS: TestRateLimitMiddleware_Integration (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_returns_first_untrusted_IP_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
- --- 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_returns_first_untrusted_IP_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)
- === 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
- --- 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
- ok github.com/bnema/gordon/internal/adapters/in/http/registry 1.051s
- === RUN TestParse_Routes
- === RUN TestParse_Routes//v2/
- === RUN TestParse_Routes//v2
- === RUN TestParse_Routes//v2/_catalog
- === RUN TestParse_Routes//v2/myrepo/manifests/latest
- === RUN TestParse_Routes//v2/myorg/myapp/manifests/v1.0
- === RUN TestParse_Routes//v2/myrepo/blobs/sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- === RUN TestParse_Routes//v2/myrepo/blobs/uploads/
- === RUN TestParse_Routes//v2/myrepo/blobs/uploads/12345678-1234-4123-8123-123456789012
- === RUN TestParse_Routes//v2/myrepo/tags/list
- --- PASS: TestParse_Routes (0.00s)
- --- PASS: TestParse_Routes//v2/ (0.00s)
- --- PASS: TestParse_Routes//v2 (0.00s)
- --- PASS: TestParse_Routes//v2/_catalog (0.00s)
- --- PASS: TestParse_Routes//v2/myrepo/manifests/latest (0.00s)
- --- PASS: TestParse_Routes//v2/myorg/myapp/manifests/v1.0 (0.00s)
- --- PASS: TestParse_Routes//v2/myrepo/blobs/sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (0.00s)
- --- PASS: TestParse_Routes//v2/myrepo/blobs/uploads/ (0.00s)
- --- PASS: TestParse_Routes//v2/myrepo/blobs/uploads/12345678-1234-4123-8123-123456789012 (0.00s)
- --- PASS: TestParse_Routes//v2/myrepo/tags/list (0.00s)
- === RUN TestParse_ResolvesRepositoryFromLastMarker
- === RUN TestParse_ResolvesRepositoryFromLastMarker//v2/manifests/victim/manifests/latest
- === RUN TestParse_ResolvesRepositoryFromLastMarker//v2/allowed/tags/victim/manifests/latest
- === RUN TestParse_ResolvesRepositoryFromLastMarker//v2/blobs/impostor/blobs/sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- --- PASS: TestParse_ResolvesRepositoryFromLastMarker (0.00s)
- --- PASS: TestParse_ResolvesRepositoryFromLastMarker//v2/manifests/victim/manifests/latest (0.00s)
- --- PASS: TestParse_ResolvesRepositoryFromLastMarker//v2/allowed/tags/victim/manifests/latest (0.00s)
- --- PASS: TestParse_ResolvesRepositoryFromLastMarker//v2/blobs/impostor/blobs/sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (0.00s)
- === RUN TestParse_Errors
- === RUN TestParse_Errors/not_found_/healthz
- === RUN TestParse_Errors/not_found_/v2/myrepo
- === RUN TestParse_Errors/not_found_/v2/myrepo/manifests/
- === RUN TestParse_Errors/not_found_/v2/myrepo/manifests/a/b
- === RUN TestParse_Errors/not_found_/v2/myrepo/blobs/
- === RUN TestParse_Errors/not_found_/v2/myrepo/tags/list/
- === RUN TestParse_Errors/not_found_/v2//manifests/latest
- === RUN TestParse_Errors/invalid_/v2/BadRepo/manifests/latest
- === RUN TestParse_Errors/invalid_/v2/myrepo/manifests/bad_tag
- === RUN TestParse_Errors/invalid_/v2/myrepo/blobs/notadigest
- === RUN TestParse_Errors/invalid_/v2/myrepo/blobs/uploads/not-a-uuid
- --- PASS: TestParse_Errors (0.00s)
- --- PASS: TestParse_Errors/not_found_/healthz (0.00s)
- --- PASS: TestParse_Errors/not_found_/v2/myrepo (0.00s)
- --- PASS: TestParse_Errors/not_found_/v2/myrepo/manifests/ (0.00s)
- --- PASS: TestParse_Errors/not_found_/v2/myrepo/manifests/a/b (0.00s)
- --- PASS: TestParse_Errors/not_found_/v2/myrepo/blobs/ (0.00s)
- --- PASS: TestParse_Errors/not_found_/v2/myrepo/tags/list/ (0.00s)
- --- PASS: TestParse_Errors/not_found_/v2//manifests/latest (0.00s)
- --- PASS: TestParse_Errors/invalid_/v2/BadRepo/manifests/latest (0.00s)
- --- PASS: TestParse_Errors/invalid_/v2/myrepo/manifests/bad_tag (0.00s)
- --- PASS: TestParse_Errors/invalid_/v2/myrepo/blobs/notadigest (0.00s)
- --- PASS: TestParse_Errors/invalid_/v2/myrepo/blobs/uploads/not-a-uuid (0.00s)
- === RUN TestRequiresRepositoryAuth_ProtocolRootsOnly
- --- PASS: TestRequiresRepositoryAuth_ProtocolRootsOnly (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/http/registry/route 1.017s
- === RUN TestNewEntryPointHTTPServerUsesConfiguredTimeouts
- --- PASS: TestNewEntryPointHTTPServerUsesConfiguredTimeouts (0.00s)
- === RUN TestManagerHTTPOptionsDefaultsWithoutSnapshot
- --- PASS: TestManagerHTTPOptionsDefaultsWithoutSnapshot (0.00s)
- === RUN TestEntryPointServersReceiveConfiguredHTTPOptions
- --- PASS: TestEntryPointServersReceiveConfiguredHTTPOptions (0.00s)
- === RUN TestTLSMuxServerReceivesConfiguredHTTPOptions
- --- PASS: TestTLSMuxServerReceivesConfiguredHTTPOptions (0.00s)
- === RUN TestSmartTCPStreamingResponseOutlivesTransferIdleTimeout
- --- PASS: TestSmartTCPStreamingResponseOutlivesTransferIdleTimeout (0.91s)
- === RUN TestAppL4TCPUdpRoundTrip
- --- PASS: TestAppL4TCPUdpRoundTrip (0.05s)
- === RUN TestSniffSmartTCPClassifiesHTTP
- === RUN TestSniffSmartTCPClassifiesHTTP/get
- === RUN TestSniffSmartTCPClassifiesHTTP/propfind
- === RUN TestSniffSmartTCPClassifiesHTTP/mkcol
- === RUN TestSniffSmartTCPClassifiesHTTP/unknown_method
- === RUN TestSniffSmartTCPClassifiesHTTP/extension_method
- --- PASS: TestSniffSmartTCPClassifiesHTTP (0.00s)
- --- PASS: TestSniffSmartTCPClassifiesHTTP/get (0.00s)
- --- PASS: TestSniffSmartTCPClassifiesHTTP/propfind (0.00s)
- --- PASS: TestSniffSmartTCPClassifiesHTTP/mkcol (0.00s)
- --- PASS: TestSniffSmartTCPClassifiesHTTP/unknown_method (0.00s)
- --- PASS: TestSniffSmartTCPClassifiesHTTP/extension_method (0.00s)
- === RUN TestSniffSmartTCPClassifiesH2C
- --- PASS: TestSniffSmartTCPClassifiesH2C (0.00s)
- === RUN TestSniffSmartTCPClassifiesTLSAndAllowsClientHelloParsing
- --- PASS: TestSniffSmartTCPClassifiesTLSAndAllowsClientHelloParsing (0.00s)
- === RUN TestSniffSmartTCPRejectsMalformedTLSLookingZeroLengthRecord
- --- PASS: TestSniffSmartTCPRejectsMalformedTLSLookingZeroLengthRecord (0.00s)
- === RUN TestSniffSmartTCPClassifiesSSHBannerAsUnknown
- --- PASS: TestSniffSmartTCPClassifiesSSHBannerAsUnknown (0.00s)
- === RUN TestSniffSmartTCPRejectsMalformedHTTPLookingRequestLine
- --- PASS: TestSniffSmartTCPRejectsMalformedHTTPLookingRequestLine (0.00s)
- === RUN TestSniffSmartTCPClassifiesTokenSpacePlaintextAsUnknown
- --- PASS: TestSniffSmartTCPClassifiesTokenSpacePlaintextAsUnknown (0.00s)
- === RUN TestSniffSmartTCPRejectsPROXY
- === RUN TestSniffSmartTCPRejectsPROXY/v1
- === RUN TestSniffSmartTCPRejectsPROXY/v2
- --- PASS: TestSniffSmartTCPRejectsPROXY (0.00s)
- --- PASS: TestSniffSmartTCPRejectsPROXY/v1 (0.00s)
- --- PASS: TestSniffSmartTCPRejectsPROXY/v2 (0.00s)
- === RUN TestSniffSmartTCPUnknownIsImmediate
- --- PASS: TestSniffSmartTCPUnknownIsImmediate (0.00s)
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut/g
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut/b
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut/bar
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut/pr
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut/tls_content_type
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut/tls_version_major
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut/tls_version_minor
- === RUN TestSniffSmartTCPAmbiguousPartialsTimeOut/tls_record_length_partial
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut (0.16s)
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut/g (0.02s)
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut/b (0.02s)
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut/bar (0.02s)
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut/pr (0.02s)
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut/tls_content_type (0.02s)
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut/tls_version_major (0.02s)
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut/tls_version_minor (0.02s)
- --- PASS: TestSniffSmartTCPAmbiguousPartialsTimeOut/tls_record_length_partial (0.02s)
- === RUN TestSniffSmartTCPReplayReturnsSniffedBytesBeforeUnderlyingBytes
- --- PASS: TestSniffSmartTCPReplayReturnsSniffedBytesBeforeUnderlyingBytes (0.00s)
- === RUN TestSniffSmartTCPHandlesLongHTTPRequestLine
- --- PASS: TestSniffSmartTCPHandlesLongHTTPRequestLine (0.00s)
- === RUN TestSniffSmartTCPClearsReadDeadlineBeforeHandoff
- --- PASS: TestSniffSmartTCPClearsReadDeadlineBeforeHandoff (0.00s)
- === RUN TestSniffSmartTCPDoesNotTreatClosedPipeAsSuccess
- --- PASS: TestSniffSmartTCPDoesNotTreatClosedPipeAsSuccess (0.00s)
- === RUN TestTrafficRuntimeDefaultsApplySafeLimits
- --- PASS: TestTrafficRuntimeDefaultsApplySafeLimits (0.00s)
- === RUN TestBackendFromAddressRejectsOutOfRangePort
- --- PASS: TestBackendFromAddressRejectsOutOfRangePort (0.00s)
- === RUN TestSmartTCPDispatch
- === RUN TestSmartTCPDispatch/cleartext_HTTP_request_reaches_HTTP_handler
- === RUN TestSmartTCPDispatch/h2c_prior-knowledge_reaches_HTTP_handler
- === RUN TestSmartTCPDispatch/HTTPS_request_reaches_configured_HTTPS_fallback
- === RUN TestSmartTCPDispatch/TLS_passthrough_SNI_match_wins_before_HTTPS_fallback
- === RUN TestSmartTCPDispatch/no-SNI_TLS_reaches_HTTPS_fallback
- === RUN TestSmartTCPDispatch/unknown_bytes_reach_raw_fallback_immediately_when_source_policy_allows
- === RUN TestSmartTCPDispatch/unknown_bytes_refused_without_raw_fallback
- === RUN TestSmartTCPDispatch/unknown_bytes_refused_when_raw_fallback_source_policy_denies_peer
- === RUN TestSmartTCPDispatch/malformed_HTTP-looking_bytes_do_not_reach_raw_fallback
- === RUN TestSmartTCPDispatch/malformed_TLS-looking_bytes_do_not_reach_raw_fallback
- === RUN TestSmartTCPDispatch/PROXY_v1_and_v2_prefixes_rejected
- === RUN TestSmartTCPDispatch/sniff_deadline_cleared_before_backend_handoff
- === RUN TestSmartTCPDispatch/raw_fallback_trusted_CIDR_reload_reuses_same_listener
- === RUN TestSmartTCPDispatch/raw_fallback_connection_closes_when_trusted_CIDR_no_longer_allows_peer
- === RUN TestSmartTCPDispatch/TLS_ClientHello_read_after_sniff_is_bounded
- --- PASS: TestSmartTCPDispatch (3.47s)
- --- PASS: TestSmartTCPDispatch/cleartext_HTTP_request_reaches_HTTP_handler (0.00s)
- --- PASS: TestSmartTCPDispatch/h2c_prior-knowledge_reaches_HTTP_handler (0.01s)
- --- PASS: TestSmartTCPDispatch/HTTPS_request_reaches_configured_HTTPS_fallback (0.01s)
- --- PASS: TestSmartTCPDispatch/TLS_passthrough_SNI_match_wins_before_HTTPS_fallback (0.02s)
- --- PASS: TestSmartTCPDispatch/no-SNI_TLS_reaches_HTTPS_fallback (0.01s)
- --- PASS: TestSmartTCPDispatch/unknown_bytes_reach_raw_fallback_immediately_when_source_policy_allows (0.00s)
- --- PASS: TestSmartTCPDispatch/unknown_bytes_refused_without_raw_fallback (1.00s)
- --- PASS: TestSmartTCPDispatch/unknown_bytes_refused_when_raw_fallback_source_policy_denies_peer (1.00s)
- --- PASS: TestSmartTCPDispatch/malformed_HTTP-looking_bytes_do_not_reach_raw_fallback (0.00s)
- --- PASS: TestSmartTCPDispatch/malformed_TLS-looking_bytes_do_not_reach_raw_fallback (0.00s)
- --- PASS: TestSmartTCPDispatch/PROXY_v1_and_v2_prefixes_rejected (0.00s)
- --- PASS: TestSmartTCPDispatch/sniff_deadline_cleared_before_backend_handoff (0.15s)
- --- PASS: TestSmartTCPDispatch/raw_fallback_trusted_CIDR_reload_reuses_same_listener (1.00s)
- --- PASS: TestSmartTCPDispatch/raw_fallback_connection_closes_when_trusted_CIDR_no_longer_allows_peer (0.00s)
- --- PASS: TestSmartTCPDispatch/TLS_ClientHello_read_after_sniff_is_bounded (0.25s)
- === RUN TestSetSmartTCPHTTPServerCopiesProtocols
- --- PASS: TestSetSmartTCPHTTPServerCopiesProtocols (0.00s)
- === RUN TestSmartTCPStatusCounters
- === RUN TestSmartTCPStatusCounters/HTTP_accepted
- === RUN TestSmartTCPStatusCounters/h2c_accepted
- === RUN TestSmartTCPStatusCounters/HTTPS_fallback_accepted
- === RUN TestSmartTCPStatusCounters/TLS_passthrough_accepted
- === RUN TestSmartTCPStatusCounters/raw_fallback_accepted
- === RUN TestSmartTCPStatusCounters/raw_fallback_backend_dial_failure_is_not_accepted
- === RUN TestSmartTCPStatusCounters/refused_and_rejected_classes
- === RUN TestSmartTCPStatusCounters/unknown_without_fallback_refused
- === RUN TestSmartTCPStatusCounters/sniff_timeout
- === RUN TestSmartTCPStatusCounters/entrypoint_CIDR_refused
- --- PASS: TestSmartTCPStatusCounters (0.09s)
- --- PASS: TestSmartTCPStatusCounters/HTTP_accepted (0.00s)
- --- PASS: TestSmartTCPStatusCounters/h2c_accepted (0.00s)
- --- PASS: TestSmartTCPStatusCounters/HTTPS_fallback_accepted (0.01s)
- --- PASS: TestSmartTCPStatusCounters/TLS_passthrough_accepted (0.01s)
- --- PASS: TestSmartTCPStatusCounters/raw_fallback_accepted (0.00s)
- --- PASS: TestSmartTCPStatusCounters/raw_fallback_backend_dial_failure_is_not_accepted (0.00s)
- --- PASS: TestSmartTCPStatusCounters/refused_and_rejected_classes (0.01s)
- --- PASS: TestSmartTCPStatusCounters/unknown_without_fallback_refused (0.00s)
- --- PASS: TestSmartTCPStatusCounters/sniff_timeout (0.05s)
- --- PASS: TestSmartTCPStatusCounters/entrypoint_CIDR_refused (0.00s)
- === RUN TestManagerStatusAggregatesSmartTCP
- --- PASS: TestManagerStatusAggregatesSmartTCP (0.00s)
- === RUN TestSmartTCPLifecycleHardening
- === RUN TestSmartTCPLifecycleHardening/internal_HTTP_and_HTTPS_fallback_servers_stop_when_entrypoint_removed
- === RUN TestSmartTCPLifecycleHardening/HTTP_fallback_handoff_remains_counted_until_hijacked_connection_closes
- === RUN TestSmartTCPLifecycleHardening/shutdown_force_drain_closes_open_HTTP_fallback_handoff
- === RUN TestSmartTCPLifecycleHardening/trusted_CIDR_change_closes_active_smart_TCP_connections_no_longer_allowed
- === RUN TestSmartTCPLifecycleHardening/active_upgraded_connection_remains_tied_to_accepted_generation
- === RUN TestSmartTCPLifecycleHardening/listener_is_not_reused_for_incompatible_address
- --- PASS: TestSmartTCPLifecycleHardening (0.06s)
- --- PASS: TestSmartTCPLifecycleHardening/internal_HTTP_and_HTTPS_fallback_servers_stop_when_entrypoint_removed (0.00s)
- --- PASS: TestSmartTCPLifecycleHardening/HTTP_fallback_handoff_remains_counted_until_hijacked_connection_closes (0.00s)
- --- PASS: TestSmartTCPLifecycleHardening/shutdown_force_drain_closes_open_HTTP_fallback_handoff (0.05s)
- --- PASS: TestSmartTCPLifecycleHardening/trusted_CIDR_change_closes_active_smart_TCP_connections_no_longer_allowed (0.00s)
- --- PASS: TestSmartTCPLifecycleHardening/active_upgraded_connection_remains_tied_to_accepted_generation (0.00s)
- --- PASS: TestSmartTCPLifecycleHardening/listener_is_not_reused_for_incompatible_address (0.00s)
- === RUN TestSmartTCPHTTPHandoff
- === RUN TestSmartTCPHTTPHandoff/HTTP_Upgrade_h2c_reaches_handler_and_not_raw_fallback
- === RUN TestSmartTCPHTTPHandoff/websocket_upgrade_supports_hijacker
- === RUN TestSmartTCPHTTPHandoff/CONNECT_reaches_HTTP_handler_and_not_raw_fallback
- === RUN TestSmartTCPHTTPHandoff/handoff_connection_has_cleared_deadlines_and_useful_addresses
- --- PASS: TestSmartTCPHTTPHandoff (0.16s)
- --- PASS: TestSmartTCPHTTPHandoff/HTTP_Upgrade_h2c_reaches_handler_and_not_raw_fallback (0.00s)
- --- PASS: TestSmartTCPHTTPHandoff/websocket_upgrade_supports_hijacker (0.00s)
- --- PASS: TestSmartTCPHTTPHandoff/CONNECT_reaches_HTTP_handler_and_not_raw_fallback (0.00s)
- --- PASS: TestSmartTCPHTTPHandoff/handoff_connection_has_cleared_deadlines_and_useful_addresses (0.15s)
- === RUN TestRouteToHTTPListenerServeFailureReturnsFalseAndLeavesTrackedForCaller
- --- PASS: TestRouteToHTTPListenerServeFailureReturnsFalseAndLeavesTrackedForCaller (0.00s)
- === RUN TestTCPManagerLifecycle
- --- PASS: TestTCPManagerLifecycle (0.00s)
- === RUN TestTCPManagerRejectsInvalidGraphWithoutReplacingSnapshot
- --- PASS: TestTCPManagerRejectsInvalidGraphWithoutReplacingSnapshot (0.00s)
- === RUN TestTCPManagerReplacesSameAddressEntrypoint
- --- PASS: TestTCPManagerReplacesSameAddressEntrypoint (0.00s)
- === RUN TestTCPManagerSameAddressProtocolChangeStartsTLSHTTPServer
- --- PASS: TestTCPManagerSameAddressProtocolChangeStartsTLSHTTPServer (0.01s)
- === RUN TestTCPManagerSameAddressTLSMuxRenameRefreshesHTTPSRoute
- --- PASS: TestTCPManagerSameAddressTLSMuxRenameRefreshesHTTPSRoute (0.01s)
- === RUN TestTCPRuntimeDoesNotPublishTLSHTTPServerAfterClose
- --- PASS: TestTCPRuntimeDoesNotPublishTLSHTTPServerAfterClose (0.00s)
- === RUN TestTCPManagerSameAddressProtocolChangeStopsTLSHTTPServer
- --- PASS: TestTCPManagerSameAddressProtocolChangeStopsTLSHTTPServer (0.01s)
- === RUN TestTrackedTCPConnClosesLateBackendAfterStaleClose
- --- PASS: TestTrackedTCPConnClosesLateBackendAfterStaleClose (0.00s)
- === RUN TestTCPPassthroughRejectsUntrustedCIDR
- --- PASS: TestTCPPassthroughRejectsUntrustedCIDR (0.00s)
- === RUN TestTCPPassthroughReloadAppliesTrustedCIDRChange
- --- PASS: TestTCPPassthroughReloadAppliesTrustedCIDRChange (0.00s)
- === RUN TestTLSMuxReloadClosesActiveUntrustedHTTPSFallbackConnections
- --- PASS: TestTLSMuxReloadClosesActiveUntrustedHTTPSFallbackConnections (0.01s)
- === RUN TestTCPPassthroughReloadClosesActiveUntrustedConnections
- --- PASS: TestTCPPassthroughReloadClosesActiveUntrustedConnections (0.00s)
- === RUN TestTCPPassthroughEcho
- --- PASS: TestTCPPassthroughEcho (0.00s)
- === RUN TestTCPPassthroughUnknownRouterCloses
- --- PASS: TestTCPPassthroughUnknownRouterCloses (0.00s)
- === RUN TestTCPPassthroughBackendDialFailure
- --- PASS: TestTCPPassthroughBackendDialFailure (0.00s)
- === RUN TestTCPPassthroughShutdownStopsAccepting
- --- PASS: TestTCPPassthroughShutdownStopsAccepting (0.00s)
- === RUN TestTCPPassthroughIdleTimeoutClosesConnection
- --- PASS: TestTCPPassthroughIdleTimeoutClosesConnection (0.05s)
- === RUN TestTCPPassthroughMaxConnectionsRejectsOverflow
- --- PASS: TestTCPPassthroughMaxConnectionsRejectsOverflow (0.00s)
- === RUN TestTCPPassthroughDrainWaitsForActiveConnectionThenTimesOut
- --- PASS: TestTCPPassthroughDrainWaitsForActiveConnectionThenTimesOut (0.05s)
- === RUN TestTCPPassthroughStatusCountersTrackAcceptedRefusedErrorsAndBytes
- --- PASS: TestTCPPassthroughStatusCountersTrackAcceptedRefusedErrorsAndBytes (0.01s)
- === RUN TestClientHelloTooLargeUsesDomainSentinel
- --- PASS: TestClientHelloTooLargeUsesDomainSentinel (0.00s)
- === RUN TestClientHelloPeek
- === RUN TestClientHelloPeek/valid_sni_returns_replayable_bytes
- === RUN TestClientHelloPeek/no_sni
- === RUN TestClientHelloPeek/malformed
- === RUN TestClientHelloPeek/fragmented
- === RUN TestClientHelloPeek/client_hello_across_multiple_tls_records
- === RUN TestClientHelloPeek/client_hello_header_across_multiple_tls_records
- --- PASS: TestClientHelloPeek (0.02s)
- --- PASS: TestClientHelloPeek/valid_sni_returns_replayable_bytes (0.00s)
- --- PASS: TestClientHelloPeek/no_sni (0.00s)
- --- PASS: TestClientHelloPeek/malformed (0.00s)
- --- PASS: TestClientHelloPeek/fragmented (0.01s)
- --- PASS: TestClientHelloPeek/client_hello_across_multiple_tls_records (0.00s)
- --- PASS: TestClientHelloPeek/client_hello_header_across_multiple_tls_records (0.00s)
- === RUN TestTLSPassthrough
- --- PASS: TestTLSPassthrough (0.02s)
- === RUN TestTLSMuxUnknownClosesWithoutHTTPSRoute
- --- PASS: TestTLSMuxUnknownClosesWithoutHTTPSRoute (0.00s)
- === RUN TestTLSMuxIncompleteClientHelloDoesNotHangShutdown
- --- PASS: TestTLSMuxIncompleteClientHelloDoesNotHangShutdown (0.05s)
- === RUN TestTLSMuxHTTPServerRefreshesActiveRuntime
- --- PASS: TestTLSMuxHTTPServerRefreshesActiveRuntime (0.02s)
- === RUN TestTLSHTTPListenerServeRejectsAfterClose
- --- PASS: TestTLSHTTPListenerServeRejectsAfterClose (0.01s)
- === RUN TestTLSHTTPListenerCloseDrainsQueuedConnections
- --- PASS: TestTLSHTTPListenerCloseDrainsQueuedConnections (0.00s)
- === RUN TestTLSMuxHTTPSRoute
- --- PASS: TestTLSMuxHTTPSRoute (0.02s)
- === RUN TestTLSMuxHTTP2Route
- --- PASS: TestTLSMuxHTTP2Route (0.01s)
- === RUN TestHostMatchesTLSWildcard
- --- PASS: TestHostMatchesTLSWildcard (0.00s)
- === RUN TestUDPPassthroughEcho
- --- PASS: TestUDPPassthroughEcho (0.05s)
- === RUN TestUDPRejectsUntrustedCIDR
- --- PASS: TestUDPRejectsUntrustedCIDR (0.08s)
- === RUN TestUDPReloadAppliesTrustedCIDRChange
- --- PASS: TestUDPReloadAppliesTrustedCIDRChange (0.08s)
- === RUN TestUDPReloadClosesActiveUntrustedSessions
- --- PASS: TestUDPReloadClosesActiveUntrustedSessions (0.08s)
- === RUN TestUDPReloadReplacesSessionWhenBackendChanges
- --- PASS: TestUDPReloadReplacesSessionWhenBackendChanges (0.11s)
- === RUN TestUDPStaleRemovalKeepsReplacementSession
- --- PASS: TestUDPStaleRemovalKeepsReplacementSession (0.00s)
- === RUN TestUDPExpiryClosesOnlyRegisteredIdleSessionOnce
- --- PASS: TestUDPExpiryClosesOnlyRegisteredIdleSessionOnce (0.00s)
- === RUN TestUDPAdmissionGateBlocksPublicationAfterClosingBegins
- --- PASS: TestUDPAdmissionGateBlocksPublicationAfterClosingBegins (0.00s)
- === RUN TestUDPPublishSessionRejectsCompletedDialAfterAdmissionClosure
- --- PASS: TestUDPPublishSessionRejectsCompletedDialAfterAdmissionClosure (0.00s)
- === RUN TestUDPPublishSessionReusesExistingAndTouchesIt
- --- PASS: TestUDPPublishSessionReusesExistingAndTouchesIt (0.00s)
- === RUN TestUDPRemoveSessionNilIsSafe
- --- PASS: TestUDPRemoveSessionNilIsSafe (0.00s)
- === RUN TestUDPReadLoopRejectsInvalidSourceAddress
- --- PASS: TestUDPReadLoopRejectsInvalidSourceAddress (0.06s)
- === RUN TestUDPStopBeforeStartLeavesNoRuntimeGoroutines
- --- PASS: TestUDPStopBeforeStartLeavesNoRuntimeGoroutines (0.00s)
- === RUN TestUDPShutdownLeavesNoSessionsOrRuntimeGoroutines
- --- PASS: TestUDPShutdownLeavesNoSessionsOrRuntimeGoroutines (0.05s)
- === RUN TestUDPConcurrentCreationDuringShutdownLeavesNoSessions
- --- PASS: TestUDPConcurrentCreationDuringShutdownLeavesNoSessions (0.00s)
- === RUN TestUDPInFlightDialDoesNotPublishAfterAdmissionClosure
- --- PASS: TestUDPInFlightDialDoesNotPublishAfterAdmissionClosure (0.00s)
- === RUN TestUDPAddrPortNormalizesIPv4MappedAndPreservesZones
- --- PASS: TestUDPAddrPortNormalizesIPv4MappedAndPreservesZones (0.00s)
- === RUN TestUDPAddrPortRejectsInvalidAddresses
- --- PASS: TestUDPAddrPortRejectsInvalidAddresses (0.00s)
- === RUN TestUDPSessionPrecomputesImmutableRemoteAddr
- --- PASS: TestUDPSessionPrecomputesImmutableRemoteAddr (0.00s)
- === RUN TestUDPTrustedAddrPortMatchesCIDRs
- --- PASS: TestUDPTrustedAddrPortMatchesCIDRs (0.00s)
- === RUN TestUDPTwoClientsGetIsolatedSessions
- --- PASS: TestUDPTwoClientsGetIsolatedSessions (0.05s)
- === RUN TestUDPIdleSessionExpires
- --- PASS: TestUDPIdleSessionExpires (0.05s)
- === RUN TestUDPMaxSessionsRejectsOverflow
- --- PASS: TestUDPMaxSessionsRejectsOverflow (0.13s)
- === RUN TestUDPRemovedRouterWithRetainedEntryPointDrainsSession
- --- PASS: TestUDPRemovedRouterWithRetainedEntryPointDrainsSession (0.13s)
- === RUN TestUDPBackendChangeDrainsExistingSession
- --- PASS: TestUDPBackendChangeDrainsExistingSession (0.11s)
- === RUN TestUDPRemovedRouterDrainsThenClosesSessions
- --- PASS: TestUDPRemovedRouterDrainsThenClosesSessions (0.05s)
- === RUN TestUDPShutdownClosesSocket
- --- PASS: TestUDPShutdownClosesSocket (0.00s)
- === RUN TestUDPStatusCountersTrackDatagrams
- --- PASS: TestUDPStatusCountersTrackDatagrams (0.05s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/in/traffic 7.357s
- === RUN TestEnsureRuntimeDirPrefersXDG
- --- PASS: TestEnsureRuntimeDirPrefersXDG (0.00s)
- === RUN TestEnsureRuntimeDirFallsBackToHome
- --- PASS: TestEnsureRuntimeDirFallsBackToHome (0.00s)
- === RUN TestEnsureRuntimeDirRejectsUnsafeXDG
- --- PASS: TestEnsureRuntimeDirRejectsUnsafeXDG (0.00s)
- === RUN TestEnsureRuntimeDirRejectsRelativeXDG
- --- PASS: TestEnsureRuntimeDirRejectsRelativeXDG (0.00s)
- === RUN TestEnsureRuntimeDirNoFallbackOnCreateError
- --- PASS: TestEnsureRuntimeDirNoFallbackOnCreateError (0.00s)
- === RUN TestEnsureDirRefusesSymlinkAncestor
- --- PASS: TestEnsureDirRefusesSymlinkAncestor (0.00s)
- === RUN TestEnsureDirTightensPermissions
- --- PASS: TestEnsureDirTightensPermissions (0.00s)
- === RUN TestEnsureDirRejectsOwnerOwnedWritableAncestor
- --- PASS: TestEnsureDirRejectsOwnerOwnedWritableAncestor (0.00s)
- === RUN TestValidatePathComponentRejectsForeignOwnedAncestors
- === RUN TestValidatePathComponentRejectsForeignOwnedAncestors/-rwxr-xr-x
- === RUN TestValidatePathComponentRejectsForeignOwnedAncestors/-rwx------
- --- PASS: TestValidatePathComponentRejectsForeignOwnedAncestors (0.00s)
- --- PASS: TestValidatePathComponentRejectsForeignOwnedAncestors/-rwxr-xr-x (0.00s)
- --- PASS: TestValidatePathComponentRejectsForeignOwnedAncestors/-rwx------ (0.00s)
- === RUN TestValidatePathComponentAllowsRootOwnedStickyAncestor
- --- PASS: TestValidatePathComponentAllowsRootOwnedStickyAncestor (0.00s)
- === RUN TestValidateDirAllowsStickyRootAncestor
- --- PASS: TestValidateDirAllowsStickyRootAncestor (0.00s)
- === RUN TestEnsureDirRejectsSymlinkDirectory
- --- PASS: TestEnsureDirRejectsSymlinkDirectory (0.00s)
- === RUN TestEnsureDirRejectsRegularFile
- --- PASS: TestEnsureDirRejectsRegularFile (0.00s)
- === RUN TestEnsureDirRejectsForeignOwner
- localadmin_test.go:197: requires root to change directory ownership
- --- SKIP: TestEnsureDirRejectsForeignOwner (0.00s)
- === RUN TestListenCreatesOwnerOnlySocket
- --- PASS: TestListenCreatesOwnerOnlySocket (0.00s)
- === RUN TestListenRefusesActiveListener
- --- PASS: TestListenRefusesActiveListener (0.00s)
- === RUN TestListenRemovesStaleOwnedSocket
- --- PASS: TestListenRemovesStaleOwnedSocket (0.00s)
- === RUN TestListenRefusesRegularFileCollision
- --- PASS: TestListenRefusesRegularFileCollision (0.00s)
- === RUN TestListenRefusesSymlinkSocket
- --- PASS: TestListenRefusesSymlinkSocket (0.00s)
- === RUN TestValidateSocketRejectsGroupAccessibleSocket
- --- PASS: TestValidateSocketRejectsGroupAccessibleSocket (0.00s)
- === RUN TestRemoveOwnedSocketRemovesBoundSocket
- --- PASS: TestRemoveOwnedSocketRemovesBoundSocket (0.00s)
- === RUN TestRemoveOwnedSocketLeavesReplacement
- --- PASS: TestRemoveOwnedSocketLeavesReplacement (0.00s)
- === RUN TestRemoveOwnedSocketIgnoresMissingPath
- --- PASS: TestRemoveOwnedSocketIgnoresMissingPath (0.00s)
- === RUN TestClientDirCandidatesOrderAndDedupe
- === RUN TestClientDirCandidatesOrderAndDedupe/xdg_coincides_with_the_systemd_default
- === RUN TestClientDirCandidatesOrderAndDedupe/xdg_differs_from_the_systemd_default
- --- PASS: TestClientDirCandidatesOrderAndDedupe (0.00s)
- --- PASS: TestClientDirCandidatesOrderAndDedupe/xdg_coincides_with_the_systemd_default (0.00s)
- --- PASS: TestClientDirCandidatesOrderAndDedupe/xdg_differs_from_the_systemd_default (0.00s)
- === RUN TestDialContextRejectsPeerUIDMismatchBeforeUse
- --- PASS: TestDialContextRejectsPeerUIDMismatchBeforeUse (0.00s)
- === RUN TestListenRefusesForeignOwnedSocketDirectory
- localadmin_test.go:389: requires root to change directory ownership
- --- SKIP: TestListenRefusesForeignOwnedSocketDirectory (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/localadmin 1.019s
- === RUN TestFormatJSON_AllFields
- --- PASS: TestFormatJSON_AllFields (0.00s)
- === RUN TestFormatJSON_OneLinePerEntry
- --- PASS: TestFormatJSON_OneLinePerEntry (0.00s)
- === RUN TestFormatJSON_TimestampMillisecondPrecision
- --- PASS: TestFormatJSON_TimestampMillisecondPrecision (0.00s)
- === RUN TestFormatJSON_ClientIPNoPort
- --- PASS: TestFormatJSON_ClientIPNoPort (0.00s)
- === RUN TestFormatJSON_EmptyOptionalFields
- --- PASS: TestFormatJSON_EmptyOptionalFields (0.00s)
- === RUN TestFormatJSON_WithQuery
- --- PASS: TestFormatJSON_WithQuery (0.00s)
- === RUN TestFormatCLF_BasicLine
- --- PASS: TestFormatCLF_BasicLine (0.00s)
- === RUN TestFormatCLF_WithQuery
- --- PASS: TestFormatCLF_WithQuery (0.00s)
- === RUN TestFormatCLF_NoRefererOrUA
- --- PASS: TestFormatCLF_NoRefererOrUA (0.00s)
- === RUN TestFormatCLF_EscapesQuotesInTarget
- --- PASS: TestFormatCLF_EscapesQuotesInTarget (0.00s)
- === RUN TestFormatCombined_BasicLine
- --- PASS: TestFormatCombined_BasicLine (0.00s)
- === RUN TestFormatCombined_EmptyRefererIsDash
- --- PASS: TestFormatCombined_EmptyRefererIsDash (0.00s)
- === RUN TestFormatCombined_EmptyUAIsDash
- --- PASS: TestFormatCombined_EmptyUAIsDash (0.00s)
- === RUN TestFormatCombined_WithReferer
- --- PASS: TestFormatCombined_WithReferer (0.00s)
- === RUN TestFormatCombined_EscapesQuotesInUA
- --- PASS: TestFormatCombined_EscapesQuotesInUA (0.00s)
- === RUN TestBuildRequestTarget_NoQuery
- --- PASS: TestBuildRequestTarget_NoQuery (0.00s)
- === RUN TestBuildRequestTarget_WithQuery
- --- PASS: TestBuildRequestTarget_WithQuery (0.00s)
- === RUN TestEscapeQuoted
- --- PASS: TestEscapeQuoted (0.00s)
- === RUN TestEscapeQuoted_ControlCharacters
- --- PASS: TestEscapeQuoted_ControlCharacters (0.00s)
- === RUN TestNewJournaldSink_JournaldUnavailable
- --- PASS: TestNewJournaldSink_JournaldUnavailable (0.00s)
- === RUN TestNewJournaldSink_EmptySyslogIdentifier
- --- PASS: TestNewJournaldSink_EmptySyslogIdentifier (0.00s)
- === RUN TestNewJournaldSink_WhitespaceSyslogIdentifier
- --- PASS: TestNewJournaldSink_WhitespaceSyslogIdentifier (0.00s)
- === RUN TestJournaldSink_Write_CallsJournalSend
- --- PASS: TestJournaldSink_Write_CallsJournalSend (0.00s)
- === RUN TestJournaldSink_Write_SendsCustomIdentifier
- --- PASS: TestJournaldSink_Write_SendsCustomIdentifier (0.00s)
- === RUN TestJournaldSink_Write_ReturnsErrorOnSendFailure
- --- PASS: TestJournaldSink_Write_ReturnsErrorOnSendFailure (0.00s)
- === RUN TestNew_InvalidFormat
- --- PASS: TestNew_InvalidFormat (0.00s)
- === RUN TestNew_InvalidOutput
- --- PASS: TestNew_InvalidOutput (0.00s)
- === RUN TestNew_FileOutput_EmptyPath
- --- PASS: TestNew_FileOutput_EmptyPath (0.00s)
- === RUN TestNew_FileOutput_CreatesDirectory
- --- PASS: TestNew_FileOutput_CreatesDirectory (0.00s)
- === RUN TestWriter_Stdout_JSON
- --- PASS: TestWriter_Stdout_JSON (0.00s)
- === RUN TestWriter_Stdout_CLF
- --- PASS: TestWriter_Stdout_CLF (0.00s)
- === RUN TestWriter_Stdout_Combined
- --- PASS: TestWriter_Stdout_Combined (0.00s)
- === RUN TestWriter_File_WritesLines
- --- PASS: TestWriter_File_WritesLines (0.00s)
- === RUN TestWriter_ConcurrentWrites
- --- PASS: TestWriter_ConcurrentWrites (0.01s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/accesslog 1.024s
- === RUN TestCloudflareZoneResolverFindsParentZone
- --- PASS: TestCloudflareZoneResolverFindsParentZone (0.00s)
- === RUN TestCloudflareZoneResolverDoesNotLeakTokenInError
- --- PASS: TestCloudflareZoneResolverDoesNotLeakTokenInError (0.00s)
- === RUN TestCloudflareZoneResolverSimpleDomain
- --- PASS: TestCloudflareZoneResolverSimpleDomain (0.00s)
- === RUN TestCloudflareZoneResolverNoZoneFound
- --- PASS: TestCloudflareZoneResolverNoZoneFound (0.00s)
- === RUN TestCloudflareZoneResolverCachesErrorsWithShortTTL
- --- PASS: TestCloudflareZoneResolverCachesErrorsWithShortTTL (0.00s)
- === RUN TestCloudflareZoneResolverUnsuccessfulAPI
- --- PASS: TestCloudflareZoneResolverUnsuccessfulAPI (0.00s)
- === RUN TestCloudflareZoneResolverImplementsInterface
- --- PASS: TestCloudflareZoneResolverImplementsInterface (0.00s)
- === RUN TestWithCloudflareHTTPClientNilLeavesDefault
- --- PASS: TestWithCloudflareHTTPClientNilLeavesDefault (0.00s)
- === RUN TestCloudflareZoneResolverFindZoneLowercasesInput
- --- PASS: TestCloudflareZoneResolverFindZoneLowercasesInput (0.00s)
- === RUN TestCloudflareZoneResolverFindZoneMixedCaseWithTrailingDot
- --- PASS: TestCloudflareZoneResolverFindZoneMixedCaseWithTrailingDot (0.00s)
- === RUN TestHTTPProviderStoresAndCleansChallenge
- --- PASS: TestHTTPProviderStoresAndCleansChallenge (0.00s)
- === RUN TestHTTPProviderNilSink
- --- PASS: TestHTTPProviderNilSink (0.00s)
- === RUN TestNewIssuerValidatesEmail
- --- PASS: TestNewIssuerValidatesEmail (0.00s)
- === RUN TestNewIssuerValidatesStore
- --- PASS: TestNewIssuerValidatesStore (0.00s)
- === RUN TestNewIssuerValidatesHTTPChallengeSink
- --- PASS: TestNewIssuerValidatesHTTPChallengeSink (0.00s)
- === RUN TestNewIssuerValidatesChallengeMode
- --- PASS: TestNewIssuerValidatesChallengeMode (0.00s)
- === RUN TestNewIssuerValidatesCloudflareToken
- --- PASS: TestNewIssuerValidatesCloudflareToken (0.00s)
- === RUN TestNewIssuerValidatesCloudflareDNSConfig
- --- PASS: TestNewIssuerValidatesCloudflareDNSConfig (0.00s)
- === RUN TestNormalizeDNSResolversErrorsIncludeEntryContext
- === RUN TestNormalizeDNSResolversErrorsIncludeEntryContext/empty_after_trimming
- === RUN TestNormalizeDNSResolversErrorsIncludeEntryContext/missing_port
- === RUN TestNormalizeDNSResolversErrorsIncludeEntryContext/empty_host
- === RUN TestNormalizeDNSResolversErrorsIncludeEntryContext/invalid_port
- --- PASS: TestNormalizeDNSResolversErrorsIncludeEntryContext (0.00s)
- --- PASS: TestNormalizeDNSResolversErrorsIncludeEntryContext/empty_after_trimming (0.00s)
- --- PASS: TestNormalizeDNSResolversErrorsIncludeEntryContext/missing_port (0.00s)
- --- PASS: TestNormalizeDNSResolversErrorsIncludeEntryContext/empty_host (0.00s)
- --- PASS: TestNormalizeDNSResolversErrorsIncludeEntryContext/invalid_port (0.00s)
- === RUN TestNewIssuerRejectsNonHTTPSURL
- --- PASS: TestNewIssuerRejectsNonHTTPSURL (0.00s)
- === RUN TestNewIssuerValidWithDefaults
- --- PASS: TestNewIssuerValidWithDefaults (0.00s)
- === RUN TestCloudflareDNSProviderConfigUsesDNSSettings
- --- PASS: TestCloudflareDNSProviderConfigUsesDNSSettings (0.00s)
- === RUN TestPrivateKeyRoundTrip
- --- PASS: TestPrivateKeyRoundTrip (0.00s)
- === RUN TestPrivateKeyRSARoundTrip
- --- PASS: TestPrivateKeyRSARoundTrip (0.10s)
- === RUN TestResourceConversionToStoredCertificate
- --- PASS: TestResourceConversionToStoredCertificate (0.00s)
- === RUN TestResourceConversionNoIssuer
- --- PASS: TestResourceConversionNoIssuer (0.00s)
- === RUN TestAccountJSONRoundTrip
- --- PASS: TestAccountJSONRoundTrip (0.00s)
- === RUN TestParsedCertificateNotAfter
- --- PASS: TestParsedCertificateNotAfter (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/acmelego 1.134s
- === RUN TestStoreSaveLoadAll
- --- PASS: TestStoreSaveLoadAll (0.00s)
- === RUN TestStorePrivateKeyMode
- --- PASS: TestStorePrivateKeyMode (0.00s)
- === RUN TestStoreRejectsUnsafeID
- === RUN TestStoreRejectsUnsafeID/../escape
- === RUN TestStoreRejectsUnsafeID/.
- === RUN TestStoreRejectsUnsafeID/.hidden
- === RUN TestStoreRejectsUnsafeID/tenant.old
- === RUN TestStoreRejectsUnsafeID/tenant.tmp-123
- --- PASS: TestStoreRejectsUnsafeID (0.00s)
- --- PASS: TestStoreRejectsUnsafeID/../escape (0.00s)
- --- PASS: TestStoreRejectsUnsafeID/. (0.00s)
- --- PASS: TestStoreRejectsUnsafeID/.hidden (0.00s)
- --- PASS: TestStoreRejectsUnsafeID/tenant.old (0.00s)
- --- PASS: TestStoreRejectsUnsafeID/tenant.tmp-123 (0.00s)
- === RUN TestStoreLockAcquireRelease
- --- PASS: TestStoreLockAcquireRelease (0.00s)
- === RUN TestStoreLockContextCanceled
- --- PASS: TestStoreLockContextCanceled (0.00s)
- === RUN TestStoreNewRestoresBackupDir
- --- PASS: TestStoreNewRestoresBackupDir (0.00s)
- === RUN TestStoreSaveLoadAccount
- --- PASS: TestStoreSaveLoadAccount (0.00s)
- === RUN TestStoreAccountFileMode
- --- PASS: TestStoreAccountFileMode (0.00s)
- === RUN TestStoreSaveLoadState
- --- PASS: TestStoreSaveLoadState (0.00s)
- === RUN TestStoreLoadAllInvalidChallenge
- --- PASS: TestStoreLoadAllInvalidChallenge (0.00s)
- === RUN TestStoreLoadAllCorruptPrivkey
- --- PASS: TestStoreLoadAllCorruptPrivkey (0.00s)
- === RUN TestStoreLoadAllCorruptFullchain
- --- PASS: TestStoreLoadAllCorruptFullchain (0.00s)
- === RUN TestStoreLoadAllSkipsTempAndBackupDirs
- --- PASS: TestStoreLoadAllSkipsTempAndBackupDirs (0.00s)
- === RUN TestStoreLoadAllInvalidPEM
- --- PASS: TestStoreLoadAllInvalidPEM (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/acmestore 1.025s
- === RUN TestValidateAppSecretPath
- --- PASS: TestValidateAppSecretPath (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/appsecrets 1.012s
- === RUN TestStore_ProtectionSnapshotCoversEveryRoot
- --- PASS: TestStore_ProtectionSnapshotCoversEveryRoot (0.01s)
- === RUN TestStore_ProtectionSnapshotStoppedAppKeepsActive
- --- PASS: TestStore_ProtectionSnapshotStoppedAppKeepsActive (0.00s)
- === RUN TestStore_ProtectionSnapshotKeepsHistoricalIncarnations
- --- PASS: TestStore_ProtectionSnapshotKeepsHistoricalIncarnations (0.00s)
- === RUN TestStore_ProtectionSnapshotKeepsDifferentClaimStates
- --- PASS: TestStore_ProtectionSnapshotKeepsDifferentClaimStates (0.00s)
- === RUN TestStore_ProtectionSnapshotReleasedIsTheOnlyDeletableState
- --- PASS: TestStore_ProtectionSnapshotReleasedIsTheOnlyDeletableState (0.00s)
- === RUN TestStore_ProtectionSnapshotUnknownStateIsRetained
- --- PASS: TestStore_ProtectionSnapshotUnknownStateIsRetained (0.00s)
- === RUN TestStore_ProtectionSnapshotMigrationBackfillsHistory
- --- PASS: TestStore_ProtectionSnapshotMigrationBackfillsHistory (0.00s)
- === RUN TestStore_ProtectionSnapshotReportsCorruptRecords
- --- PASS: TestStore_ProtectionSnapshotReportsCorruptRecords (0.00s)
- === RUN TestStore_ProtectionSnapshotConcurrentWrites
- --- PASS: TestStore_ProtectionSnapshotConcurrentWrites (0.05s)
- === RUN TestStore_ProtectionSnapshotCancellation
- --- PASS: TestStore_ProtectionSnapshotCancellation (0.00s)
- === RUN TestStore_ClaimOperationCreatesInFlightJournal
- --- PASS: TestStore_ClaimOperationCreatesInFlightJournal (0.00s)
- === RUN TestStore_ClaimOperationReplaysSameRequest
- --- PASS: TestStore_ClaimOperationReplaysSameRequest (0.00s)
- === RUN TestStore_ClaimOperationConflictsOnDifferentRequest
- --- PASS: TestStore_ClaimOperationConflictsOnDifferentRequest (0.00s)
- === RUN TestStore_ClaimOperationRefusesUnknownAppWithoutState
- --- PASS: TestStore_ClaimOperationRefusesUnknownAppWithoutState (0.00s)
- === RUN TestStore_ClaimOperationIsAtomicUnderConcurrency
- --- PASS: TestStore_ClaimOperationIsAtomicUnderConcurrency (0.00s)
- === RUN TestStore_ClaimOperationReplaysAfterReopen
- --- PASS: TestStore_ClaimOperationReplaysAfterReopen (0.00s)
- === RUN TestStore_ClaimOperationSurvivesRetire
- --- PASS: TestStore_ClaimOperationSurvivesRetire (0.00s)
- === RUN TestStore_CommitApplyRejectsSupersededIntent
- --- PASS: TestStore_CommitApplyRejectsSupersededIntent (0.00s)
- === RUN TestStore_RecoverDropsSupersededCommittedIntent
- --- PASS: TestStore_RecoverDropsSupersededCommittedIntent (0.01s)
- === RUN TestStore_CollectGarbagePreservesInFlightIntent
- --- PASS: TestStore_CollectGarbagePreservesInFlightIntent (0.00s)
- === RUN TestStore_RetireAppEndsIncarnation
- --- PASS: TestStore_RetireAppEndsIncarnation (0.00s)
- === RUN TestStore_RetireAppIsAtomicOnEmptyApp
- --- PASS: TestStore_RetireAppIsAtomicOnEmptyApp (0.00s)
- === RUN TestProtectionSnapshot_OperationDigestRootCarriesRepository
- --- PASS: TestProtectionSnapshot_OperationDigestRootCarriesRepository (0.00s)
- === RUN TestStore_BackendBindsRegisterRelease
- --- PASS: TestStore_BackendBindsRegisterRelease (0.00s)
- === RUN TestStore_BackendBindsConflictCrossApp
- --- PASS: TestStore_BackendBindsConflictCrossApp (0.00s)
- === RUN TestStore_BackendBindsUDPProtocol
- --- PASS: TestStore_BackendBindsUDPProtocol (0.00s)
- === RUN TestStore_StageCommitMaterialize
- --- PASS: TestStore_StageCommitMaterialize (0.00s)
- === RUN TestStore_RecoverCompletesCommitted
- --- PASS: TestStore_RecoverCompletesCommitted (0.00s)
- === RUN TestStore_ConcurrentSamePortCrossApp
- --- PASS: TestStore_ConcurrentSamePortCrossApp (0.01s)
- === RUN TestStore_GarbageProtectsReferenced
- --- PASS: TestStore_GarbageProtectsReferenced (0.01s)
- === RUN TestStore_CorruptAndIncompatible
- --- PASS: TestStore_CorruptAndIncompatible (0.00s)
- === RUN TestStore_AcceptApplyPublishesDesiredRevision
- --- PASS: TestStore_AcceptApplyPublishesDesiredRevision (0.00s)
- === RUN TestStore_GarbageSweepsStagedOrphan
- --- PASS: TestStore_GarbageSweepsStagedOrphan (0.00s)
- === RUN TestStore_OperationJournal
- --- PASS: TestStore_OperationJournal (0.00s)
- === RUN TestStore_IntentAndOwnership
- --- PASS: TestStore_IntentAndOwnership (0.00s)
- === RUN TestStore_RetentionEvictsUnreferencedBeyondDefault
- --- PASS: TestStore_RetentionEvictsUnreferencedBeyondDefault (0.03s)
- === RUN TestStore_ConfiguredRetentionOverridesDefault
- --- PASS: TestStore_ConfiguredRetentionOverridesDefault (0.01s)
- === RUN TestStore_ReopenPersistsAcrossClose
- --- PASS: TestStore_ReopenPersistsAcrossClose (0.00s)
- === RUN TestStore_OwnershipUUIDSurvivesNameReuse
- --- PASS: TestStore_OwnershipUUIDSurvivesNameReuse (0.00s)
- === RUN TestStore_RecoveryInhibitionsAreDurableAndGenerationScoped
- --- PASS: TestStore_RecoveryInhibitionsAreDurableAndGenerationScoped (0.00s)
- === RUN TestStore_DesiredDevicesRoundTrip
- --- PASS: TestStore_DesiredDevicesRoundTrip (0.00s)
- === RUN TestStore_DesiredWithoutDevicesLoads
- --- PASS: TestStore_DesiredWithoutDevicesLoads (0.00s)
- === RUN TestStore_DesiredCapabilitiesRoundTrip
- --- PASS: TestStore_DesiredCapabilitiesRoundTrip (0.00s)
- === RUN TestStore_DesiredWithoutCapabilitiesLoads
- --- PASS: TestStore_DesiredWithoutCapabilitiesLoads (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/appstate 1.206s
- === RUN TestDetectRuntimeSocket_ExplicitPathTakesPrecedence
- --- PASS: TestDetectRuntimeSocket_ExplicitPathTakesPrecedence (0.00s)
- === RUN TestDetectRuntimeSocket_FallsBackToDockerHost
- --- PASS: TestDetectRuntimeSocket_FallsBackToDockerHost (0.00s)
- === RUN TestDetectRuntimeSocket_EmptyDockerHostIgnored
- --- PASS: TestDetectRuntimeSocket_EmptyDockerHostIgnored (0.00s)
- === RUN TestDetectRuntimeSocket_NonUnixDockerHostPassedThrough
- --- PASS: TestDetectRuntimeSocket_NonUnixDockerHostPassedThrough (0.00s)
- === RUN TestParseUnixSocketPath
- === RUN TestParseUnixSocketPath/unix:///var/run/docker.sock
- === RUN TestParseUnixSocketPath/unix:///run/podman/podman.sock
- === RUN TestParseUnixSocketPath/tcp://localhost:2375
- === RUN TestParseUnixSocketPath//var/run/docker.sock
- --- PASS: TestParseUnixSocketPath (0.00s)
- --- PASS: TestParseUnixSocketPath/unix:///var/run/docker.sock (0.00s)
- --- PASS: TestParseUnixSocketPath/unix:///run/podman/podman.sock (0.00s)
- --- PASS: TestParseUnixSocketPath/tcp://localhost:2375 (0.00s)
- --- PASS: TestParseUnixSocketPath//var/run/docker.sock (0.00s)
- === RUN TestNewRuntimeWithSocket_UsesExplicitHost
- --- PASS: TestNewRuntimeWithSocket_UsesExplicitHost (0.00s)
- === RUN TestRuntime_StreamContainerLogs_DemuxesTimestampedLines
- --- PASS: TestRuntime_StreamContainerLogs_DemuxesTimestampedLines (0.00s)
- === RUN TestRuntime_StreamContainerLogs_NotFound
- --- PASS: TestRuntime_StreamContainerLogs_NotFound (0.00s)
- === RUN TestReadBoundedLine_TruncatesOversizedLines
- --- PASS: TestReadBoundedLine_TruncatesOversizedLines (0.00s)
- === RUN TestParseTimestampedLine_KeepsBodyWithoutTimestamp
- --- PASS: TestParseTimestampedLine_KeepsBodyWithoutTimestamp (0.00s)
- === RUN TestParseTimestampedLine_SanitizesInvalidUTF8
- --- PASS: TestParseTimestampedLine_SanitizesInvalidUTF8 (0.00s)
- === RUN TestBuildNetworkProbeCommand
- === RUN TestBuildNetworkProbeCommand/http_carries_path,_whole-second_timeout,_and_exact_endpoint
- === RUN TestBuildNetworkProbeCommand/tcp_carries_no_path
- === RUN TestBuildNetworkProbeCommand/nc_bound_stays_strictly_under_the_attempt_bound
- === RUN TestBuildNetworkProbeCommand/timeout_is_clamped_into_the_bounded_window
- --- PASS: TestBuildNetworkProbeCommand (0.00s)
- --- PASS: TestBuildNetworkProbeCommand/http_carries_path,_whole-second_timeout,_and_exact_endpoint (0.00s)
- --- PASS: TestBuildNetworkProbeCommand/tcp_carries_no_path (0.00s)
- --- PASS: TestBuildNetworkProbeCommand/nc_bound_stays_strictly_under_the_attempt_bound (0.00s)
- --- PASS: TestBuildNetworkProbeCommand/timeout_is_clamped_into_the_bounded_window (0.00s)
- === RUN TestProbeHelperHostConfig_IsHardened
- --- PASS: TestProbeHelperHostConfig_IsHardened (0.00s)
- === RUN TestProbeHelperConfig_NoSharedNetworks
- --- PASS: TestProbeHelperConfig_NoSharedNetworks (0.00s)
- === RUN TestParseProbeStatus
- --- PASS: TestParseProbeStatus (0.00s)
- === RUN TestCappedProbeBuffer
- --- PASS: TestCappedProbeBuffer (0.00s)
- === RUN TestHTTPProbeScript_RequiresThreeDigitStatus
- --- PASS: TestHTTPProbeScript_RequiresThreeDigitStatus (0.00s)
- === RUN TestProbeCleanupResult_PriorErrorNeverHidesCleanupFailure
- <U+001B>[90m2026-10-22T08:23:55Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mfailed to remove network probe helper<U+001B>[0m <U+001B>[36merror=<U+001B>[0m<U+001B>[31m<U+001B>[1m"remove failed"<U+001B>[0m<U+001B>[0m
- --- PASS: TestProbeCleanupResult_PriorErrorNeverHidesCleanupFailure (0.00s)
- === RUN TestProbeBoundExpired_OnlySessionDeadline
- --- PASS: TestProbeBoundExpired_OnlySessionDeadline (0.00s)
- === RUN TestProbeTimeoutFailure_IsUnhealthyNotError
- --- PASS: TestProbeTimeoutFailure_IsUnhealthyNotError (0.00s)
- === RUN TestProbeDiagnostic
- --- PASS: TestProbeDiagnostic (0.00s)
- === RUN TestDefaultNetworkProbeImage_IsDigestPinned
- --- PASS: TestDefaultNetworkProbeImage_IsDigestPinned (0.00s)
- === RUN TestRuntime_GetContainerNetwork
- --- PASS: TestRuntime_GetContainerNetwork (0.00s)
- === RUN TestRuntime_GetContainerNetwork_Fallback
- --- PASS: TestRuntime_GetContainerNetwork_Fallback (0.00s)
- === RUN TestRuntime_GetContainerNetwork_EmptyNetworks
- --- PASS: TestRuntime_GetContainerNetwork_EmptyNetworks (0.00s)
- === RUN TestRuntime_GetContainerNetwork_NilNetworkSettings
- --- PASS: TestRuntime_GetContainerNetwork_NilNetworkSettings (0.00s)
- === RUN TestRuntime_GetContainerBackendBindsRejectsMalformedMappings
- === RUN TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/wildcard
- === RUN TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/non-loopback
- === RUN TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/empty_host_ip
- === RUN TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/multiple_bindings
- === RUN TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/invalid_host_port
- --- PASS: TestRuntime_GetContainerBackendBindsRejectsMalformedMappings (0.01s)
- --- PASS: TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/wildcard (0.00s)
- --- PASS: TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/non-loopback (0.00s)
- --- PASS: TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/empty_host_ip (0.00s)
- --- PASS: TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/multiple_bindings (0.00s)
- --- PASS: TestRuntime_GetContainerBackendBindsRejectsMalformedMappings/invalid_host_port (0.00s)
- === RUN TestRuntime_GetContainerBackendBindsResolvesTCPAndUDPTogether
- --- PASS: TestRuntime_GetContainerBackendBindsResolvesTCPAndUDPTogether (0.00s)
- === RUN TestRuntime_GetContainerBackendBindsFailsWhenProtocolMissing
- --- PASS: TestRuntime_GetContainerBackendBindsFailsWhenProtocolMissing (0.00s)
- === RUN TestRuntime_CreateContainerPublishesExplicitUDPPort
- --- PASS: TestRuntime_CreateContainerPublishesExplicitUDPPort (0.00s)
- === RUN TestRuntime_CreateContainerKeepsLegacyPortsRandomLoopbackTCP
- --- PASS: TestRuntime_CreateContainerKeepsLegacyPortsRandomLoopbackTCP (0.00s)
- === RUN TestRuntime_CreateContainerAppliesRestartPolicy
- --- PASS: TestRuntime_CreateContainerAppliesRestartPolicy (0.00s)
- === RUN TestRuntime_CreateContainerMountsDeclaredReadOnlyVolumes
- --- PASS: TestRuntime_CreateContainerMountsDeclaredReadOnlyVolumes (0.00s)
- === RUN TestRuntime_CreateContainerAppliesNetworkAndResourceLimits
- --- PASS: TestRuntime_CreateContainerAppliesNetworkAndResourceLimits (0.00s)
- === RUN TestRuntime_CreateContainerTranslatesBindMounts
- --- PASS: TestRuntime_CreateContainerTranslatesBindMounts (0.00s)
- === RUN TestBuildBindMounts
- === RUN TestBuildBindMounts/sorts_by_destination
- === RUN TestBuildBindMounts/invalid_paths_rejected_without_echoing_source
- === RUN TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/relative_source
- === RUN TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/empty_source
- === RUN TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/unclean_source
- === RUN TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/relative_destination
- === RUN TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/sensitive_destination
- === RUN TestBuildBindMounts/duplicate_destination_rejected
- --- PASS: TestBuildBindMounts (0.00s)
- --- PASS: TestBuildBindMounts/sorts_by_destination (0.00s)
- --- PASS: TestBuildBindMounts/invalid_paths_rejected_without_echoing_source (0.00s)
- --- PASS: TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/relative_source (0.00s)
- --- PASS: TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/empty_source (0.00s)
- --- PASS: TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/unclean_source (0.00s)
- --- PASS: TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/relative_destination (0.00s)
- --- PASS: TestBuildBindMounts/invalid_paths_rejected_without_echoing_source/sensitive_destination (0.00s)
- --- PASS: TestBuildBindMounts/duplicate_destination_rejected (0.00s)
- === RUN TestMergeAddedCapabilities
- --- PASS: TestMergeAddedCapabilities (0.00s)
- === RUN TestRuntime_CreateContainerAddsGrantedCapabilitiesOnTopOfDefaults
- --- PASS: TestRuntime_CreateContainerAddsGrantedCapabilitiesOnTopOfDefaults (0.00s)
- === RUN TestRuntime_CreateContainerWithoutGrantsKeepsDefaultCapabilities
- --- PASS: TestRuntime_CreateContainerWithoutGrantsKeepsDefaultCapabilities (0.00s)
- === RUN TestBuildDeviceRequests_EmptyIsNil
- --- PASS: TestBuildDeviceRequests_EmptyIsNil (0.00s)
- === RUN TestBuildDeviceRequests_OneNativeCDIRequest
- --- PASS: TestBuildDeviceRequests_OneNativeCDIRequest (0.00s)
- === RUN TestBuildDeviceRequests_DoesNotMutateConfig
- --- PASS: TestBuildDeviceRequests_DoesNotMutateConfig (0.00s)
- === RUN TestCheckCDISupportMatrix
- === RUN TestCheckCDISupportMatrix/podman_6.1.1
- === RUN TestCheckCDISupportMatrix/podman_5.4_exact
- === RUN TestCheckCDISupportMatrix/podman_4.9_refused
- === RUN TestCheckCDISupportMatrix/docker_28.3
- === RUN TestCheckCDISupportMatrix/docker_27_refused
- === RUN TestCheckCDISupportMatrix/unknown_engine_refused
- === RUN TestCheckCDISupportMatrix/socket_hint_podman_accepted
- === RUN TestCheckCDISupportMatrix/unparsable_version_refused
- === RUN TestCheckCDISupportMatrix/prerelease_minor_refused
- --- PASS: TestCheckCDISupportMatrix (0.00s)
- --- PASS: TestCheckCDISupportMatrix/podman_6.1.1 (0.00s)
- --- PASS: TestCheckCDISupportMatrix/podman_5.4_exact (0.00s)
- --- PASS: TestCheckCDISupportMatrix/podman_4.9_refused (0.00s)
- --- PASS: TestCheckCDISupportMatrix/docker_28.3 (0.00s)
- --- PASS: TestCheckCDISupportMatrix/docker_27_refused (0.00s)
- --- PASS: TestCheckCDISupportMatrix/unknown_engine_refused (0.00s)
- --- PASS: TestCheckCDISupportMatrix/socket_hint_podman_accepted (0.00s)
- --- PASS: TestCheckCDISupportMatrix/unparsable_version_refused (0.00s)
- --- PASS: TestCheckCDISupportMatrix/prerelease_minor_refused (0.00s)
- === RUN TestCompareEngineVersion
- --- PASS: TestCompareEngineVersion (0.00s)
- === RUN TestEngineProbeError
- === RUN TestEngineProbeError/canceled_probe_keeps_the_sentinel_and_drops_the_endpoint
- === RUN TestEngineProbeError/canceled_adapter_cause_is_preserved
- === RUN TestEngineProbeError/other_probe_failures_stay_redacted
- --- PASS: TestEngineProbeError (0.00s)
- --- PASS: TestEngineProbeError/canceled_probe_keeps_the_sentinel_and_drops_the_endpoint (0.00s)
- --- PASS: TestEngineProbeError/canceled_adapter_cause_is_preserved (0.00s)
- --- PASS: TestEngineProbeError/other_probe_failures_stay_redacted (0.00s)
- === RUN TestParseExecOutput_SplitsStdoutAndStderr
- --- PASS: TestParseExecOutput_SplitsStdoutAndStderr (0.00s)
- === RUN TestParseExecOutput_RejectsOversizedFrameBeforeReadingPayload
- --- PASS: TestParseExecOutput_RejectsOversizedFrameBeforeReadingPayload (0.00s)
- === RUN TestRuntime_ExecInContainer_RejectsEmptyCommand
- === RUN TestRuntime_ExecInContainer_RejectsEmptyCommand/nil
- === RUN TestRuntime_ExecInContainer_RejectsEmptyCommand/empty_slice
- --- PASS: TestRuntime_ExecInContainer_RejectsEmptyCommand (0.00s)
- --- PASS: TestRuntime_ExecInContainer_RejectsEmptyCommand/nil (0.00s)
- --- PASS: TestRuntime_ExecInContainer_RejectsEmptyCommand/empty_slice (0.00s)
- === RUN TestExtractFileFromTarMatchesFullCleanPath
- --- PASS: TestExtractFileFromTarMatchesFullCleanPath (0.00s)
- === RUN TestExtractFileFromTarMatchesBasenameForCopiedFile
- --- PASS: TestExtractFileFromTarMatchesBasenameForCopiedFile (0.00s)
- === RUN TestExtractFileFromTarPrefersExactPathOverBasename
- --- PASS: TestExtractFileFromTarPrefersExactPathOverBasename (0.00s)
- === RUN TestExtractFileFromTarRejectsAmbiguousBasenameFallback
- --- PASS: TestExtractFileFromTarRejectsAmbiguousBasenameFallback (0.00s)
- === RUN TestExtractFileFromTarDoesNotMatchBasenameInNestedDirectory
- --- PASS: TestExtractFileFromTarDoesNotMatchBasenameInNestedDirectory (0.00s)
- === RUN TestReadExtractedEnvFileRejectsOversizedContent
- --- PASS: TestReadExtractedEnvFileRejectsOversizedContent (0.01s)
- === RUN TestRuntime_GetContainerHealthStatus_ConfiguredHealthcheck
- --- PASS: TestRuntime_GetContainerHealthStatus_ConfiguredHealthcheck (0.00s)
- === RUN TestRuntime_GetContainerHealthStatus_NoConfiguredHealthcheckWithStateHealthObject
- --- PASS: TestRuntime_GetContainerHealthStatus_NoConfiguredHealthcheckWithStateHealthObject (0.00s)
- === RUN TestRuntime_GetContainerHealthStatus_DisabledHealthcheck
- --- PASS: TestRuntime_GetContainerHealthStatus_DisabledHealthcheck (0.00s)
- === RUN TestRuntime_InspectContainer_ReportsConfiguredCapAdd
- --- PASS: TestRuntime_InspectContainer_ReportsConfiguredCapAdd (0.00s)
- === RUN Test_sortPortsHTTPFirst
- === RUN Test_sortPortsHTTPFirst/single_port_unchanged
- === RUN Test_sortPortsHTTPFirst/SSH_port_pushed_to_end
- === RUN Test_sortPortsHTTPFirst/HTTP_ports_sorted_by_priority
- === RUN Test_sortPortsHTTPFirst/SSH_pushed_behind_non-priority_ports
- === RUN Test_sortPortsHTTPFirst/mixed_priority_and_non-priority_ports
- === RUN Test_sortPortsHTTPFirst/all_non-priority_ports_sorted_ascending
- === RUN Test_sortPortsHTTPFirst/empty_slice_is_no-op
- === RUN Test_sortPortsHTTPFirst/gitea-style_multi-port_image
- --- PASS: Test_sortPortsHTTPFirst (0.00s)
- --- PASS: Test_sortPortsHTTPFirst/single_port_unchanged (0.00s)
- --- PASS: Test_sortPortsHTTPFirst/SSH_port_pushed_to_end (0.00s)
- --- PASS: Test_sortPortsHTTPFirst/HTTP_ports_sorted_by_priority (0.00s)
- --- PASS: Test_sortPortsHTTPFirst/SSH_pushed_behind_non-priority_ports (0.00s)
- --- PASS: Test_sortPortsHTTPFirst/mixed_priority_and_non-priority_ports (0.00s)
- --- PASS: Test_sortPortsHTTPFirst/all_non-priority_ports_sorted_ascending (0.00s)
- --- PASS: Test_sortPortsHTTPFirst/empty_slice_is_no-op (0.00s)
- --- PASS: Test_sortPortsHTTPFirst/gitea-style_multi-port_image (0.00s)
- === RUN TestRuntime_InventoryRuntime
- --- PASS: TestRuntime_InventoryRuntime (0.00s)
- === RUN TestRuntime_InventoryRuntimeReportsGapsNotAbsence
- --- PASS: TestRuntime_InventoryRuntimeReportsGapsNotAbsence (0.00s)
- === RUN TestRuntime_InventoryRuntimeContainerListFailureProtectsImages
- --- PASS: TestRuntime_InventoryRuntimeContainerListFailureProtectsImages (0.00s)
- === RUN TestRuntime_RemoveImageExactUsesExactIdentityWithoutForce
- --- PASS: TestRuntime_RemoveImageExactUsesExactIdentityWithoutForce (0.00s)
- === RUN TestRuntime_RemoveVolumeExactUsesExactIdentityWithoutForce
- --- PASS: TestRuntime_RemoveVolumeExactUsesExactIdentityWithoutForce (0.00s)
- === RUN TestRuntime_ExactRemovalRejectsInvalidIdentity
- --- PASS: TestRuntime_ExactRemovalRejectsInvalidIdentity (0.00s)
- === RUN TestRuntime_ExactRemovalPropagatesRuntimeErrors
- --- PASS: TestRuntime_ExactRemovalPropagatesRuntimeErrors (0.00s)
- === RUN TestRuntime_InspectContainerReportsNotFoundSentinel
- --- PASS: TestRuntime_InspectContainerReportsNotFoundSentinel (0.00s)
- === RUN TestRuntime_InspectContainerPreservesTransientErrors
- --- PASS: TestRuntime_InspectContainerPreservesTransientErrors (0.00s)
- === RUN TestRuntime_InspectContainerNormalizesStatusAndExecutionStart
- === RUN TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/running
- === RUN TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/exited
- === RUN TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/restarting
- === RUN TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/paused
- === RUN TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/created
- --- PASS: TestRuntime_InspectContainerNormalizesStatusAndExecutionStart (0.00s)
- --- PASS: TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/running (0.00s)
- --- PASS: TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/exited (0.00s)
- --- PASS: TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/restarting (0.00s)
- --- PASS: TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/paused (0.00s)
- --- PASS: TestRuntime_InspectContainerNormalizesStatusAndExecutionStart/created (0.00s)
- === RUN TestRuntime_StartContainerReportsNotFoundSentinel
- --- PASS: TestRuntime_StartContainerReportsNotFoundSentinel (0.00s)
- === RUN TestRuntime_GetContainerLogsSinceScopesTheRequest
- --- PASS: TestRuntime_GetContainerLogsSinceScopesTheRequest (0.00s)
- === RUN TestRuntime_GetContainerLogsSinceReportsNotFoundSentinel
- --- PASS: TestRuntime_GetContainerLogsSinceReportsNotFoundSentinel (0.00s)
- === RUN TestRuntime_InspectImageEnv_RedactsValuesInDebugLog
- --- PASS: TestRuntime_InspectImageEnv_RedactsValuesInDebugLog (0.00s)
- === RUN TestWaitForVolumeArchiveContainerIgnoresNilErrorBeforeStatus
- --- PASS: TestWaitForVolumeArchiveContainerIgnoresNilErrorBeforeStatus (0.00s)
- === RUN TestWaitForVolumeArchiveContainerHandlesClosedErrorChannelBeforeStatus
- --- PASS: TestWaitForVolumeArchiveContainerHandlesClosedErrorChannelBeforeStatus (0.00s)
- === RUN TestWaitForVolumeArchiveContainerReturnsErrorChannelError
- --- PASS: TestWaitForVolumeArchiveContainerReturnsErrorChannelError (0.00s)
- === RUN TestWaitForVolumeArchiveContainerErrorsWhenStatusChannelCloses
- --- PASS: TestWaitForVolumeArchiveContainerErrorsWhenStatusChannelCloses (0.00s)
- === RUN TestStopTimeout_ConvertsGraceToAPISeconds
- === RUN TestStopTimeout_ConvertsGraceToAPISeconds/zero_keeps_the_runtime_default
- === RUN TestStopTimeout_ConvertsGraceToAPISeconds/negative_keeps_the_runtime_default
- === RUN TestStopTimeout_ConvertsGraceToAPISeconds/default_app_grace
- === RUN TestStopTimeout_ConvertsGraceToAPISeconds/sub-second_rounds_up
- === RUN TestStopTimeout_ConvertsGraceToAPISeconds/fractional_rounds_up
- === RUN TestStopTimeout_ConvertsGraceToAPISeconds/exact_seconds_are_preserved
- === RUN TestStopTimeout_ConvertsGraceToAPISeconds/the_app_cap_is_preserved
- --- PASS: TestStopTimeout_ConvertsGraceToAPISeconds (0.00s)
- --- PASS: TestStopTimeout_ConvertsGraceToAPISeconds/zero_keeps_the_runtime_default (0.00s)
- --- PASS: TestStopTimeout_ConvertsGraceToAPISeconds/negative_keeps_the_runtime_default (0.00s)
- --- PASS: TestStopTimeout_ConvertsGraceToAPISeconds/default_app_grace (0.00s)
- --- PASS: TestStopTimeout_ConvertsGraceToAPISeconds/sub-second_rounds_up (0.00s)
- --- PASS: TestStopTimeout_ConvertsGraceToAPISeconds/fractional_rounds_up (0.00s)
- --- PASS: TestStopTimeout_ConvertsGraceToAPISeconds/exact_seconds_are_preserved (0.00s)
- --- PASS: TestStopTimeout_ConvertsGraceToAPISeconds/the_app_cap_is_preserved (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/docker 1.108s
- ? github.com/bnema/gordon/internal/adapters/out/eventbus [no test files]
- === RUN TestBackupStorage_StoreAndGet
- --- PASS: TestBackupStorage_StoreAndGet (0.00s)
- === RUN TestBackupStorage_StoreSameSecondBackupsUseDistinctFinalAndTempPaths
- --- PASS: TestBackupStorage_StoreSameSecondBackupsUseDistinctFinalAndTempPaths (0.00s)
- === RUN TestBackupStorage_PreservesCanonicalIdentityAndSeparatesSameNamedDatabases
- --- PASS: TestBackupStorage_PreservesCanonicalIdentityAndSeparatesSameNamedDatabases (0.00s)
- === RUN TestBackupStorage_DoesNotMergePreCutoverRecords
- --- PASS: TestBackupStorage_DoesNotMergePreCutoverRecords (0.00s)
- === RUN TestBackupStorage_ListWithScheduleFilter
- --- PASS: TestBackupStorage_ListWithScheduleFilter (0.00s)
- === RUN TestBackupStorage_Delete
- --- PASS: TestBackupStorage_Delete (0.00s)
- === RUN TestBackupStorage_ApplyRetention
- --- PASS: TestBackupStorage_ApplyRetention (0.00s)
- === RUN TestBackupStorage_StoreSanitizesDotOnlyPathComponents
- --- PASS: TestBackupStorage_StoreSanitizesDotOnlyPathComponents (0.00s)
- === RUN TestBackupStorage_StoreSanitizesSchedulePathComponent
- --- PASS: TestBackupStorage_StoreSanitizesSchedulePathComponent (0.00s)
- === RUN TestBlobStorage_CleanupStaleUploads_RemovesOldFiles
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_CleanupStaleUploads_RemovesOldFiles1169463292/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mremoved stale upload<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize=<U+001B>[0m1024 <U+001B>[36muuid=<U+001B>[0mstale-uuid-1234
- --- PASS: TestBlobStorage_CleanupStaleUploads_RemovesOldFiles (0.00s)
- === RUN TestBlobStorage_CleanupStaleUploads_PreservesRecentFiles
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_CleanupStaleUploads_PreservesRecentFiles3221381154/001
- --- PASS: TestBlobStorage_CleanupStaleUploads_PreservesRecentFiles (0.00s)
- === RUN TestBlobStorage_CleanupStaleUploads_EmptyUploadsDir
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_CleanupStaleUploads_EmptyUploadsDir1204262072/001
- --- PASS: TestBlobStorage_CleanupStaleUploads_EmptyUploadsDir (0.00s)
- === RUN TestBlobStorage_CleanupStaleUploads_MixedAges
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_CleanupStaleUploads_MixedAges1810035615/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mremoved stale upload<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize=<U+001B>[0m2048 <U+001B>[36muuid=<U+001B>[0mstale-uuid
- --- PASS: TestBlobStorage_CleanupStaleUploads_MixedAges (0.00s)
- === RUN TestNewBlobStorage
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestNewBlobStorage253012530/001
- --- PASS: TestNewBlobStorage (0.00s)
- === RUN TestNewBlobStorage_InvalidPath
- --- PASS: TestNewBlobStorage_InvalidPath (0.00s)
- === RUN TestBlobStorage_PutAndGetBlob
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_PutAndGetBlob3073290834/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- --- PASS: TestBlobStorage_PutAndGetBlob (0.00s)
- === RUN TestBlobStorage_GetBlob_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_GetBlob_NotFound939962819/001
- --- PASS: TestBlobStorage_GetBlob_NotFound (0.00s)
- === RUN TestBlobStorage_GetBlobPath
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_GetBlobPath3105171576/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- --- PASS: TestBlobStorage_GetBlobPath (0.00s)
- === RUN TestBlobStorage_GetBlobPath_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_GetBlobPath_NotFound394836739/001
- --- PASS: TestBlobStorage_GetBlobPath_NotFound (0.00s)
- === RUN TestBlobStorage_PutBlob_SizeMismatch
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_PutBlob_SizeMismatch4114999355/001
- --- PASS: TestBlobStorage_PutBlob_SizeMismatch (0.00s)
- === RUN TestBlobStorage_PutBlob_ZeroSize
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_PutBlob_ZeroSize3913759062/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:b3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d5 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- --- PASS: TestBlobStorage_PutBlob_ZeroSize (0.00s)
- === RUN TestBlobStorage_DeleteBlob
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_DeleteBlob1329402853/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:b3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d5 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob deleted<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:b3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d5 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- --- PASS: TestBlobStorage_DeleteBlob (0.00s)
- === RUN TestBlobStorage_DeleteBlob_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_DeleteBlob_NotFound3182534200/001
- --- PASS: TestBlobStorage_DeleteBlob_NotFound (0.00s)
- === RUN TestBlobStorage_BlobExists
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_BlobExists3838992741/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:b3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d5 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- --- PASS: TestBlobStorage_BlobExists (0.00s)
- === RUN TestBlobStorage_ListBlobs
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_ListBlobs3815818051/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:b3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d5 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- --- PASS: TestBlobStorage_ListBlobs (0.00s)
- === RUN TestBlobStorage_ListBlobs_Empty
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_ListBlobs_Empty949215507/001
- --- PASS: TestBlobStorage_ListBlobs_Empty (0.00s)
- === RUN TestBlobStorage_StartBlobUpload
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_StartBlobUpload2157185594/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m446cbe7b-56eb-4ae3-9d39-c3ff245c3473
- --- PASS: TestBlobStorage_StartBlobUpload (0.00s)
- === RUN TestBlobStorage_AppendBlobChunk
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_AppendBlobChunk2184606715/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m7cb18512-48fc-4495-8865-b666a1c9fd6e
- --- PASS: TestBlobStorage_AppendBlobChunk (0.00s)
- === RUN TestBlobStorage_AppendBlobChunk_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_AppendBlobChunk_NotFound3825893072/001
- --- PASS: TestBlobStorage_AppendBlobChunk_NotFound (0.00s)
- === RUN TestBlobStorage_AppendBlobChunk_MaxBlobSize
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_AppendBlobChunk_MaxBlobSize2254218516/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m77397e7e-0268-4059-af4e-2ce8aa6587a8
- --- PASS: TestBlobStorage_AppendBlobChunk_MaxBlobSize (0.00s)
- === RUN TestBlobStorage_AppendBlobChunk_MaxBlobSizeContentLengthTooLargeDoesNotRead
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_AppendBlobChunk_MaxBlobSizeContentLengthTooLarge4082353754/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0ma39eaeb4-abc2-47bb-8b82-6e99c22e33e2
- --- PASS: TestBlobStorage_AppendBlobChunk_MaxBlobSizeContentLengthTooLargeDoesNotRead (0.00s)
- === RUN TestBlobStorage_AppendBlobChunk_MaxBlobSizeOverflowMidReadTruncates
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_AppendBlobChunk_MaxBlobSizeOverflowMidReadTrunca316578184/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m0da6c358-b81c-42c2-bd19-d54b2648e7b7
- --- PASS: TestBlobStorage_AppendBlobChunk_MaxBlobSizeOverflowMidReadTruncates (0.00s)
- === RUN TestBlobStorage_GetBlobUpload
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_GetBlobUpload2998001977/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0mb1d52727-bc92-4399-8564-a4991e3093d8
- --- PASS: TestBlobStorage_GetBlobUpload (0.00s)
- === RUN TestBlobStorage_GetBlobUpload_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_GetBlobUpload_NotFound2580924057/001
- --- PASS: TestBlobStorage_GetBlobUpload_NotFound (0.00s)
- === RUN TestBlobStorage_FinishBlobUpload
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_FinishBlobUpload132812385/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0mcb1ed31e-210b-46f7-b976-bcd3821315cf
- --- PASS: TestBlobStorage_FinishBlobUpload (0.00s)
- === RUN TestBlobStorage_CancelBlobUpload
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_CancelBlobUpload2521052866/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m8e66a23b-0822-4b1e-b5ba-bbccc764ba7b
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob upload cancelled<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36muuid=<U+001B>[0m8e66a23b-0822-4b1e-b5ba-bbccc764ba7b
- --- PASS: TestBlobStorage_CancelBlobUpload (0.00s)
- === RUN TestBlobStorage_CancelBlobUpload_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_CancelBlobUpload_NotFound3909342215/001
- --- PASS: TestBlobStorage_CancelBlobUpload_NotFound (0.00s)
- === RUN TestBlobStorage_BlobPathStructure
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_BlobPathStructure742708555/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m17
- --- PASS: TestBlobStorage_BlobPathStructure (0.00s)
- === RUN TestBlobStorage_DigestFormats
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_DigestFormats3181560821/001
- === RUN TestBlobStorage_DigestFormats/sha256_standard
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m88
- === RUN TestBlobStorage_DigestFormats/sha512
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob stored<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mdigest=<U+001B>[0msha512:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36msize_bytes=<U+001B>[0m152
- --- PASS: TestBlobStorage_DigestFormats (0.00s)
- --- PASS: TestBlobStorage_DigestFormats/sha256_standard (0.00s)
- --- PASS: TestBlobStorage_DigestFormats/sha512 (0.00s)
- === RUN TestBlobStorage_CompleteUploadFlow
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_CompleteUploadFlow3098151535/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyorg/myapp <U+001B>[36muuid=<U+001B>[0m140d30d6-0d01-4ee5-9e5d-e5a31525e7e1
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mblob upload cancelled<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyorg/myapp <U+001B>[36muuid=<U+001B>[0m140d30d6-0d01-4ee5-9e5d-e5a31525e7e1
- --- PASS: TestBlobStorage_CompleteUploadFlow (0.00s)
- === RUN TestBlobStorage_ConcurrentAppendAndFinalize
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_ConcurrentAppendAndFinalize2139033938/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m20ea04a6-ed7d-4672-a2fc-33a8ab4a754b
- <U+001B>[90m2026-10-22T08:23:56Z<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:e28df5bd6963a61ee101b65a7bb927154720ff11bb96e66fac684a61c8265b65 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36muuid=<U+001B>[0m20ea04a6-ed7d-4672-a2fc-33a8ab4a754b
- --- PASS: TestBlobStorage_ConcurrentAppendAndFinalize (0.00s)
- === RUN TestBlobStorage_AppendAfterFinalize
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_AppendAfterFinalize2858428988/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m4ecd363c-fbea-49f3-852d-c0de876a3489
- <U+001B>[90m2026-10-22T08:23:56Z<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:230d6ef6dba6e66b584ea80ab7f70d5654e1149930c6f555b4d40ce0df212677 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36muuid=<U+001B>[0m4ecd363c-fbea-49f3-852d-c0de876a3489
- --- PASS: TestBlobStorage_AppendAfterFinalize (0.00s)
- === RUN TestBlobStorage_FinishBlobUploadMarksBlobAsRecentlyFinalized
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_FinishBlobUploadMarksBlobAsRecentlyFinalized2265458089/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0mfd2e4318-6cb4-4a38-9804-ee55ec3ce689
- <U+001B>[90m2026-10-22T08:23:56Z<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:230d6ef6dba6e66b584ea80ab7f70d5654e1149930c6f555b4d40ce0df212677 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36muuid=<U+001B>[0mfd2e4318-6cb4-4a38-9804-ee55ec3ce689
- --- PASS: TestBlobStorage_FinishBlobUploadMarksBlobAsRecentlyFinalized (0.00s)
- === RUN TestBlobStorage_FailedFinalizeRetryable
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_FailedFinalizeRetryable1455439861/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0md4f8477e-98d2-4d40-a1dd-f1fe465e70a2
- <U+001B>[90m2026-10-22T08:23:56Z<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:23eba1d161026739b83ff8de576b8fe41a81239c4f759d2e870143568b95b074 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36muuid=<U+001B>[0md4f8477e-98d2-4d40-a1dd-f1fe465e70a2
- --- PASS: TestBlobStorage_FailedFinalizeRetryable (0.00s)
- === RUN TestBlobStorage_SequentialFlow
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_SequentialFlow2446689598/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m4c9408f3-062b-429a-9702-bfba661bda7d
- <U+001B>[90m2026-10-22T08:23:56Z<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:26ec65d7941970f710a75fe966c09fdef470067ef7072951beae88e4f36d6e1c <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36muuid=<U+001B>[0m4c9408f3-062b-429a-9702-bfba661bda7d
- --- PASS: TestBlobStorage_SequentialFlow (0.00s)
- === RUN TestBlobStorage_UploadBoundToRepository
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_UploadBoundToRepository3108333385/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mowner <U+001B>[36muuid=<U+001B>[0m097c41db-c944-4b2d-b159-a06115e2d776
- <U+001B>[90m2026-10-22T08:23:56Z<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:f57e412226282015394463a91a090cdb7508e746819cb38979d22fa98592f574 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mowner <U+001B>[36muuid=<U+001B>[0m097c41db-c944-4b2d-b159-a06115e2d776
- --- PASS: TestBlobStorage_UploadBoundToRepository (0.00s)
- === RUN TestBlobStorage_BlobOwnershipPersistsAcrossRestart
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_BlobOwnershipPersistsAcrossRestart161875223/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m03206fdc-678a-48bb-bb27-bcfeb08a8b02
- <U+001B>[90m2026-10-22T08:23:56Z<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:371ff2b882c995407dfcbb34cb71c4bbc2427dc1ecd7bb25e7fdb9a312102d98 <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36muuid=<U+001B>[0m03206fdc-678a-48bb-bb27-bcfeb08a8b02
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_BlobOwnershipPersistsAcrossRestart161875223/001
- --- PASS: TestBlobStorage_BlobOwnershipPersistsAcrossRestart (0.00s)
- === RUN TestBlobStorage_FailedFinishDoesNotRecordOwnership
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestBlobStorage_FailedFinishDoesNotRecordOwnership1877238982/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36muuid=<U+001B>[0m8c58efb6-9869-4c91-a70f-d720a5135846
- --- PASS: TestBlobStorage_FailedFinishDoesNotRecordOwnership (0.00s)
- === RUN TestNewManifestStorage
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestNewManifestStorage652083874/001
- --- PASS: TestNewManifestStorage (0.00s)
- === RUN TestNewManifestStorage_InvalidPath
- --- PASS: TestNewManifestStorage_InvalidPath (0.00s)
- === RUN TestManifestStorage_PutAndGetManifest
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_PutAndGetManifest349550987/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- --- PASS: TestManifestStorage_PutAndGetManifest (0.00s)
- === RUN TestManifestStorage_PutMirrorsDigest
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_PutMirrorsDigest2663662818/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv1
- --- PASS: TestManifestStorage_PutMirrorsDigest (0.00s)
- === RUN TestManifestStorage_GetManifest_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_GetManifest_NotFound2878051645/001
- --- PASS: TestManifestStorage_GetManifest_NotFound (0.00s)
- === RUN TestManifestStorage_GetManifestModTime
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_GetManifestModTime3984058724/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- --- PASS: TestManifestStorage_GetManifestModTime (0.00s)
- === RUN TestManifestStorage_GetManifestModTime_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_GetManifestModTime_NotFound3533829252/001
- --- PASS: TestManifestStorage_GetManifestModTime_NotFound (0.00s)
- === RUN TestManifestStorage_GetManifest_FallbackContentType
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_GetManifest_FallbackContentType1861184802/001
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mcould not get manifest content type, falling back to default<U+001B>[0m <U+001B>[36merror=<U+001B>[0m<U+001B>[31m<U+001B>[1m"open /tmp/TestManifestStorage_GetManifest_FallbackContentType1861184802/001/repositories/myapp/manifests/latest.contenttype: no such file or directory"<U+001B>[0m<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- --- PASS: TestManifestStorage_GetManifest_FallbackContentType (0.00s)
- === RUN TestManifestStorage_DeleteManifest
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_DeleteManifest3915186190/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mmanifest deleted<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- --- PASS: TestManifestStorage_DeleteManifest (0.00s)
- === RUN TestManifestStorage_DeleteManifest_NotFound
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_DeleteManifest_NotFound1807105496/001
- --- PASS: TestManifestStorage_DeleteManifest_NotFound (0.00s)
- === RUN TestManifestStorage_ListTags
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_ListTags257195093/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv1.0
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv2.0
- --- PASS: TestManifestStorage_ListTags (0.00s)
- === RUN TestManifestStorage_ListTags_Empty
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_ListTags_Empty2752192440/001
- --- PASS: TestManifestStorage_ListTags_Empty (0.00s)
- === RUN TestManifestStorage_ListTags_SkipsDigestReference
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_ListTags_SkipsDigestReference300699173/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0msha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
- --- PASS: TestManifestStorage_ListTags_SkipsDigestReference (0.00s)
- === RUN TestManifestStorage_ListTags_AfterDelete
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_ListTags_AfterDelete1293707489/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv1.0
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mmanifest deleted<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv1.0
- --- PASS: TestManifestStorage_ListTags_AfterDelete (0.00s)
- === RUN TestManifestStorage_ListRepositories
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_ListRepositories3902696200/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mapp1 <U+001B>[36mreference=<U+001B>[0mlatest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mapp2 <U+001B>[36mreference=<U+001B>[0mlatest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0morg/app3 <U+001B>[36mreference=<U+001B>[0mlatest
- --- PASS: TestManifestStorage_ListRepositories (0.00s)
- === RUN TestManifestStorage_ListRepositories_Empty
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_ListRepositories_Empty2417712252/001
- --- PASS: TestManifestStorage_ListRepositories_Empty (0.00s)
- === RUN TestManifestStorage_NestedRepositoryNames
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_NestedRepositoryNames754007716/001
- === RUN TestManifestStorage_NestedRepositoryNames/simple
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0msimple <U+001B>[36mreference=<U+001B>[0mlatest
- === RUN TestManifestStorage_NestedRepositoryNames/org/project
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0morg/project <U+001B>[36mreference=<U+001B>[0mv1.0
- === RUN TestManifestStorage_NestedRepositoryNames/org/team/project
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0morg/team/project <U+001B>[36mreference=<U+001B>[0mv2.0
- === RUN TestManifestStorage_NestedRepositoryNames/deeply/nested/repo/name
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mdeeply/nested/repo/name <U+001B>[36mreference=<U+001B>[0msha256:abc123
- --- PASS: TestManifestStorage_NestedRepositoryNames (0.00s)
- --- PASS: TestManifestStorage_NestedRepositoryNames/simple (0.00s)
- --- PASS: TestManifestStorage_NestedRepositoryNames/org/project (0.00s)
- --- PASS: TestManifestStorage_NestedRepositoryNames/org/team/project (0.00s)
- --- PASS: TestManifestStorage_NestedRepositoryNames/deeply/nested/repo/name (0.00s)
- === RUN TestManifestStorage_ContentTypes
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_ContentTypes923844902/001
- === RUN TestManifestStorage_ContentTypes/v2_manifest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mtest-repo <U+001B>[36mreference=<U+001B>[0mtag-a
- === RUN TestManifestStorage_ContentTypes/v1_manifest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mtest-repo <U+001B>[36mreference=<U+001B>[0mtag-b
- === RUN TestManifestStorage_ContentTypes/OCI_manifest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mtest-repo <U+001B>[36mreference=<U+001B>[0mtag-c
- === RUN TestManifestStorage_ContentTypes/OCI_index
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mtest-repo <U+001B>[36mreference=<U+001B>[0mtag-d
- === RUN TestManifestStorage_ContentTypes/manifest_list
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mtest-repo <U+001B>[36mreference=<U+001B>[0mtag-e
- --- PASS: TestManifestStorage_ContentTypes (0.00s)
- --- PASS: TestManifestStorage_ContentTypes/v2_manifest (0.00s)
- --- PASS: TestManifestStorage_ContentTypes/v1_manifest (0.00s)
- --- PASS: TestManifestStorage_ContentTypes/OCI_manifest (0.00s)
- --- PASS: TestManifestStorage_ContentTypes/OCI_index (0.00s)
- --- PASS: TestManifestStorage_ContentTypes/manifest_list (0.00s)
- === RUN TestManifestStorage_DuplicateTag
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_DuplicateTag3225770921/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mlatest
- --- PASS: TestManifestStorage_DuplicateTag (0.00s)
- === RUN TestManifestStorage_LargeManifest
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_LargeManifest556434543/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mlarge-app <U+001B>[36mreference=<U+001B>[0mlatest
- --- PASS: TestManifestStorage_LargeManifest (0.04s)
- === RUN TestManifestStorage_SpecialCharactersInReference
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_SpecialCharactersInReference1014109375/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0msha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
- --- PASS: TestManifestStorage_SpecialCharactersInReference (0.00s)
- === RUN TestManifestStorage_CompleteWorkflow
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_CompleteWorkflow1824111933/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyorg/myapp <U+001B>[36mreference=<U+001B>[0mv1.0
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyorg/myapp <U+001B>[36mreference=<U+001B>[0mlatest
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyorg/myapp <U+001B>[36mreference=<U+001B>[0mv2.0
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyorg/myapp <U+001B>[36mreference=<U+001B>[0mlatest
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mmanifest deleted<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyorg/myapp <U+001B>[36mreference=<U+001B>[0mv1.0
- --- PASS: TestManifestStorage_CompleteWorkflow (0.00s)
- === RUN TestManifestStorage_UpdateTagsList_CleansLegacyDigestEntries
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_UpdateTagsList_CleansLegacyDigestEntries2963811790/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv1.0
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv2.0
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv3.0
- --- PASS: TestManifestStorage_UpdateTagsList_CleansLegacyDigestEntries (0.00s)
- === RUN TestManifestStorage_RemoveFromTagsList_CleansLegacyDigestEntries
- <U+001B>[90m2026-10-22T08:23:56Z<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/TestManifestStorage_RemoveFromTagsList_CleansLegacyDigestEntries199012160/001
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv1.0
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv2.0
- <U+001B>[90m2026-10-22T08:23:56Z<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>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv3.0
- <U+001B>[90m2026-10-22T08:23:56Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mmanifest deleted<U+001B>[0m <U+001B>[36madapter=<U+001B>[0mfilesystem <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mname=<U+001B>[0mmyapp <U+001B>[36mreference=<U+001B>[0mv2.0
- --- PASS: TestManifestStorage_RemoveFromTagsList_CleansLegacyDigestEntries (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/filesystem 1.136s
- ? github.com/bnema/gordon/internal/adapters/out/httpprober [no test files]
- === RUN TestResolver_PinnedPassesThrough
- --- PASS: TestResolver_PinnedPassesThrough (0.00s)
- === RUN TestResolver_LocalManifestHashes
- --- PASS: TestResolver_LocalManifestHashes (0.00s)
- === RUN TestResolver_ExternalNeedsRemote
- --- PASS: TestResolver_ExternalNeedsRemote (0.00s)
- === RUN TestResolver_RejectsMalformedRemoteDigest
- --- PASS: TestResolver_RejectsMalformedRemoteDigest (0.00s)
- === RUN TestResolver_RejectsDisallowedRefsWithoutConnecting
- --- PASS: TestResolver_RejectsDisallowedRefsWithoutConnecting (0.00s)
- === RUN TestResolver_AllowsInstallationAndAllowlistedRefs
- --- PASS: TestResolver_AllowsInstallationAndAllowlistedRefs (0.00s)
- === RUN TestResolver_RequireDigestRejectsTags
- --- PASS: TestResolver_RequireDigestRejectsTags (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/imageref 1.013s
- === RUN TestNew
- === RUN TestNew/creates_log_directory
- === RUN TestNew/uses_existing_directory
- --- PASS: TestNew (0.00s)
- --- PASS: TestNew/creates_log_directory (0.00s)
- --- PASS: TestNew/uses_existing_directory (0.00s)
- === RUN TestStartLogging
- === RUN TestStartLogging/creates_log_file_and_writes_data
- === RUN TestStartLogging/replaces_existing_log_stream_for_same_container
- --- PASS: TestStartLogging (0.25s)
- --- PASS: TestStartLogging/creates_log_file_and_writes_data (0.10s)
- --- PASS: TestStartLogging/replaces_existing_log_stream_for_same_container (0.15s)
- === RUN TestStopLogging
- === RUN TestStopLogging/stops_log_collection
- === RUN TestStopLogging/noop_for_non-existent_container
- --- PASS: TestStopLogging (0.05s)
- --- PASS: TestStopLogging/stops_log_collection (0.05s)
- --- PASS: TestStopLogging/noop_for_non-existent_container (0.00s)
- === RUN TestClose
- === RUN TestClose/stops_all_log_streams
- --- PASS: TestClose (0.03s)
- --- PASS: TestClose/stops_all_log_streams (0.03s)
- === RUN TestSanitizeDomain
- === RUN TestSanitizeDomain/app.example.com
- === RUN TestSanitizeDomain/api.v1.example.com
- === RUN TestSanitizeDomain/localhost:8080
- === RUN TestSanitizeDomain/app/service
- === RUN TestSanitizeDomain/app_with_spaces
- === RUN TestSanitizeDomain/simple
- --- PASS: TestSanitizeDomain (0.00s)
- --- PASS: TestSanitizeDomain/app.example.com (0.00s)
- --- PASS: TestSanitizeDomain/api.v1.example.com (0.00s)
- --- PASS: TestSanitizeDomain/localhost:8080 (0.00s)
- --- PASS: TestSanitizeDomain/app/service (0.00s)
- --- PASS: TestSanitizeDomain/app_with_spaces (0.00s)
- --- PASS: TestSanitizeDomain/simple (0.00s)
- === RUN TestMultipleContainers
- --- PASS: TestMultipleContainers (0.10s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/logwriter 1.440s
- === RUN TestNewCA_GeneratesRootAndIntermediate
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new root CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - 2026 ECC Root"
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new intermediate CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - ECC Intermediate" <U+001B>[36mexpires=<U+001B>[0m2026-10-29T08:23:57Z
- --- PASS: TestNewCA_GeneratesRootAndIntermediate (0.00s)
- === RUN TestNewCA_LoadsExistingOnRestart
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new root CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - 2026 ECC Root"
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new intermediate CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - ECC Intermediate" <U+001B>[36mexpires=<U+001B>[0m2026-10-29T08:23:57Z
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mloaded existing root CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - 2026 ECC Root"
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mloaded existing intermediate CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - ECC Intermediate" <U+001B>[36mexpires=<U+001B>[0m2026-10-29T08:23:57Z
- --- PASS: TestNewCA_LoadsExistingOnRestart (0.00s)
- === RUN TestCA_IssueCertificate
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new root CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - 2026 ECC Root"
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new intermediate CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - ECC Intermediate" <U+001B>[36mexpires=<U+001B>[0m2026-10-29T08:23:57Z
- --- PASS: TestCA_IssueCertificate (0.00s)
- === RUN TestCA_RenewIntermediate
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new root CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - 2026 ECC Root"
- <U+001B>[90m2026-10-22T08:23:57Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new intermediate CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - ECC Intermediate" <U+001B>[36mexpires=<U+001B>[0m2026-10-29T08:23:57Z
- <U+001B>[90m2026-10-22T08:23:58Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new intermediate CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - ECC Intermediate" <U+001B>[36mexpires=<U+001B>[0m2026-10-29T08:23:58Z
- <U+001B>[90m2026-10-22T08:23:58Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mintermediate CA renewed<U+001B>[0m <U+001B>[36mexpires=<U+001B>[0m2026-10-29T08:23:58Z
- --- PASS: TestCA_RenewIntermediate (1.10s)
- === RUN TestGenerateMobileconfig
- <U+001B>[90m2026-10-22T08:23:58Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new root CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - 2026 ECC Root"
- <U+001B>[90m2026-10-22T08:23:58Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mgenerated new intermediate CA<U+001B>[0m <U+001B>[36mcn=<U+001B>[0m"Gordon Internal CA - ECC Intermediate" <U+001B>[36mexpires=<U+001B>[0m2026-10-29T08:23:58Z
- --- PASS: TestGenerateMobileconfig (0.00s)
- === RUN TestGenerateMobileconfig_UsesIdentifierSafePayloadIdentifier
- --- PASS: TestGenerateMobileconfig_UsesIdentifierSafePayloadIdentifier (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/pki 2.129s
- === RUN TestMemoryStore_Allow_WithinLimit
- --- PASS: TestMemoryStore_Allow_WithinLimit (0.00s)
- === RUN TestMemoryStore_Allow_ExceedsLimit
- --- PASS: TestMemoryStore_Allow_ExceedsLimit (0.00s)
- === RUN TestMemoryStore_Allow_BurstBehavior
- --- PASS: TestMemoryStore_Allow_BurstBehavior (0.20s)
- === RUN TestMemoryStore_Allow_IndependentKeys
- --- PASS: TestMemoryStore_Allow_IndependentKeys (0.00s)
- === RUN TestMemoryStore_AllowN_Basic
- --- PASS: TestMemoryStore_AllowN_Basic (0.00s)
- === RUN TestMemoryStore_AllowN_ExceedsBurst
- --- PASS: TestMemoryStore_AllowN_ExceedsBurst (0.00s)
- === RUN TestMemoryStore_Allow_ConcurrentAccess
- --- PASS: TestMemoryStore_Allow_ConcurrentAccess (0.00s)
- === RUN TestMemoryStore_IPKeyFormat
- --- PASS: TestMemoryStore_IPKeyFormat (0.00s)
- === RUN TestMemoryStore_GlobalKey
- --- PASS: TestMemoryStore_GlobalKey (0.00s)
- === RUN TestNewStore_MemoryBackend
- --- PASS: TestNewStore_MemoryBackend (0.00s)
- === RUN TestNewStore_EmptyBackend
- --- PASS: TestNewStore_EmptyBackend (0.00s)
- === RUN TestNewStore_RedisBackend
- --- PASS: TestNewStore_RedisBackend (0.00s)
- === RUN TestNewStore_UnknownBackend
- --- PASS: TestNewStore_UnknownBackend (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/ratelimit 1.214s
- === RUN TestVolumeBackupStorageStoreListGet
- --- PASS: TestVolumeBackupStorageStoreListGet (0.00s)
- === RUN TestVolumeBackupStorageSendsConfiguredStorageClass
- --- PASS: TestVolumeBackupStorageSendsConfiguredStorageClass (0.00s)
- === RUN TestVolumeBackupStorageRetentionMixesLongAndShortIDs
- --- PASS: TestVolumeBackupStorageRetentionMixesLongAndShortIDs (0.00s)
- === RUN TestVolumeBackupStorageLatestVolumeArchives
- --- PASS: TestVolumeBackupStorageLatestVolumeArchives (0.00s)
- === RUN TestVolumeBackupStorageRetentionUsesParsedKeyTimestamp
- --- PASS: TestVolumeBackupStorageRetentionUsesParsedKeyTimestamp (0.00s)
- === RUN TestVolumeBackupStorageRejectsWrongBucketArtifact
- --- PASS: TestVolumeBackupStorageRejectsWrongBucketArtifact (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/s3 1.016s
- === RUN TestStore_WriteModesAndRead
- --- PASS: TestStore_WriteModesAndRead (0.00s)
- === RUN TestStore_WriteNeverReplacesExistingContainer
- --- PASS: TestStore_WriteNeverReplacesExistingContainer (0.00s)
- === RUN TestStore_RemoveAndList
- --- PASS: TestStore_RemoveAndList (0.00s)
- === RUN TestStore_InvalidNamesRejected
- === RUN TestStore_InvalidNamesRejected/app_traversal
- === RUN TestStore_InvalidNamesRejected/app_slash
- === RUN TestStore_InvalidNamesRejected/container_dot
- === RUN TestStore_InvalidNamesRejected/container_dotdot
- === RUN TestStore_InvalidNamesRejected/container_slash
- === RUN TestStore_InvalidNamesRejected/container_empty
- === RUN TestStore_InvalidNamesRejected/bad_key
- === RUN TestStore_InvalidNamesRejected/key_traversal
- --- PASS: TestStore_InvalidNamesRejected (0.00s)
- --- PASS: TestStore_InvalidNamesRejected/app_traversal (0.00s)
- --- PASS: TestStore_InvalidNamesRejected/app_slash (0.00s)
- --- PASS: TestStore_InvalidNamesRejected/container_dot (0.00s)
- --- PASS: TestStore_InvalidNamesRejected/container_dotdot (0.00s)
- --- PASS: TestStore_InvalidNamesRejected/container_slash (0.00s)
- --- PASS: TestStore_InvalidNamesRejected/container_empty (0.00s)
- --- PASS: TestStore_InvalidNamesRejected/bad_key (0.00s)
- --- PASS: TestStore_InvalidNamesRejected/key_traversal (0.00s)
- === RUN TestStore_SymlinkEscapeRefused
- --- PASS: TestStore_SymlinkEscapeRefused (0.00s)
- === RUN TestNewStore_RefusesSymlinkBase
- --- PASS: TestNewStore_RefusesSymlinkBase (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/secretfiles 1.015s
- === RUN TestValidatePath
- === RUN TestValidatePath/simple_path
- === RUN TestValidatePath/path_with_dots_in_name
- === RUN TestValidatePath/path_with_hyphens
- === RUN TestValidatePath/path_with_underscores
- === RUN TestValidatePath/nested_path
- === RUN TestValidatePath/path_traversal_with_double_dots
- === RUN TestValidatePath/path_traversal_in_middle
- === RUN TestValidatePath/path_traversal_at_end
- === RUN TestValidatePath/encoded_path_traversal
- === RUN TestValidatePath/absolute_path
- === RUN TestValidatePath/absolute_path_with_valid_chars
- === RUN TestValidatePath/semicolon_injection
- === RUN TestValidatePath/pipe_injection
- === RUN TestValidatePath/backtick_injection
- === RUN TestValidatePath/dollar_injection
- === RUN TestValidatePath/ampersand_injection
- === RUN TestValidatePath/newline_injection
- === RUN TestValidatePath/space_in_path
- === RUN TestValidatePath/null_byte_injection
- === RUN TestValidatePath/empty_path
- === RUN TestValidatePath/single_dot
- --- PASS: TestValidatePath (0.00s)
- --- PASS: TestValidatePath/simple_path (0.00s)
- --- PASS: TestValidatePath/path_with_dots_in_name (0.00s)
- --- PASS: TestValidatePath/path_with_hyphens (0.00s)
- --- PASS: TestValidatePath/path_with_underscores (0.00s)
- --- PASS: TestValidatePath/nested_path (0.00s)
- --- PASS: TestValidatePath/path_traversal_with_double_dots (0.00s)
- --- PASS: TestValidatePath/path_traversal_in_middle (0.00s)
- --- PASS: TestValidatePath/path_traversal_at_end (0.00s)
- --- PASS: TestValidatePath/encoded_path_traversal (0.00s)
- --- PASS: TestValidatePath/absolute_path (0.00s)
- --- PASS: TestValidatePath/absolute_path_with_valid_chars (0.00s)
- --- PASS: TestValidatePath/semicolon_injection (0.00s)
- --- PASS: TestValidatePath/pipe_injection (0.00s)
- --- PASS: TestValidatePath/backtick_injection (0.00s)
- --- PASS: TestValidatePath/dollar_injection (0.00s)
- --- PASS: TestValidatePath/ampersand_injection (0.00s)
- --- PASS: TestValidatePath/newline_injection (0.00s)
- --- PASS: TestValidatePath/space_in_path (0.00s)
- --- PASS: TestValidatePath/null_byte_injection (0.00s)
- --- PASS: TestValidatePath/empty_path (0.00s)
- --- PASS: TestValidatePath/single_dot (0.00s)
- === RUN TestPassProvider_GetSecret_PathValidation
- === RUN TestPassProvider_GetSecret_PathValidation/valid_path_rejected_due_to_pass_not_installed
- === RUN TestPassProvider_GetSecret_PathValidation/path_traversal_rejected_before_command_execution
- <U+001B>[90m2026-10-22T08:24:00Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mrejected invalid pass path<U+001B>[0m <U+001B>[36merror=<U+001B>[0m<U+001B>[31m<U+001B>[1m"path traversal not allowed"<U+001B>[0m<U+001B>[0m <U+001B>[36madapter=<U+001B>[0msecrets <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mpath=<U+001B>[0m../../../etc/passwd <U+001B>[36mprovider=<U+001B>[0mpass
- === RUN TestPassProvider_GetSecret_PathValidation/command_injection_rejected_before_command_execution
- <U+001B>[90m2026-10-22T08:24:00Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mrejected invalid pass path<U+001B>[0m <U+001B>[36merror=<U+001B>[0m<U+001B>[31m<U+001B>[1m"invalid path: must contain only alphanumeric characters, /, _, ., -"<U+001B>[0m<U+001B>[0m <U+001B>[36madapter=<U+001B>[0msecrets <U+001B>[36mlayer=<U+001B>[0madapter <U+001B>[36mpath=<U+001B>[0msecret;whoami <U+001B>[36mprovider=<U+001B>[0mpass
- --- PASS: TestPassProvider_GetSecret_PathValidation (0.00s)
- --- PASS: TestPassProvider_GetSecret_PathValidation/valid_path_rejected_due_to_pass_not_installed (0.00s)
- --- PASS: TestPassProvider_GetSecret_PathValidation/path_traversal_rejected_before_command_execution (0.00s)
- --- PASS: TestPassProvider_GetSecret_PathValidation/command_injection_rejected_before_command_execution (0.00s)
- === RUN TestPublicTLSResolverPrefersPass
- --- PASS: TestPublicTLSResolverPrefersPass (0.00s)
- === RUN TestPublicTLSResolverFallsBackToTokenFile
- --- PASS: TestPublicTLSResolverFallsBackToTokenFile (0.00s)
- === RUN TestPublicTLSResolverFallsBackToEnv
- --- PASS: TestPublicTLSResolverFallsBackToEnv (0.00s)
- === RUN TestPublicTLSResolverNoToken
- --- PASS: TestPublicTLSResolverNoToken (0.00s)
- === RUN TestPublicTLSResolverPassErrorWithoutFallback
- --- PASS: TestPublicTLSResolverPassErrorWithoutFallback (0.00s)
- === RUN TestPublicTLSResolverPassErrorWithEnvFallback
- --- PASS: TestPublicTLSResolverPassErrorWithEnvFallback (0.00s)
- === RUN TestPublicTLSResolverTokenFileErrorWithoutFallback
- --- PASS: TestPublicTLSResolverTokenFileErrorWithoutFallback (0.00s)
- === RUN TestPublicTLSResolverTokenFileErrorWithEnvFallback
- --- PASS: TestPublicTLSResolverTokenFileErrorWithEnvFallback (0.00s)
- === RUN TestPublicTLSResolverEmptyPassValueFallback
- --- PASS: TestPublicTLSResolverEmptyPassValueFallback (0.00s)
- === RUN TestConvertToSopsExtractPath
- === RUN TestConvertToSopsExtractPath/empty_string
- === RUN TestConvertToSopsExtractPath/single_key
- === RUN TestConvertToSopsExtractPath/two_level_nested
- === RUN TestConvertToSopsExtractPath/three_level_nested
- === RUN TestConvertToSopsExtractPath/key_with_underscores
- === RUN TestConvertToSopsExtractPath/key_with_hyphens
- === RUN TestConvertToSopsExtractPath/array_index_only
- === RUN TestConvertToSopsExtractPath/key_with_array_index
- === RUN TestConvertToSopsExtractPath/nested_key_with_array_index
- === RUN TestConvertToSopsExtractPath/nested_key_with_array_then_key
- === RUN TestConvertToSopsExtractPath/multiple_array_indices
- === RUN TestConvertToSopsExtractPath/deeply_nested_with_array
- --- PASS: TestConvertToSopsExtractPath (0.00s)
- --- PASS: TestConvertToSopsExtractPath/empty_string (0.00s)
- --- PASS: TestConvertToSopsExtractPath/single_key (0.00s)
- --- PASS: TestConvertToSopsExtractPath/two_level_nested (0.00s)
- --- PASS: TestConvertToSopsExtractPath/three_level_nested (0.00s)
- --- PASS: TestConvertToSopsExtractPath/key_with_underscores (0.00s)
- --- PASS: TestConvertToSopsExtractPath/key_with_hyphens (0.00s)
- --- PASS: TestConvertToSopsExtractPath/array_index_only (0.00s)
- --- PASS: TestConvertToSopsExtractPath/key_with_array_index (0.00s)
- --- PASS: TestConvertToSopsExtractPath/nested_key_with_array_index (0.00s)
- --- PASS: TestConvertToSopsExtractPath/nested_key_with_array_then_key (0.00s)
- --- PASS: TestConvertToSopsExtractPath/multiple_array_indices (0.00s)
- --- PASS: TestConvertToSopsExtractPath/deeply_nested_with_array (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/secrets 1.023s
- === RUN TestRecordBackupRun_CountsResultAndTracksLastSuccess
- --- PASS: TestRecordBackupRun_CountsResultAndTracksLastSuccess (0.00s)
- === RUN TestObserveStoredBackup_KeepsTheNewestSuccess
- --- PASS: TestObserveStoredBackup_KeepsTheNewestSuccess (0.00s)
- === RUN TestRetainBackupTargets_ForgetsUndeclaredTargetsOfThatKindOnly
- --- PASS: TestRetainBackupTargets_ForgetsUndeclaredTargetsOfThatKindOnly (0.00s)
- === RUN TestRetainBackupTargets_KeepsSuccessRecordedAfterTheSnapshot
- --- PASS: TestRetainBackupTargets_KeepsSuccessRecordedAfterTheSnapshot (0.00s)
- === RUN TestObserveBackupNextRun
- --- PASS: TestObserveBackupNextRun (0.00s)
- === RUN TestLogExporter_ExportsPerSourceIdentity
- --- PASS: TestLogExporter_ExportsPerSourceIdentity (0.02s)
- === RUN TestLogExporter_DropsAfterShutdown
- --- PASS: TestLogExporter_DropsAfterShutdown (0.00s)
- === RUN TestObserveManagedContainers
- --- PASS: TestObserveManagedContainers (0.00s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/telemetry 1.051s
- === RUN TestParsePassLsOutput
- === RUN TestParsePassLsOutput/flat_entries_only
- === RUN TestParsePassLsOutput/nested_entries_with_slash_in_subject
- === RUN TestParsePassLsOutput/deeply_nested_entries
- === RUN TestParsePassLsOutput/mixed_flat_and_nested
- === RUN TestParsePassLsOutput/empty_output_(no_entries)
- === RUN TestParsePassLsOutput/ascii_tree_decoration_variant
- --- PASS: TestParsePassLsOutput (0.00s)
- --- PASS: TestParsePassLsOutput/flat_entries_only (0.00s)
- --- PASS: TestParsePassLsOutput/nested_entries_with_slash_in_subject (0.00s)
- --- PASS: TestParsePassLsOutput/deeply_nested_entries (0.00s)
- --- PASS: TestParsePassLsOutput/mixed_flat_and_nested (0.00s)
- --- PASS: TestParsePassLsOutput/empty_output_(no_entries) (0.00s)
- --- PASS: TestParsePassLsOutput/ascii_tree_decoration_variant (0.00s)
- === RUN TestPassStore_GetToken_CacheHit
- --- PASS: TestPassStore_GetToken_CacheHit (0.00s)
- === RUN TestPassStore_GetToken_CacheMiss_ReturnsNotFound
- --- PASS: TestPassStore_GetToken_CacheMiss_ReturnsNotFound (0.00s)
- === RUN TestPassStore_IsRevoked_CacheHit_Revoked
- --- PASS: TestPassStore_IsRevoked_CacheHit_Revoked (0.00s)
- === RUN TestPassStore_IsRevoked_CacheHit_NotRevoked
- --- PASS: TestPassStore_IsRevoked_CacheHit_NotRevoked (0.00s)
- === RUN TestPassStore_CacheUpdate_OnSave
- --- PASS: TestPassStore_CacheUpdate_OnSave (0.00s)
- === RUN TestPassStore_CacheClear_OnDelete
- --- PASS: TestPassStore_CacheClear_OnDelete (0.00s)
- === RUN TestPassStore_GetToken_ConcurrentAccess
- --- PASS: TestPassStore_GetToken_ConcurrentAccess (0.00s)
- === RUN TestPassStore_IsRevoked_ConcurrentAccess
- --- PASS: TestPassStore_IsRevoked_ConcurrentAccess (0.00s)
- === RUN TestPassStore_RevokeUpdatesCache
- --- PASS: TestPassStore_RevokeUpdatesCache (0.00s)
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/path_traversal_with_../
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/path_traversal_with_..\
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_semicolon
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_pipe
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_ampersand
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_backtick
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_dollar_sign
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/newline_character
- === RUN TestPassStore_SaveToken_RejectsInvalidSubject/null_byte
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/path_traversal_with_../ (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/path_traversal_with_..\ (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_semicolon (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_pipe (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_ampersand (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_backtick (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/shell_metacharacter_dollar_sign (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/newline_character (0.00s)
- --- PASS: TestPassStore_SaveToken_RejectsInvalidSubject/null_byte (0.00s)
- === RUN TestPassStore_SaveToken_AcceptsValidSubject
- === RUN TestPassStore_SaveToken_AcceptsValidSubject/simple_username
- === RUN TestPassStore_SaveToken_AcceptsValidSubject/username_with_dots
- === RUN TestPassStore_SaveToken_AcceptsValidSubject/username_with_hyphens
- === RUN TestPassStore_SaveToken_AcceptsValidSubject/username_with_underscores
- === RUN TestPassStore_SaveToken_AcceptsValidSubject/email-like
- === RUN TestPassStore_SaveToken_AcceptsValidSubject/path-like_but_safe
- --- PASS: TestPassStore_SaveToken_AcceptsValidSubject (0.00s)
- --- PASS: TestPassStore_SaveToken_AcceptsValidSubject/simple_username (0.00s)
- --- PASS: TestPassStore_SaveToken_AcceptsValidSubject/username_with_dots (0.00s)
- --- PASS: TestPassStore_SaveToken_AcceptsValidSubject/username_with_hyphens (0.00s)
- --- PASS: TestPassStore_SaveToken_AcceptsValidSubject/username_with_underscores (0.00s)
- --- PASS: TestPassStore_SaveToken_AcceptsValidSubject/email-like (0.00s)
- --- PASS: TestPassStore_SaveToken_AcceptsValidSubject/path-like_but_safe (0.00s)
- === RUN TestPassStore_GetToken_RejectsInvalidSubject
- === RUN TestPassStore_GetToken_RejectsInvalidSubject/../../../etc/passwd
- === RUN TestPassStore_GetToken_RejectsInvalidSubject/user;rm_-rf_/
- === RUN TestPassStore_GetToken_RejectsInvalidSubject/user|cat
- === RUN TestPassStore_GetToken_RejectsInvalidSubject/user_newline
- --- PASS: TestPassStore_GetToken_RejectsInvalidSubject (0.00s)
- --- PASS: TestPassStore_GetToken_RejectsInvalidSubject/../../../etc/passwd (0.00s)
- --- PASS: TestPassStore_GetToken_RejectsInvalidSubject/user;rm_-rf_/ (0.00s)
- --- PASS: TestPassStore_GetToken_RejectsInvalidSubject/user|cat (0.00s)
- --- PASS: TestPassStore_GetToken_RejectsInvalidSubject/user_newline (0.00s)
- === RUN TestPassStore_DeleteToken_RejectsInvalidSubject
- === RUN TestPassStore_DeleteToken_RejectsInvalidSubject/../../../etc/passwd
- === RUN TestPassStore_DeleteToken_RejectsInvalidSubject/user;rm_-rf_/
- === RUN TestPassStore_DeleteToken_RejectsInvalidSubject/user|cat
- --- PASS: TestPassStore_DeleteToken_RejectsInvalidSubject (0.00s)
- --- PASS: TestPassStore_DeleteToken_RejectsInvalidSubject/../../../etc/passwd (0.00s)
- --- PASS: TestPassStore_DeleteToken_RejectsInvalidSubject/user;rm_-rf_/ (0.00s)
- --- PASS: TestPassStore_DeleteToken_RejectsInvalidSubject/user|cat (0.00s)
- === RUN TestUnsafeStoreRevokeConcurrentNoLoss
- --- PASS: TestUnsafeStoreRevokeConcurrentNoLoss (0.01s)
- PASS
- ok github.com/bnema/gordon/internal/adapters/out/tokenstore 1.031s
- === RUN TestLoadConfig_ACMEDefaults
- --- PASS: TestLoadConfig_ACMEDefaults (0.00s)
- === RUN TestBuildAppCapabilityPolicies_ValidConfig
- --- PASS: TestBuildAppCapabilityPolicies_ValidConfig (0.00s)
- === RUN TestBuildAppCapabilityPolicies_Invalid
- === RUN TestBuildAppCapabilityPolicies_Invalid/empty_add
- === RUN TestBuildAppCapabilityPolicies_Invalid/ALL
- === RUN TestBuildAppCapabilityPolicies_Invalid/SYS_ADMIN
- === RUN TestBuildAppCapabilityPolicies_Invalid/duplicate
- === RUN TestBuildAppCapabilityPolicies_Invalid/empty_apps
- === RUN TestBuildAppCapabilityPolicies_Invalid/empty_services
- --- PASS: TestBuildAppCapabilityPolicies_Invalid (0.00s)
- --- PASS: TestBuildAppCapabilityPolicies_Invalid/empty_add (0.00s)
- --- PASS: TestBuildAppCapabilityPolicies_Invalid/ALL (0.00s)
- --- PASS: TestBuildAppCapabilityPolicies_Invalid/SYS_ADMIN (0.00s)
- --- PASS: TestBuildAppCapabilityPolicies_Invalid/duplicate (0.00s)
- --- PASS: TestBuildAppCapabilityPolicies_Invalid/empty_apps (0.00s)
- --- PASS: TestBuildAppCapabilityPolicies_Invalid/empty_services (0.00s)
- === RUN TestValidateAppCapabilityKeys_UnknownKey
- --- PASS: TestValidateAppCapabilityKeys_UnknownKey (0.00s)
- === RUN TestValidateAppPolicies_IncludesCapabilities
- --- PASS: TestValidateAppPolicies_IncludesCapabilities (0.00s)
- === RUN TestBuildAppCapabilityPolicies_CopiesSlicesAndDefaultsEmpty
- --- PASS: TestBuildAppCapabilityPolicies_CopiesSlicesAndDefaultsEmpty (0.00s)
- === RUN TestAppDeployHandler_RequestCancellationDoesNotAbortExecution
- --- PASS: TestAppDeployHandler_RequestCancellationDoesNotAbortExecution (0.05s)
- === RUN TestBuildAppDevicePolicies_ValidConfigUnmarshal
- --- PASS: TestBuildAppDevicePolicies_ValidConfigUnmarshal (0.00s)
- === RUN TestBuildAppDevicePolicies_Invalid
- === RUN TestBuildAppDevicePolicies_Invalid/empty_cdi
- === RUN TestBuildAppDevicePolicies_Invalid/raw_path
- === RUN TestBuildAppDevicePolicies_Invalid/aggregate
- === RUN TestBuildAppDevicePolicies_Invalid/empty_allowed_apps
- === RUN TestBuildAppDevicePolicies_Invalid/empty_allowed_services
- === RUN TestBuildAppDevicePolicies_Invalid/duplicate_cdi
- --- PASS: TestBuildAppDevicePolicies_Invalid (0.00s)
- --- PASS: TestBuildAppDevicePolicies_Invalid/empty_cdi (0.00s)
- --- PASS: TestBuildAppDevicePolicies_Invalid/raw_path (0.00s)
- --- PASS: TestBuildAppDevicePolicies_Invalid/aggregate (0.00s)
- --- PASS: TestBuildAppDevicePolicies_Invalid/empty_allowed_apps (0.00s)
- --- PASS: TestBuildAppDevicePolicies_Invalid/empty_allowed_services (0.00s)
- --- PASS: TestBuildAppDevicePolicies_Invalid/duplicate_cdi (0.00s)
- === RUN TestValidateAppDeviceKeys_UnknownKey
- --- PASS: TestValidateAppDeviceKeys_UnknownKey (0.00s)
- === RUN TestValidateAppDeviceKeys_Valid
- --- PASS: TestValidateAppDeviceKeys_Valid (0.00s)
- === RUN TestBuildAppDevicePolicies_CopiesSlices
- --- PASS: TestBuildAppDevicePolicies_CopiesSlices (0.00s)
- === RUN TestConfig_AppDevicesDefaultsEmpty
- --- PASS: TestConfig_AppDevicesDefaultsEmpty (0.00s)
- === RUN TestAppTrafficPublisher_WithdrawServiceIsFailClosedInStateAndIndex
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- --- PASS: TestAppTrafficPublisher_WithdrawServiceIsFailClosedInStateAndIndex (0.00s)
- === RUN TestAppTrafficPublisher_WithdrawServiceSurfacesStateFailure
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- --- PASS: TestAppTrafficPublisher_WithdrawServiceSurfacesStateFailure (0.00s)
- === RUN TestAppTrafficPublisher_WithdrawUnknownServiceIsANoop
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m0
- --- PASS: TestAppTrafficPublisher_WithdrawUnknownServiceIsANoop (0.00s)
- === RUN TestAppTrafficPublisher_RebuildTrafficReprojectsVerifiedState
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- --- PASS: TestAppTrafficPublisher_RebuildTrafficReprojectsVerifiedState (0.00s)
- === RUN TestAppTrafficPublisher_SerializesConcurrentPublication
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- --- PASS: TestAppTrafficPublisher_SerializesConcurrentPublication (0.01s)
- === RUN TestAppTrafficPublisher_WithdrawalIsIdempotent
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- --- PASS: TestAppTrafficPublisher_WithdrawalIsIdempotent (0.00s)
- === RUN TestAppMonitor_RunsOnePassPerTick
- --- PASS: TestAppMonitor_RunsOnePassPerTick (0.00s)
- === RUN TestAppMonitor_DoesNotOverlapPasses
- --- PASS: TestAppMonitor_DoesNotOverlapPasses (0.00s)
- === RUN TestAppMonitor_ReconciliationErrorDoesNotStopTheLoop
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mapp reconciliation pass failed<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
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[33mWRN<U+001B>[0m <U+001B>[1mapp reconciliation pass failed<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: TestAppMonitor_ReconciliationErrorDoesNotStopTheLoop (0.00s)
- === RUN TestAppMonitor_StartIsIdempotent
- --- PASS: TestAppMonitor_StartIsIdempotent (0.00s)
- === RUN TestAppMonitor_StopCancelsAndJoins
- --- PASS: TestAppMonitor_StopCancelsAndJoins (0.03s)
- === RUN TestAppMonitor_NilReconcilerNeverStarts
- --- PASS: TestAppMonitor_NilReconcilerNeverStarts (0.00s)
- === RUN TestAppTrafficPublisher_RebuildSkipsStoppedApps
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m1
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m0
- --- PASS: TestAppTrafficPublisher_RebuildSkipsStoppedApps (0.00s)
- === RUN TestAppTrafficPublisher_AdmissionHonorsContextCancellation
- <U+001B>[90m2026-10-22T08:24:06Z<U+001B>[0m <U+001B>[32mINF<U+001B>[0m <U+001B>[1mapptraffic: host index rebuilt<U+001B>[0m <U+001B>[36mhosts=<U+001B>[0m0
- --- PASS: TestAppTrafficPublisher_AdmissionHonorsContextCancellation (0.00s)
- === RUN TestBuildAppMountPolicies_ValidConfigUnmarshal
- --- PASS: TestBuildAppMountPolicies_ValidConfigUnmarshal (0.00s)
- === RUN TestBuildAppMountPolicies_Invalid
- === RUN TestBuildAppMountPolicies_Invalid/empty_source
- === RUN TestBuildAppMountPolicies_Invalid/relative_source
- === RUN TestBuildAppMountPolicies_Invalid/empty_allowed_apps
- === RUN TestBuildAppMountPolicies_Invalid/empty_allowed_services
- === RUN TestBuildAppMountPolicies_Invalid/unclean_root
- --- PASS: TestBuildAppMountPolicies_Invalid (0.00s)
- --- PASS: TestBuildAppMountPolicies_Invalid/empty_source (0.00s)
- --- PASS: TestBuildAppMountPolicies_Invalid/relative_source (0.00s)
- --- PASS: TestBuildAppMountPolicies_Invalid/empty_allowed_apps (0.00s)
- --- PASS: TestBuildAppMountPolicies_Invalid/empty_allowed_services (0.00s)
- --- PASS: TestBuildAppMountPolicies_Invalid/unclean_root (0.00s)