Add Documentation/MacTestEnv/ — macOS contributor dev/test environment#2334
Merged
Conversation
… macOS
Bootstraps a working Rdmp.Core.Tests environment on macOS (Apple Silicon
or Intel) using Docker. The DB-backed tests need a real SQL Server
instance; this folder spins one up in a container, creates the four
platform databases the tests expect, and points the test runner at it.
Contents:
README.md Full setup walkthrough + 'Building a Windows binary
from Mac' section (cross-compile recipe + first-run
notes). Pairs with the companion KeywordHelp
line-endings fix on this branch.
docker-compose.yml SQL Server 2022 Developer container, linux/amd64
under Rosetta on Apple Silicon, mssql-data volume
for persistence between sessions.
setup.sh One-shot bootstrap: starts the container, builds
the rdmp CLI, creates TEST_* platform databases,
installs TestDatabases.txt.
teardown.sh Stops the container, restores
Tests.Common/TestDatabases.txt. --purge removes
the data volume too.
run-tests.sh Thin wrapper around 'dotnet test' that adds the
NU1902/NU1903/NU1904 warnings-as-errors workaround
Rdmp.Core.csproj currently needs.
TestDatabases.txt Mac-flavoured config that setup.sh copies into
Tests.Common/; uses localhost,1433 + sa instead of
(localdb)\\MSSQLLocalDB + integrated security.
Folder name matches the PascalCase convention used by sibling docs
(Catalogues, CodeTutorials, DataExtractions, LoadModules, ...).
Status: verified end-to-end on darwin/arm64, .NET SDK 10.0.107,
Docker 28.x. All 102 CohortCreation tests pass in ~3 minutes under
amd64 emulation.
Purely additive — no edits to upstream project files. The
warnings-as-errors workaround sidesteps a project-level NoWarn override
in Rdmp.Core.csproj (see README "Known issues") without touching it.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
11 tasks
JFriel
approved these changes
May 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed Change
A self-contained Docker-based dev/test environment for macOS contributors. Purely additive; no upstream files touched.
Verified end-to-end on
darwin/arm64, .NET SDK 10.0.107, Docker 28.x —Rdmp.Core.Tests --filter "FullyQualifiedName~CohortCreation"returns 102/102 passed in ~3 minutes under amd64 emulation.The README also documents the cross-compile recipe for both the GUI and the CLI, including first-run notes for Windows (SmartScreen, Unblock).
Companion fix
This folder pairs with PR #2330 (
KeywordHelp parser line endings). Without that fix, a binary cross-compiled on macOS via the recipe documented in this folder crashes on first launch on Windows. The two changes are independently mergeable but produce a complete contributor workflow when both land.Reviewer notes
Rdmp.Core/Rdmp.Core.csprojline 20 overrides the inherited<NoWarn>instead of appending to it, which surfacesNU1902;NU1903;NU1904as build errors when any vulnerable transitive package is resolved. The scripts side-step it on the command line (-p:WarningsNotAsErrors='"NU1902;NU1903;NU1904"'). Happy to ship a one-line.csprojfix as a follow-up if preferred.Type of change
Checklist
By opening this PR, I confirm that I have:
origin/develop(a53edfd24).Documentation/MacTestEnv/README.md, ~290 lines: walkthrough, daily commands, Windows cross-compile recipe, credentials, known issues, troubleshooting.