Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
a793cd9
Add design spec for external tool test separation (infra + Terraform)
zentron Aug 5, 2026
405426f
Add implementation plan for external tool test separation (infra + Te…
zentron Aug 5, 2026
e4d09ef
feat: scaffold Calamari.ExternalTools.Tests project with Terraform to…
zentron Aug 5, 2026
fc5508a
feat: implement ToolManifest reader with version range support
zentron Aug 5, 2026
c6907c9
feat: implement ToolResolver with env var override and manifest fallback
zentron Aug 5, 2026
e7bcf2f
feat: implement ToolDownloader with retry, caching, and platform dete…
zentron Aug 5, 2026
bd941ba
feat: add Terraform download strategy
zentron Aug 5, 2026
6fcc679
feat: add ExternalToolFixture base class for tool-dependent tests
zentron Aug 5, 2026
150dbdf
test: add unit coverage for Terraform init command construction and v…
zentron Aug 5, 2026
f166fb5
feat: migrate Terraform integration tests to Calamari.ExternalTools.T…
zentron Aug 5, 2026
337c57f
fix: remove Calamari.AiAgent.Tests entries resurrected by rebase
zentron Aug 5, 2026
3568b15
fix: enforce CALAMARI_TOOL_SKIP_DOWNLOAD gate per design spec
zentron Aug 5, 2026
794f47f
test: add mocked-CLI coverage for ApplyBehaviour and PlanBehaviour
zentron Aug 6, 2026
c7b2072
test: drop TerraformCommandsFixture tests now covered by mocked-CLI t…
zentron Aug 6, 2026
9304316
style: drop redundant explanatory comment in ApplyBehaviourFixture
zentron Aug 6, 2026
064fb56
build: publish Calamari.ExternalTools.Tests and add a nightly test ta…
zentron Aug 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion build/Build.PackageCalamariProjects.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,13 @@ public partial class Build

//its assumed each project has a corresponding test project
var testProjectNames = projectNames.Select(f => $"{f}.Tests");
var allProjectNames = projectNames.Concat(testProjectNames).ToHashSet();

// Calamari.ExternalTools.Tests has no corresponding non-test flavour - it's a standalone
// test project covering tools (Terraform, etc.) that need a real external CLI binary.
// Included here (rather than via the flavour+".Tests" convention above) purely so it
// gets published/zipped for the nightly TestCalamariExternalTools build to consume -
// it is never run as part of this (default) pipeline.
var allProjectNames = projectNames.Concat(testProjectNames).Append("Calamari.ExternalTools.Tests").ToHashSet();

var calamariProjects = Solution.Projects
.Where(project => allProjectNames.Contains(project.Name))
Expand Down
21 changes: 21 additions & 0 deletions build/Build.TestCalamariExternalTools.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using JetBrains.Annotations;

namespace Calamari.Build;

partial class Build
{
[PublicAPI]
Target TestCalamariExternalTools =>
target => target
.Executes(async () =>
{
var dotnetPath = await LocateOrInstallDotNetSdk();

// Runs against a real external CLI tool (e.g. terraform), downloaded or found on PATH -
// not part of the default per-commit pipeline, invoked as its own nightly/on-demand build.
CreateTestRun("CalamariTests/Calamari.ExternalTools.Tests.dll")
.WithDotNetPath(dotnetPath)
.WithFilter("TestCategory=ExternalTool")
.Execute();
});
}
Loading