Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
e5763fd
Migrate manifest-handling tasks to TaskEnvironment API
JanProvaznik Feb 2, 2026
96ef4a4
Add path canonicalization and TaskEnvironment tests
JanProvaznik Feb 4, 2026
5d24c3b
Merge branch 'main' into resource-manifests-migration
JanProvaznik Feb 10, 2026
b2876ad
Fix compatibility issues: preserve original paths in error messages a…
JanProvaznik Feb 10, 2026
f6d9071
Address PR review: AbsolutePath types, GetCanonicalForm, remove unuse…
JanProvaznik Feb 10, 2026
6d3a74b
Deduplicate skill file: merge Sin 5+7, unify checklists, trim redunda…
JanProvaznik Feb 10, 2026
86f7785
Remove skill file changes (extracted to separate PR)
JanProvaznik Feb 10, 2026
ccbec40
Merge remote-tracking branch 'origin/main' into resource-manifests-mi…
JanProvaznik Feb 17, 2026
93cbd5e
Fix Constants ambiguity after merge with main
JanProvaznik Feb 17, 2026
d92d315
Remove [MSBuildMultiThreadableTask] from abstract classes (Inherited=…
JanProvaznik Feb 19, 2026
1cd9eb3
Fix CWD dependency in Util.SortItems: use TaskEnvironment for path ca…
JanProvaznik Feb 19, 2026
651ea49
Change CreateFileStream delegate to take AbsolutePath instead of string
JanProvaznik Feb 19, 2026
80bd870
Merge branch 'main' into resource-manifests-migration
JanProvaznik Feb 23, 2026
c8b44ad
Merge branch 'main' into resource-manifests-migration
JanProvaznik Mar 6, 2026
7b75e5a
Merge branch 'main' into resource-manifests-migration
JanProvaznik Apr 28, 2026
a8525b7
fallback behavior
JanProvaznik Apr 28, 2026
c98970d
remove obsolete test setup
JanProvaznik Apr 28, 2026
a8b1981
note the behavior of Manifest.ResolveFiles for consumers
JanProvaznik Apr 28, 2026
a697593
absolutize before resolving
JanProvaznik Apr 28, 2026
d383811
fix test absolutepath handling
JanProvaznik Apr 28, 2026
9795b84
fix test pr comments
JanProvaznik Apr 28, 2026
a2e90df
Merge branch 'main' into resource-manifests-migration
JanProvaznik Apr 28, 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
3 changes: 2 additions & 1 deletion src/Tasks.UnitTests/AddToWin32Manifest_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ public void ManifestPopulationCheck(string? manifestName, bool expectedResult)
{
AddToWin32Manifest task = new AddToWin32Manifest()
{
BuildEngine = new MockEngine(_testOutput)
BuildEngine = new MockEngine(_testOutput),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest()
};

using (TestEnvironment env = TestEnvironment.Create())
Expand Down
14 changes: 13 additions & 1 deletion src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,7 @@ public void Regress188319()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("SR1.resx");
i.SetMetadata("BuildAction", "EmbeddedResource");
i.SetMetadata("DependentUpon", "SR1.strings"); // Normally, this would be a C# file.
Expand Down Expand Up @@ -393,6 +394,7 @@ public void DependentUponConvention_FindsMatch()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName
{
BuildEngine = new MockEngine(_testOutput),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
UseDependentUponConvention = true,
ResourceFiles = new ITaskItem[] { i }
};
Expand Down Expand Up @@ -433,6 +435,7 @@ public void DependentUponConvention_DoesNotApplyToNonResx(bool explicitlySpecify
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName
{
BuildEngine = new MockEngine(_testOutput),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
UseDependentUponConvention = true,
ResourceFiles = new ITaskItem[] { i }
};
Expand Down Expand Up @@ -466,6 +469,7 @@ public void DependentUponConvention_FindsMatchInSubfolder()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName
{
BuildEngine = new MockEngine(_testOutput),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
UseDependentUponConvention = true,
ResourceFiles = new ITaskItem[] { i }
};
Expand Down Expand Up @@ -500,6 +504,7 @@ public void DependentUpon_UseConventionFileDoesNotExist()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName
{
BuildEngine = new MockEngine(_testOutput),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
UseDependentUponConvention = true,
ResourceFiles = new ITaskItem[] { i }
};
Expand Down Expand Up @@ -531,6 +536,7 @@ public void DependentUpon_SpecifyNewFile()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName
{
BuildEngine = new MockEngine(_testOutput),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
UseDependentUponConvention = true,
ResourceFiles = new ITaskItem[] { i }
};
Expand Down Expand Up @@ -565,6 +571,7 @@ public void DependentUponConvention_ConventionDisabledDoesNotReadConventionFile(
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName
{
BuildEngine = new MockEngine(_testOutput),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
UseDependentUponConvention = false,
ResourceFiles = new ITaskItem[] { i }
};
Expand Down Expand Up @@ -601,6 +608,7 @@ public void CulturedResourceFileFindByConvention()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName
{
BuildEngine = new MockEngine(),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
UseDependentUponConvention = true,
ResourceFiles = new ITaskItem[] { i },
};
Expand Down Expand Up @@ -774,7 +782,7 @@ class MyForm
/// <param name="mode">File mode</param>
/// <param name="access">Access type</param>
/// <returns>The Stream</returns>
private Stream CreateFileStream(string path, FileMode mode, FileAccess access)
private Stream CreateFileStream(AbsolutePath path, FileMode mode, FileAccess access)
{
if (String.Equals(path, "SR1.strings", StringComparison.OrdinalIgnoreCase))
Comment thread
JanProvaznik marked this conversation as resolved.
Outdated
{
Expand All @@ -794,6 +802,7 @@ public void ResourceFilesWithManifestResourceNamesContainsAdditionalMetadata()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("strings.resx");

t.ResourceFiles = new ITaskItem[] { i };
Expand All @@ -819,6 +828,7 @@ public void AddLogicalNameForNonResx()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("pic.bmp");
i.SetMetadata("Type", "Non-Resx");

Expand All @@ -844,6 +854,7 @@ public void PreserveLogicalNameForNonResx()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("pic.bmp");
i.SetMetadata("LogicalName", "foo");
i.SetMetadata("Type", "Non-Resx");
Expand All @@ -870,6 +881,7 @@ public void NoLogicalNameAddedForResx()
CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("strings.resx");
i.SetMetadata("Type", "Resx");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,7 @@ public void Regress188319()
CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();

ITaskItem i = new TaskItem("SR1.resx");

Expand Down Expand Up @@ -391,6 +392,7 @@ End Class
CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName
{
BuildEngine = new MockEngine(_testOutput),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
UseDependentUponConvention = true,
ResourceFiles = new ITaskItem[] { i },
};
Expand All @@ -411,7 +413,7 @@ End Class
/// <param name="mode">File mode</param>
/// <param name="access">Access type</param>
/// <returns>The Stream</returns>
private Stream CreateFileStream(string path, FileMode mode, FileAccess access)
private Stream CreateFileStream(AbsolutePath path, FileMode mode, FileAccess access)
{
if (String.Equals(path, "SR1.strings", StringComparison.OrdinalIgnoreCase))
{
Expand Down Expand Up @@ -514,6 +516,7 @@ public void ResourceFilesWithManifestResourceNamesContainsAdditionalMetadata()
CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("strings.resx");

t.ResourceFiles = new ITaskItem[] { i };
Expand All @@ -539,6 +542,7 @@ public void AddLogicalNameForNonResx()
CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("pic.bmp");
i.SetMetadata("Type", "Non-Resx");

Expand All @@ -564,6 +568,7 @@ public void PreserveLogicalNameForNonResx()
CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("pic.bmp");
i.SetMetadata("LogicalName", "foo");
i.SetMetadata("Type", "Non-Resx");
Expand All @@ -590,6 +595,7 @@ public void NoLogicalNameAddedForResx()
CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName();

t.BuildEngine = new MockEngine();
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
ITaskItem i = new TaskItem("strings.resx");
i.SetMetadata("Type", "Resx");

Expand Down
Loading