Skip to content

ci: run full test suite on Windows - #3866

Merged
Sayt-0 merged 18 commits into
mainfrom
ci/windows-all-tests
Aug 3, 2026
Merged

ci: run full test suite on Windows#3866
Sayt-0 merged 18 commits into
mainfrom
ci/windows-all-tests

Conversation

@Sayt-0

@Sayt-0 Sayt-0 commented Jul 29, 2026

Copy link
Copy Markdown
Member

Summary

  • run the full Go test suite natively on windows-latest as a blocking CI gate
  • use the same Task-based test entry point on Windows and Linux
  • fix the Windows-specific product and test issues exposed by the new gate

Why this is useful

The project publishes Windows binaries and contains Windows-specific implementations for file locking, atomic writes, paths, sockets, processes, and executable handling. Cross-compilation proves that these implementations compile, but only a native Windows runner exercises their real filesystem and process semantics.

The initial observational run exposed failures in 36 packages. The fixes in this PR address those failures rather than hiding them behind continue-on-error, including:

  • Windows executable installation and .exe resolution
  • standard LSP file:// URI handling
  • portable HOME, path, shell, PowerShell, file-mode, and symlink behavior
  • deterministic resource cleanup for SQLite databases, listeners, and os.Root handles
  • Windows drag-and-drop path parsing and cassette path normalization
  • Windows-safe content-store filenames

CI design

Area Behavior
Go packages Full suite in one blocking native Windows step
Test entry point task test, matching Linux and loading .env.test
Windows runner setup One checkout, one Go setup, and one Task setup
Binary and Docker E2E Not included in this change
Timeout 30 minutes

Validation

Check Result
Native Windows full suite pass, 13m37s
Linux build and tests pass, 8m07s
Lint and workflow lint pass
Linux amd64 image build pass, 4m37s
Linux arm64 image build pass, 3m39s
License check pass

Latest fully green run: https://github.com/docker/docker-agent/actions/runs/30616302947

The Windows runner reports GOOS=windows, GOARCH=amd64, CGO_ENABLED=1, and CC=gcc.

@Sayt-0
Sayt-0 requested a review from a team as a code owner July 29, 2026 14:57
@aheritier aheritier added area/ci CI/CD workflows and pipeline kind/chore Maintenance, deps, CI, tooling (maps to chore: commit prefix) labels Jul 29, 2026
@Sayt-0
Sayt-0 marked this pull request as draft July 29, 2026 15:02
@Sayt-0
Sayt-0 marked this pull request as ready for review July 30, 2026 15:32
@Sayt-0
Sayt-0 enabled auto-merge July 30, 2026 15:35
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread pkg/content/store.go
Comment thread pkg/paths/paths.go Outdated
@Sayt-0

Sayt-0 commented Jul 31, 2026

Copy link
Copy Markdown
Member Author

@ronan-thibaut-glitch could you try on your computer ?

@aheritier

Copy link
Copy Markdown
Collaborator

🤖 Automated implementer agentthis comment was posted by the implementer bot from Docker Agentic Platform, not by a human developer

Replying to @aheritier's concern in #3866 (comment):

Good catch to flag — but this concern is actually unfounded for a couple of reasons.

pkg/paths/paths.go is not modified by this PR at all. It already called os.UserHomeDir() on main and this PR leaves it untouched.

Go's os.UserHomeDir() on Windows does not use $HOME. On Windows the implementation reads %USERPROFILE% (falling back to HOMEDRIVE + HOMEPATH), which is exactly what was being used before. The Unix-style $HOME lookup only applies on Linux/macOS — so there is no change from USERPROFILE to HOME here.

The new test TestGetHomeDirUsesPlatformNativeHome added by this PR is a regression guard: it deliberately sets HOME and USERPROFILE to different directories and asserts that GetHomeDir() always delegates to os.UserHomeDir(), preserving the platform-native path. Windows users will continue to find their settings under %USERPROFILE%, exactly as before.

@Sayt-0
Sayt-0 merged commit 374a16d into main Aug 3, 2026
14 checks passed
@Sayt-0
Sayt-0 deleted the ci/windows-all-tests branch August 3, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci CI/CD workflows and pipeline kind/chore Maintenance, deps, CI, tooling (maps to chore: commit prefix)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants