-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
Issue Description
Allow drive enumerating tests to access the root of a drive inside of Visual Studio. Currently, an UnauthorizedAccessException is thrown (so drive substitution is required for such tests to pass in VS).
Steps to Reproduce
Run subst z: <drive>:\<path> (or preferably, subst z: %TEMP%) on the command line for the below test to pass. This test can be added inside of CreateItem_Tests.cs.
[Fact]
public void WildcardDriveEnumerationTaskItemLogsWarning()
{
using (var env = TestEnvironment.Create())
{
ChangeWaves.ResetStateForTests();
env.SetEnvironmentVariable("MSBUILDFAILONDRIVEENUMERATINGWILDCARD", "0");
BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly();
CreateItem t = new CreateItem();
MockEngine engine = new MockEngine();
t.BuildEngine = engine;
t.Include = new ITaskItem[] { new TaskItem(@"z:\**\*.log") };
bool succeeded = t.Execute();
Assert.True(succeeded);
Assert.Equal(1, engine.Warnings);
engine.AssertLogContains("results in drive enumeration");
ChangeWaves.ResetStateForTests();
}
}
Expected Behavior
The test case should pass and allow for drive enumeration to occur for MSBuild to properly log a warning when a drive enumerating wildcard is detected.
Actual Behavior
The test case throws an UnauthorizedAccessException and hangs.
Analysis
This occurs for attempts to log a warning in ProjectItem_Tests.cs and ProjectItemInstance_Tests.cs as well.
Versions & Configurations
Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
17.0.0.52104