Skip to content

CI: Upload logs step fails because Verify writes attachment file names containing ':' #16638

@radical

Description

@radical

Summary

The Upload logs, and test results step in the Tests / Hosting.Azure workflow fails because Verify writes a snapshot-mismatch attachment whose file name contains a colon (:). actions/upload-artifact rejects the artifact because colons aren't allowed in cross-platform file names.

Failure instance

Error

Error: The path for one of the files in artifact is not valid: /testresults/_runnervmeorf1_2026-04-30_23_03_43.7907827/In/runnervmeorf1/Verify snapshot mismatch: _home_runner_work_aspire_aspire_tests_Aspire.Hosting.Azure.Tests_Snapshots_AzureDeployerTests.DeployAsync_WithFoundryAndAzureContainerApps_CreatesCorrectDependencies.received.txt.bin. Contains the following character:  Colon :

Invalid characters include:  Double quote ", Colon :, Less than <, Greater than >, Vertical bar |, Asterisk *, Question mark ?, Carriage return \r, Line feed \n

The following characters are not allowed in files that are uploaded due to limitations with certain file systems such as NTFS. To maintain file system agnostic behavior, these characters are intentionally not allowed to prevent potential problems with downloads on different file systems.

Root cause

Reproduced locally with a minimal xUnit v3 + Verify project:

  • Verify.XunitV3 31.1.0 produces an MTP attachment with display name Verify snapshot mismatch: <path>.
  • MTP materializes that attachment under testresults/<run>/In/<machine>/ using the display name as a file name, so the colon ends up in the file path.
  • actions/upload-artifact then refuses to upload the directory.

Verify.XunitV3 31.16.2 changed the attachment naming so the path no longer contains a colon, which fixes the failure at the source instead of post-processing the test results directory.

Fix

Bump Verify.XunitV3 from 31.1.0 to 31.16.2 in tests/Directory.Packages.props.

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions