Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
b743044
Make RAR as a service use TaskEnvironment. Make OutOfProcRarClient th…
AR-May Mar 12, 2026
f5caaff
Absolutize RAR task inputs. ReferenceTable should use the task enviro…
AR-May Mar 12, 2026
f090cef
Make resolvers use task environemnt.
AR-May Mar 12, 2026
84ed710
Enlighten GetReferenceAssemblyPaths
AR-May Mar 12, 2026
fdd2f52
Fix tests.
AR-May Mar 12, 2026
b669d97
Set default driver to enlightened tasks.
AR-May Mar 13, 2026
c818294
Merge branch 'main' into enlighten-RAR-2
AR-May Apr 15, 2026
6e770db
Fix bug with sdk paths comparer.
AR-May Apr 15, 2026
161d875
Added AbsolutePath overload for SerializeCache.
AR-May Apr 15, 2026
a7da484
Ensure that resolvers absolutize the inputs. Do not do canonicalizati…
AR-May Apr 15, 2026
f6f5292
Disambiguated the cref to SerializeCache(string, TaskLoggingHelper, b…
AR-May Apr 15, 2026
92f997c
Be defensive and absolutize in AssemblyFoldersFromConfig cache and re…
AR-May Apr 15, 2026
c4653dd
Add comment.
AR-May Apr 15, 2026
77ea94b
defensively assign empty arrays as values if null value is passed.
AR-May Apr 16, 2026
0688f80
Removed the redundant _taskEnvironment field
AR-May Apr 16, 2026
5186ee4
Add tests for the AppConfigFile in RAR
AR-May Apr 16, 2026
347d260
Fix RAR test fixture FileExists.
AR-May Apr 16, 2026
1046cbc
Address null-safety concern.
AR-May Apr 16, 2026
26636a1
Deduplicate code in StateFileBase.
AR-May Apr 16, 2026
04583ae
Address review feedback for tests.
AR-May Apr 16, 2026
289e6da
Place inputs absolutization under a changewave. Canonicalize the path…
AR-May Apr 23, 2026
6979b95
Ensure that canonicalization in AssemblyTableInfo does not throw.
AR-May Apr 23, 2026
74ad0ec
Remove unnecessary GetCanonicalForm in SystemState.cs
AR-May Apr 23, 2026
47bb660
Remove path canonization and thus unnecessary cache in the InstalledS…
AR-May Apr 23, 2026
e246639
Refactor IsFrameworkFile functions.
AR-May Apr 23, 2026
5a9d94e
Defensively absolutize paths from registry.
AR-May Apr 23, 2026
627af67
Refactor the helper methods in RAR task
AR-May Apr 23, 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
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public void AssemblyFoldersFromConfigTest()
ResolveAssemblyReference t = new ResolveAssemblyReference
{
BuildEngine = new MockEngine(_output),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
Comment thread
AR-May marked this conversation as resolved.
Assemblies = new ITaskItem[] { new TaskItem("assemblyfromconfig2") },
SearchPaths = new[] { moniker }
};
Expand Down Expand Up @@ -73,6 +74,7 @@ public void AssemblyFoldersFromConfigPlatformSpecificAssemblyFirstTest()
ResolveAssemblyReference t = new ResolveAssemblyReference
{
BuildEngine = new MockEngine(_output),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
Assemblies = new ITaskItem[] { new TaskItem("assemblyfromconfig_common.dll") },
SearchPaths = new[] { moniker },
TargetProcessorArchitecture = "x86"
Expand Down Expand Up @@ -103,6 +105,7 @@ public void AssemblyFoldersFromConfigNormalizeNetFrameworkVersion()
ResolveAssemblyReference t = new ResolveAssemblyReference
{
BuildEngine = new MockEngine(_output),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
Assemblies = new ITaskItem[] { new TaskItem("v5assembly.dll") },
SearchPaths = new[] { moniker },
TargetProcessorArchitecture = "x86"
Expand All @@ -118,6 +121,7 @@ public void AssemblyFoldersFromConfigNormalizeNetFrameworkVersion()
t = new ResolveAssemblyReference
{
BuildEngine = new MockEngine(_output),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
Assemblies = new ITaskItem[] { new TaskItem("v5assembly.dll") },
SearchPaths = new[] { moniker },
TargetProcessorArchitecture = "AMD64"
Expand Down Expand Up @@ -147,6 +151,7 @@ public void AssemblyFoldersFromConfigFileNotFoundTest()
ResolveAssemblyReference t = new ResolveAssemblyReference
{
BuildEngine = new MockEngine(_output),
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
Assemblies = new ITaskItem[] { new TaskItem("assemblyfromconfig_common.dll") },
SearchPaths = new[] { moniker },
TargetProcessorArchitecture = "x86"
Expand Down Expand Up @@ -175,6 +180,7 @@ public void AssemblyFoldersFromConfigFileMalformed()
ResolveAssemblyReference t = new ResolveAssemblyReference
{
BuildEngine = engine,
TaskEnvironment = TaskEnvironmentHelper.CreateForTest(),
Assemblies = new ITaskItem[] { new TaskItem("assemblyfromconfig2") },
SearchPaths = new[] { moniker }
};
Expand Down
8 changes: 8 additions & 0 deletions src/Tasks.UnitTests/AssemblyDependency/FilePrimary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ public void Exists()
ResolveAssemblyReference t = new ResolveAssemblyReference();

t.BuildEngine = engine;
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
t.AssemblyFiles = assemblyFiles;
t.SearchPaths = DefaultPaths;
t.AppConfigFile = appConfigFile;
Expand Down Expand Up @@ -109,6 +110,7 @@ public void BadAppconfigOldVersion()
ResolveAssemblyReference t = new ResolveAssemblyReference();

t.BuildEngine = engine;
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
t.AssemblyFiles = assemblyFiles;
t.SearchPaths = DefaultPaths;
t.AppConfigFile = appConfigFile;
Expand Down Expand Up @@ -160,6 +162,7 @@ public void BadAppconfigNewVersion()
ResolveAssemblyReference t = new ResolveAssemblyReference();

t.BuildEngine = engine;
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
t.AssemblyFiles = assemblyFiles;
t.SearchPaths = DefaultPaths;
t.AppConfigFile = appConfigFile;
Expand Down Expand Up @@ -236,6 +239,7 @@ public void ExistsPromotedDependencyInTheDenyList()
t.InstalledAssemblySubsetTables = new TaskItem[] { new TaskItem(subsetListPath) };

t.BuildEngine = engine;
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
t.Assemblies = assemblyNames;
t.SearchPaths = DefaultPaths;
t.AppConfigFile = appConfigFile;
Expand Down Expand Up @@ -292,6 +296,7 @@ public void ExistsDifferentName()
ResolveAssemblyReference t = new ResolveAssemblyReference();

t.BuildEngine = engine;
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
t.AssemblyFiles = assemblyFiles;
t.SearchPaths = DefaultPaths;
t.AppConfigFile = appConfigFile;
Expand Down Expand Up @@ -343,6 +348,7 @@ public void ExistsOldVersionRange()
ResolveAssemblyReference t = new ResolveAssemblyReference();

t.BuildEngine = engine;
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
t.AssemblyFiles = assemblyFiles;
t.SearchPaths = DefaultPaths;
t.AppConfigFile = appConfigFile;
Expand Down Expand Up @@ -394,6 +400,7 @@ public void HighVersionDoesntExist()
ResolveAssemblyReference t = new ResolveAssemblyReference();

t.BuildEngine = engine;
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
t.AssemblyFiles = assemblyFiles;
t.SearchPaths = DefaultPaths;
t.AppConfigFile = appConfigFile;
Expand Down Expand Up @@ -443,6 +450,7 @@ public void LowVersionDoesntExist()
ResolveAssemblyReference t = new ResolveAssemblyReference();

t.BuildEngine = engine;
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
t.AssemblyFiles = assemblyFiles;
t.SearchPaths = DefaultPaths;
t.AppConfigFile = appConfigFile;
Expand Down
35 changes: 22 additions & 13 deletions src/Tasks.UnitTests/AssemblyDependency/GlobalAssemblyCacheTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public void VerifySimpleNamev2057020()
AssemblyNameExtension fusionName = new AssemblyNameExtension("System");


string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("2.0.57027"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, false);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("2.0.57027"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, false, TaskEnvironmentHelper.CreateForTest());
Assert.NotNull(path);
Assert.Equal(system2Path, path);
}
Expand All @@ -81,7 +81,7 @@ public void VerifySimpleNamev2057020SpecificVersion()
AssemblyNameExtension fusionName = new AssemblyNameExtension("System");


string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("2.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("2.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true, TaskEnvironmentHelper.CreateForTest());
Assert.NotNull(path);
Assert.Equal(system4Path, path);
}
Expand All @@ -104,7 +104,7 @@ public void VerifyFusionNamev2057020SpecificVersion()
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, Version=2.0.0.0");


string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("2.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("2.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true, TaskEnvironmentHelper.CreateForTest());
Assert.NotNull(path);
Assert.Equal(system2Path, path);
}
Expand All @@ -127,7 +127,7 @@ public void VerifySimpleNamev40()
AssemblyNameExtension fusionName = new AssemblyNameExtension("System");


string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("4.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, false);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("4.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, false, TaskEnvironmentHelper.CreateForTest());
Assert.NotNull(path);
Assert.Equal(system4Path, path);
}
Expand All @@ -151,7 +151,7 @@ public void VerifySimpleNamev40SpecificVersion()
AssemblyNameExtension fusionName = new AssemblyNameExtension("System");


string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("4.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("4.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true, TaskEnvironmentHelper.CreateForTest());
Assert.NotNull(path);
Assert.Equal(system4Path, path);
}
Expand All @@ -172,7 +172,7 @@ public void VerifyFusionNamev40SpecificVersion()
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, Version=4.0.0.0");


string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("4.0.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, _runtimeVersion, new Version("4.0.0.0"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true, TaskEnvironmentHelper.CreateForTest());
Assert.NotNull(path);
Assert.Equal(system4Path, path);
}
Expand All @@ -186,7 +186,7 @@ public void VerifyEmptyPublicKeyspecificVersion()
Assert.Throws<FileLoadException>(() =>
{
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, PublicKeyToken=");
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true, TaskEnvironmentHelper.CreateForTest());
});
}

Expand All @@ -197,7 +197,7 @@ public void VerifyEmptyPublicKeyspecificVersion()
public void VerifyNullPublicKey()
{
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, PublicKeyToken=null");
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, false);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, false, TaskEnvironmentHelper.CreateForTest());
Assert.Null(path);
}

Expand All @@ -208,7 +208,7 @@ public void VerifyNullPublicKey()
public void VerifyNullPublicKeyspecificVersion()
{
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, PublicKeyToken=null");
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.None, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, _gacEnumerator, true, TaskEnvironmentHelper.CreateForTest());
Assert.Null(path);
}

Expand All @@ -221,7 +221,7 @@ public void VerifyNullPublicKeyspecificVersion()
public void VerifyProcessorArchitectureDoesNotCrash()
{
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, PublicKeyToken=b77a5c561934e089, ProcessorArchitecture=MSIL");
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.MSIL, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, null /* use the real gac enumerator*/, false);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.MSIL, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, null /* use the real gac enumerator*/, false, TaskEnvironmentHelper.CreateForTest());
Assert.Null(path);
}

Expand All @@ -233,7 +233,7 @@ public void VerifyProcessorArchitectureDoesNotCrash()
public void VerifyProcessorArchitectureDoesNotCrashSpecificVersion()
{
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, PublicKeyToken=b77a5c561934e089, ProcessorArchitecture=MSIL");
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.MSIL, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, null /* use the real gac enumerator*/, true);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.MSIL, getRuntimeVersion, new Version("2.0.50727"), false, new FileExists(MockFileExists), _getPathFromFusionName, null /* use the real gac enumerator*/, true, TaskEnvironmentHelper.CreateForTest());
Assert.Null(path);
}

Expand All @@ -245,7 +245,7 @@ public void VerifyProcessorArchitectureDoesNotCrashSpecificVersion()
public void VerifyProcessorArchitectureDoesNotCrashFullFusionName()
{
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, PublicKeyToken=b77a5c561934e089, ProcessorArchitecture=MSIL");
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.MSIL, getRuntimeVersion, new Version("2.0.50727"), true, new FileExists(MockFileExists), _getPathFromFusionName, null /* use the real gac enumerator*/, false);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.MSIL, getRuntimeVersion, new Version("2.0.50727"), true, new FileExists(MockFileExists), _getPathFromFusionName, null /* use the real gac enumerator*/, false, TaskEnvironmentHelper.CreateForTest());
Assert.Null(path);
}

Expand All @@ -257,7 +257,7 @@ public void VerifyProcessorArchitectureDoesNotCrashFullFusionName()
public void VerifyProcessorArchitectureDoesNotCrashFullFusionNameSpecificVersion()
{
AssemblyNameExtension fusionName = new AssemblyNameExtension("System, PublicKeyToken=b77a5c561934e089, ProcessorArchitecture=MSIL");
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.MSIL, getRuntimeVersion, new Version("2.0.50727"), true, new FileExists(MockFileExists), _getPathFromFusionName, null /* use the real gac enumerator*/, true);
string path = GlobalAssemblyCache.GetLocation(fusionName, SystemProcessorArchitecture.MSIL, getRuntimeVersion, new Version("2.0.50727"), true, new FileExists(MockFileExists), _getPathFromFusionName, null /* use the real gac enumerator*/, true, TaskEnvironmentHelper.CreateForTest());
Assert.Null(path);
}

Expand All @@ -271,6 +271,7 @@ public void SystemRuntimeDepends_No_Build()
ResolveAssemblyReference t = new ResolveAssemblyReference();

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

t.Assemblies = new ITaskItem[]
{
Expand Down Expand Up @@ -340,6 +341,7 @@ public void SystemRuntimeDepends_Yes()
ResolveAssemblyReference t = new ResolveAssemblyReference();

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

t.Assemblies = new ITaskItem[]
{
Expand Down Expand Up @@ -407,6 +409,7 @@ public void SystemRuntimeDepends_Yes_Indirect()
ResolveAssemblyReference t = new ResolveAssemblyReference();

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

t.Assemblies = new ITaskItem[]
{
Expand Down Expand Up @@ -473,6 +476,7 @@ public void SystemRuntimeDepends_Yes_Indirect_ExternallyResolved()
ResolveAssemblyReference t = new ResolveAssemblyReference();

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

t.Assemblies = new ITaskItem[]
{
Expand Down Expand Up @@ -537,6 +541,7 @@ public void NETStandardDepends_Yes()
ResolveAssemblyReference t = new ResolveAssemblyReference();

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

t.Assemblies = new ITaskItem[]
{
Expand Down Expand Up @@ -601,6 +606,7 @@ public void NETStandardDepends_Yes_Indirect()
ResolveAssemblyReference t = new ResolveAssemblyReference();

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

t.Assemblies = new ITaskItem[]
{
Expand Down Expand Up @@ -666,6 +672,7 @@ public void NETStandardDepends_Yes_Indirect_ExternallyResolved()
ResolveAssemblyReference t = new ResolveAssemblyReference();

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

t.Assemblies = new ITaskItem[]
{
Expand Down Expand Up @@ -731,6 +738,7 @@ public void DependsOn_NETStandard_and_SystemRuntime()
ResolveAssemblyReference t = new ResolveAssemblyReference();

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

t.Assemblies = new ITaskItem[]
{
Expand Down Expand Up @@ -799,6 +807,7 @@ public void DependsOn_NETStandard_and_SystemRuntime_ExternallyResolved()
ResolveAssemblyReference t = new ResolveAssemblyReference();

t.BuildEngine = new MockEngine(_output);
t.TaskEnvironment = TaskEnvironmentHelper.CreateForTest();
Comment thread
AR-May marked this conversation as resolved.

t.Assemblies = new ITaskItem[]
{
Expand Down
Loading
Loading