Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
Prev Previous commit
test coverage saving me from my own refactors
  • Loading branch information
aaronpowell committed Nov 12, 2025
commit 2cfe11479a8ae9fb8e47b17334bc63fbf9d97024
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,13 @@ public static IResourceBuilder<NxAppResource> AddApp(this IResourceBuilder<NxRes
// If the workspace is configured to use a package manager, bring that annotation forward
if (builder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var executionAnnotation))
{
rb.WithCommand(executionAnnotation.ExecutableName)
rb.WithCommand(executionAnnotation.ExecutableName switch
{
"npm" => "npx",
"yarn" => "yarn",
"pnpm" => "pnpx",
_ => executionAnnotation.ExecutableName
})
.WithArgs(context =>
{
context.Args.Insert(0, executionAnnotation.ScriptCommand ?? "nx");
Expand Down Expand Up @@ -122,7 +128,13 @@ public static IResourceBuilder<TurborepoAppResource> AddApp(this IResourceBuilde
// If the workspace is configured to use a package manager, bring that annotation forward
if (builder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var executionAnnotation))
{
rb.WithCommand(executionAnnotation.ExecutableName)
rb.WithCommand(executionAnnotation.ExecutableName switch
{
"npm" => "npx",
"yarn" => "yarn",
"pnpm" => "pnpx",
_ => executionAnnotation.ExecutableName
})
.WithArgs(context =>
{
context.Args.Insert(0, executionAnnotation.ScriptCommand ?? "nx");
Expand Down Expand Up @@ -174,13 +186,7 @@ public static IResourceBuilder<NxResource> WithPackageManagerLaunch(this IResour
}
}

return builder.WithAnnotation(new JavaScriptPackageManagerAnnotation(packageManager switch
{
"npm" => "npx",
"yarn" => "yarn",
"pnpm" => "pnpx",
_ => packageManager
}, runScriptCommand: "nx"));
return builder.WithAnnotation(new JavaScriptPackageManagerAnnotation(packageManager, runScriptCommand: "nx"));
}

/// <summary>
Expand Down Expand Up @@ -217,13 +223,7 @@ public static IResourceBuilder<TurborepoResource> WithPackageManagerLaunch(this
}
}

return builder.WithAnnotation(new JavaScriptPackageManagerAnnotation(packageManager switch
{
"npm" => "npx",
"yarn" => "yarn",
"pnpm" => "pnpx",
_ => packageManager
}, runScriptCommand: "turbo"));
return builder.WithAnnotation(new JavaScriptPackageManagerAnnotation(packageManager, runScriptCommand: "turbo"));
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,16 @@ public async Task Nx_WithPackageManagerLaunch_InfersFromInstallerWhenNotProvided
// Verify the created NxAppResource command and args
var nxAppResource = Assert.Single(appModel.Resources.OfType<NxAppResource>());
// For the inferred package manager, AddApp uses the corresponding command
Assert.True(nxAppResource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var appPm));
Assert.Equal(packageManager, appPm.ExecutableName);
Assert.Equal("nx", nxAppResource.Command);
Assert.Equal(packageManager switch
{
"npm" => "npx",
"yarn" => "yarn",
"pnpm" => "pnpx",
_ => packageManager
}, nxAppResource.Command);
var nxAppArgs = await nxAppResource.GetArgumentValuesAsync();
Assert.Collection(nxAppArgs,
arg => Assert.Equal("nx", arg),
arg => Assert.Equal("serve", arg),
arg => Assert.Equal("app1", arg));
}
Expand Down Expand Up @@ -126,11 +131,10 @@ public async Task Nx_WithPackageManagerLaunch_WithPnpmAndYarn()
Assert.Equal("pnpm", pmPnpm.ExecutableName);

var nxPnpmApp = appModel.Resources.OfType<NxAppResource>().Single(r => r.Name == "app1-pnpm");
Assert.True(nxPnpmApp.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var appPmPnpm));
Assert.Equal("pnpm", appPmPnpm.ExecutableName);
Assert.Equal("nx", nxPnpmApp.Command);
Assert.Equal("pnpx", nxPnpmApp.Command);
var pnpmArgs = await nxPnpmApp.GetArgumentValuesAsync();
Assert.Collection(pnpmArgs,
arg => Assert.Equal("nx", arg),
arg => Assert.Equal("serve", arg),
arg => Assert.Equal("app1-pnpm", arg));

Expand All @@ -139,11 +143,10 @@ public async Task Nx_WithPackageManagerLaunch_WithPnpmAndYarn()
Assert.Equal("yarn", pmYarn.ExecutableName);

var nxYarnApp = appModel.Resources.OfType<NxAppResource>().Single(r => r.Name == "app1-yarn");
Assert.True(nxYarnApp.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var appPmYarn));
Assert.Equal("yarn", appPmYarn.ExecutableName);
Assert.Equal("nx", nxYarnApp.Command);
Assert.Equal("yarn", nxYarnApp.Command);
var yarnArgs = await nxYarnApp.GetArgumentValuesAsync();
Assert.Collection(yarnArgs,
arg => Assert.Equal("nx", arg),
arg => Assert.Equal("serve", arg),
arg => Assert.Equal("app1-yarn", arg));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,20 @@ public async Task Turborepo_WithPackageManagerLaunch_InfersFromInstallerWhenNotP
// Verify Turborepo app command and args
var turboApp = Assert.Single(appModel.Resources.OfType<TurborepoAppResource>());
// For the inferred package manager, AddApp uses the corresponding command
Assert.True(turboApp.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var tapm));
Assert.Equal(packageManager, tapm.ExecutableName);
Assert.Equal("turbo", tapm.ScriptCommand);
Assert.Equal(packageManager switch
{
"npm" => "npx",
"yarn" => "yarn",
"pnpm" => "pnpx",
_ => packageManager
}, turboApp.Command);
var turboArgs = await turboApp.GetArgumentValuesAsync();
Assert.Collection(turboArgs,
arg => Assert.Equal("run", arg),
arg => Assert.Equal("dev", arg),
arg => Assert.Equal("--filter", arg),
arg => Assert.Equal("app1", arg));
arg => Assert.Equal("turbo", arg),
arg => Assert.Equal("run", arg),
arg => Assert.Equal("dev", arg),
arg => Assert.Equal("--filter", arg),
arg => Assert.Equal("app1", arg));
}

[Fact]
Expand All @@ -117,11 +122,10 @@ public async Task Turborepo_WithPackageManagerLaunch_WithPnpmAndYarn()
Assert.Equal("pnpm", tpmPnpm.ExecutableName);

var turboPnpmApp = appModel.Resources.OfType<TurborepoAppResource>().Single(r => r.Name == "app1-pnpm");
Assert.True(turboPnpmApp.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var tapmPnpm));
Assert.Equal("pnpm", tapmPnpm.ExecutableName);
Assert.Equal("turbo", tapmPnpm.ScriptCommand);
Assert.Equal("pnpx", turboPnpmApp.Command);
var tpnpmArgs = await turboPnpmApp.GetArgumentValuesAsync();
Assert.Collection(tpnpmArgs,
arg => Assert.Equal("turbo", arg),
arg => Assert.Equal("run", arg),
arg => Assert.Equal("dev", arg),
arg => Assert.Equal("--filter", arg),
Expand All @@ -132,11 +136,10 @@ public async Task Turborepo_WithPackageManagerLaunch_WithPnpmAndYarn()
Assert.Equal("yarn", tpmYarn.ExecutableName);

var turboYarnApp = appModel.Resources.OfType<TurborepoAppResource>().Single(r => r.Name == "app1-yarn");
Assert.True(turboYarnApp.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var tapmYarn));
Assert.Equal("yarn", tapmYarn.ExecutableName);
Assert.Equal("turbo", tapmYarn.ScriptCommand);
Assert.Equal("yarn", turboYarnApp.Command);
var tyarnArgs = await turboYarnApp.GetArgumentValuesAsync();
Assert.Collection(tyarnArgs,
arg => Assert.Equal("turbo", arg),
arg => Assert.Equal("run", arg),
arg => Assert.Equal("dev", arg),
arg => Assert.Equal("--filter", arg),
Expand Down
Loading