From f8f3d120e8cfc5b5816003175341d198864cf20d Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Tue, 24 May 2016 13:34:33 -0700 Subject: [PATCH 1/8] Managed changes for FileTracker->FileTrackerXX Port of internal VS repo commit 3071fdfce. MSBuild provides a public API for divining the appropriate paths to Tracker.exe and FileTracker.dll. This change returns a copy that is appropriate now after the Detours-required rename to FileTracker32.dll and FileTracker64.dll. There is much confusion here. First, there are now two DLLs where once there was one. Fortunately, the native Detours code transparently handles slecting the right DLL given a path to *either*. So I'm just returning the 32-bit version. That means that we no longer need to have the caller indicate what type of tool will be called so that we can dig around for the right binary. But that was part of our public interface, so I left the parameter and now just ignore it. Second, there was a lot of logic to find the right path to tracker.exe. From spelunking through history, I *think* this is because tracker.exe isn't shipped with the Framework version of MSBuild. It is shipped in the .NET SDK and with Build Tools. Now that Build Tools exists, I think that's the only place that it's needed, and the old tracker.exe isn't compatible with the new filetracker.dll, so I removed the fallback logic: it is now found within the MSBuild toolset, or not at all. --- .../TrackedDependencies/FileTracker.cs | 90 +++---------------- 1 file changed, 11 insertions(+), 79 deletions(-) diff --git a/src/Utilities/TrackedDependencies/FileTracker.cs b/src/Utilities/TrackedDependencies/FileTracker.cs index 935edac8cb5..11827255844 100644 --- a/src/Utilities/TrackedDependencies/FileTracker.cs +++ b/src/Utilities/TrackedDependencies/FileTracker.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft. All rights reserved. +// Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; @@ -87,8 +87,9 @@ public static class FileTracker // The name of the standalone tracker tool. private static string s_TrackerFilename = "Tracker.exe"; - // The name of the assembly that is injected into the executing process - private static string s_FileTrackerFilename = "FileTracker.dll"; + // The name of the assembly that is injected into the executing process. + // Detours handles picking between FileTracker{32,64}.dll so only mention one. + private static string s_FileTrackerFilename = "FileTracker32.dll"; #endregion #region Static constructor @@ -587,60 +588,15 @@ private static string GetPath(string filename, ExecutableType toolType, string r if (!File.Exists(trackerPath)) { // if an override path was specified, that's it -- we don't want to fall back if the file - // is not found there. + // is not found there. trackerPath = null; } } else { - switch (toolType) - { - case ExecutableType.Native32Bit: - // A native executable that's 32-bit. Just return the 32-bit path - trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Bitness32); - break; - case ExecutableType.Native64Bit: - // A native executable that's 64-bit. Just return the 64-bit path - trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Bitness64); - break; - case ExecutableType.ManagedIL: - // Next most likely -- the tool is a managed executable that has not been explicitly marked - // either 32 or 64 bit. - // This case is slightly tricky -- we have to return the path to the 64-bit tracker if we're running - // on a 64-bit machine, and the 32-bit tracker if we're running on a 32-bit machine. - trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Bitness64); - - // If the path is null, that means there is no 64-bit framework -- that's fine, return the 32-bit path instead. - if (trackerPath == null) - { - trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Bitness32); - } - break; - case ExecutableType.Managed32Bit: - // A managed executable that has been explicitly marked 32-bit. Just return the 32-bit path. - trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Bitness32); - break; - case ExecutableType.Managed64Bit: - // A managed executable that has been explicitly marked 64-bit. Just return the 64-bit path. If this - // is a 32-bit machine, then we will return null, and the error will be caught and handled appropriately - // elsewhere. - trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Bitness64); - break; - case ExecutableType.SameAsCurrentProcess: - // Figure out what bitness the current process is and return that bitness of Tracker.exe. - if (IntPtr.Size == sizeof(Int32)) - { - trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Bitness32); - } - else - { - trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Bitness64); - } - break; - default: - ErrorUtilities.ThrowInternalErrorUnreachable(); - return null; - } + // Since Detours can handle cross-bitness process launches, the toolType + // can be ignored; just return the path corresponding to the current architecture. + trackerPath = GetPath(filename, DotNetFrameworkArchitecture.Current); } return trackerPath; @@ -655,8 +611,6 @@ private static string GetPath(string filename, ExecutableType toolType, string r /// private static string GetPath(string filename, DotNetFrameworkArchitecture bitness) { - string trackerPath; - // Make sure that if someone starts passing the wrong thing to this method we don't silently // eat it and do something possibly unexpected. ErrorUtilities.VerifyThrow( @@ -666,31 +620,9 @@ private static string GetPath(string filename, DotNetFrameworkArchitecture bitne filename ); - // Look for FileTracker.dll/FileTracker.exe first in the MSBuild tools directory, then fall back to .NET framework directory - // and finally to .NET SDK directories. - trackerPath = ToolLocationHelper.GetPathToBuildToolsFile(filename, ToolLocationHelper.CurrentToolsVersion, bitness); - - if (String.IsNullOrEmpty(trackerPath)) - { - trackerPath = ToolLocationHelper.GetPathToDotNetFrameworkFile(filename, TargetDotNetFrameworkVersion.VersionLatest, bitness); - - if ((String.IsNullOrEmpty(trackerPath) || !File.Exists(trackerPath)) && s_TrackerFilename.Equals(filename, StringComparison.OrdinalIgnoreCase)) - { - // fall back to looking in the SDK directory -- this is where Tracker.exe will be in the typical VS case. First check - // in the SDK for the latest target framework and latest Visual Studio version, since we want to make sure that we get - // the most up-to-date version of FileTracker. - trackerPath = ToolLocationHelper.GetPathToDotNetFrameworkSdkFile(filename, TargetDotNetFrameworkVersion.Version45, VisualStudioVersion.VersionLatest, bitness); - - // If that didn't work, we may be in a scenario where, e.g., we have VS 10 on Windows 8, which comes with .NET 4.5 - // pre-installed. In which case, the Dev11 (or other "latest" SDK) may not exist, but the Dev10 SDK might. Check - // for that here. - if (trackerPath == null) - { - trackerPath = ToolLocationHelper.GetPathToDotNetFrameworkSdkFile(filename, TargetDotNetFrameworkVersion.Version40, bitness); - } - } - } - return trackerPath; + // Look for FileTracker.dll/Tracker.exe in the MSBuild tools directory. They may exist elsewhere on disk, + // but other copies aren't guaranteed to be compatible with the latest. + return ToolLocationHelper.GetPathToBuildToolsFile(filename, ToolLocationHelper.CurrentToolsVersion, bitness); } /// From 5e1b0743170392e764730ddfae1d4fd91a83764f Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Tue, 24 May 2016 13:41:41 -0700 Subject: [PATCH 2/8] InprocTrackingNativeMethods for new FileTracker Port of internal VS repo change 7c71cade. Since this is a direct LoadLibrary() call, it actually matters which FileTrackerXX.dll gets loaded. Added logic to compute that and updated a few comments. --- src/Shared/InprocTrackingNativeMethods.cs | 25 +++++++++-------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/Shared/InprocTrackingNativeMethods.cs b/src/Shared/InprocTrackingNativeMethods.cs index a3daf078775..4e89c642a9e 100644 --- a/src/Shared/InprocTrackingNativeMethods.cs +++ b/src/Shared/InprocTrackingNativeMethods.cs @@ -23,11 +23,11 @@ namespace Microsoft.Build.Shared /// Methods that are invoked on FileTracker.dll in order to handle inproc tracking /// /// - /// We want to P/Invoke to the FileTracker methods, but FileTracker.dll is not guaranteed to be on PATH (since it's - /// in the .NET Framework directory), and there is no DefaultDllImportSearchPath that explicitly points out at the - /// .NET Framework directory. Thus, we are sneaking around P/Invoke by manually acquiring the method pointers and - /// calling them ourselves. The vast majority of this code was lifted from ndp\fx\src\CLRCompression\ZLibNative.cs, - /// which does the same thing for that assembly. + /// We want to P/Invoke to the FileTracker methods, but FileTracker.dll is not guaranteed to be on PATH (since it's + /// in the MSBuild directory), and there is no DefaultDllImportSearchPath that explicitly points to us. Thus, we + /// are sneaking around P/Invoke by manually acquiring the method pointers and calling them ourselves. The vast + /// majority of this code was lifted from ndp\fx\src\CLRCompression\ZLibNative.cs, which does the same thing for + /// that assembly. /// internal static class InprocTrackingNativeMethods { @@ -131,7 +131,7 @@ internal static void SetThreadCount(int threadCount) private static class FileTrackerDllStub { - private const string fileTrackerDllName = "FileTracker.dll"; + private readonly static Lazy fileTrackerDllName = new Lazy(() => (IntPtr.Size == sizeof(Int32)) ? "FileTracker32.dll" : "FileTracker64.dll"); // Handle for FileTracker.dll itself [SecurityCritical] @@ -180,19 +180,14 @@ private static class FileTrackerDllStub /// private static void LoadFileTrackerDll() { - // Get the FileTracker in the framework directory that matches the currently running process + // Get the FileTracker in our directory that matches the currently running process string frameworkDir = RuntimeEnvironment.GetRuntimeDirectory(); string buildToolsPath = FrameworkLocationHelper.GeneratePathToBuildToolsForToolsVersion(MSBuildConstants.CurrentToolsVersion, DotNetFrameworkArchitecture.Current); - string fileTrackerPath = Path.Combine(buildToolsPath, fileTrackerDllName); - - if (String.IsNullOrEmpty(fileTrackerPath) || !File.Exists(fileTrackerPath)) - { - fileTrackerPath = Path.Combine(frameworkDir, fileTrackerDllName); - } + string fileTrackerPath = Path.Combine(buildToolsPath, fileTrackerDllName.Value); if (!File.Exists(fileTrackerPath)) { - throw new DllNotFoundException(fileTrackerDllName); + throw new DllNotFoundException(fileTrackerDllName.Value); } SafeLibraryHandle handle = LoadLibrary(fileTrackerPath); @@ -219,7 +214,7 @@ private static DT CreateDelegate
(String entryPointName) IntPtr entryPoint = GetProcAddress(s_fileTrackerDllHandle, entryPointName); if (IntPtr.Zero == entryPoint) - throw new EntryPointNotFoundException(fileTrackerDllName + "!" + entryPointName); + throw new EntryPointNotFoundException(fileTrackerDllName.Value + "!" + entryPointName); return (DT)(Object)Marshal.GetDelegateForFunctionPointer(entryPoint, typeof(DT)); } From ddf4631dbf59912f93489ea9fd724c16c027c59e Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Tue, 24 May 2016 13:44:02 -0700 Subject: [PATCH 3/8] Simplify ForceOutOfProcTracking for cross-bitness Port of internal VS repo change 4543e6aa6. This is a documented public API so I left it around with the same signature even though I couldn't find any consumers. The logic to detect when a tool will run with a different architecture so that a caller can launch the appropriate tracker.exe for the tool is now obsolete; if FileTracker is loaded in-proc we can trace a child process no matter its bitness. --- .../TrackedDependencies/FileTracker.cs | 32 ++----------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/src/Utilities/TrackedDependencies/FileTracker.cs b/src/Utilities/TrackedDependencies/FileTracker.cs index 11827255844..1ed63b80ce5 100644 --- a/src/Utilities/TrackedDependencies/FileTracker.cs +++ b/src/Utilities/TrackedDependencies/FileTracker.cs @@ -479,7 +479,6 @@ public static bool ForceOutOfProcTracking(ExecutableType toolType) public static bool ForceOutOfProcTracking(ExecutableType toolType, string dllName, string cancelEventName) { bool trackOutOfProc = false; - string trackerPath = null; if (cancelEventName != null) { @@ -489,37 +488,12 @@ public static bool ForceOutOfProcTracking(ExecutableType toolType, string dllNam else if (dllName != null) { // If we have a DLL name, we need to track out of proc -- inproc tracking just uses - // the default FileTracker.dll from the path. + // the default FileTracker trackOutOfProc = true; } - else if (IntPtr.Size == sizeof(Int32)) - { - // Current process is 32-bit. So we need to spawn Tracker.exe if our tool is - // explicitly marked as 64-bit OR is MSIL and we're installed on a 64-bit OS. - if (toolType == ExecutableType.Managed64Bit || toolType == ExecutableType.Native64Bit) - { - trackOutOfProc = true; - } - else if (toolType == ExecutableType.ManagedIL) - { - trackerPath = ToolLocationHelper.GetPathToDotNetFrameworkFile(s_TrackerFilename, TargetDotNetFrameworkVersion.VersionLatest, DotNetFrameworkArchitecture.Bitness64); - if (trackerPath != null) - { - // If we found a 64-bit path, we're on a 64-bit OS and need to use it. Otherwise, we're fine. - trackOutOfProc = true; - } - } - } - else if (IntPtr.Size == sizeof(Int64)) - { - // Current process is 64-bit. We need to spawn Tracker.exe if our tool is - // explicitly marked as 32-bit. - if (toolType == ExecutableType.Managed32Bit || toolType == ExecutableType.Native32Bit) - { - trackOutOfProc = true; - } - } + // toolType is not relevant now that Detours can handle child processes of a different + // bitness than the parent. return trackOutOfProc; } From 75a2ca4c7d33f2ddc56c7fbe103b7b1b917e9d92 Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Tue, 24 May 2016 13:48:25 -0700 Subject: [PATCH 4/8] Update a test to point to FileTracker32.dll Port of internal VS commit 3346b4d50e. --- .../UnitTests/TrackedDependencies/FileTrackerTests.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs index 4812a85b8e1..0a31f7b27d7 100644 --- a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs +++ b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs @@ -412,6 +412,7 @@ public void FileTrackerFindStrInIncludeDuplicates() string fileTrackerPath = FileTracker.GetFileTrackerPath(ExecutableType.ManagedIL); string commandArgs = "/d \"" + fileTrackerPath + "\" /u /c \"" + outputFile + "\""; + Console.WriteLine($"{trackerPath} {commandArgs}"); int exit = FileTrackerTestHelper.RunCommand(trackerPath, commandArgs); Console.WriteLine(""); Assert.Equal(0, exit); @@ -2230,7 +2231,7 @@ private void InProcTrackingSpawnsToolWithTracker(bool useTrackerResponseFile) const string tlogRootName = "foo_inline"; const string sourceFile = "inlinetrackingtest.txt"; const string trackerResponseFile = "test-tracker.rsp"; - const string fileTrackerParameters = "/d FileTracker.dll /r \"" + rootingMarker + "\""; + const string fileTrackerParameters = "/d FileTracker32.dll /r \"" + rootingMarker + "\""; File.Delete(toolReadTlog); File.Delete(sourceFile); From f08291f5dbcfab3b1c3cfc6b4daaa13d0f1cdba8 Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Tue, 24 May 2016 13:53:42 -0700 Subject: [PATCH 5/8] Unit tests for cross-architecture Tracker Port of internal VS commit 0b28bbabb. Add tests to ensure that tracing still works when multiple architectures appear in the process hierarchy. --- .../TrackedDependencies/FileTrackerTests.cs | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs index 0a31f7b27d7..06005585215 100644 --- a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs +++ b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs @@ -35,12 +35,23 @@ sealed public class FileTrackerTests : IDisposable private static string s_oldPath = null; + private static string s_cmd32Path; + private static string s_cmd64Path; + public FileTrackerTests() { s_defaultFileTrackerPathUnquoted = FileTracker.GetFileTrackerPath(ExecutableType.SameAsCurrentProcess); s_defaultFileTrackerPath = "\"" + s_defaultFileTrackerPathUnquoted + "\""; s_defaultTrackerPath = FileTracker.GetTrackerPath(ExecutableType.SameAsCurrentProcess); + s_cmd32Path = (IntPtr.Size == sizeof(Int32)) + ? Environment.ExpandEnvironmentVariables(@"%windir%\System32\cmd.exe") + : Environment.ExpandEnvironmentVariables(@"%windir%\syswow64\cmd.exe"); + + s_cmd64Path = (IntPtr.Size == sizeof(Int32)) + ? Environment.ExpandEnvironmentVariables(@"%windir%\sysnative\cmd.exe") + : Environment.ExpandEnvironmentVariables(@"%windir%\System32\cmd.exe"); + // blank out the path so that we know we're not inadvertently depending on it. s_oldPath = Environment.GetEnvironmentVariable("PATH"); Environment.SetEnvironmentVariable("PATH", Environment.ExpandEnvironmentVariables("%windir%\\system32;%windir%")); @@ -412,7 +423,6 @@ public void FileTrackerFindStrInIncludeDuplicates() string fileTrackerPath = FileTracker.GetFileTrackerPath(ExecutableType.ManagedIL); string commandArgs = "/d \"" + fileTrackerPath + "\" /u /c \"" + outputFile + "\""; - Console.WriteLine($"{trackerPath} {commandArgs}"); int exit = FileTrackerTestHelper.RunCommand(trackerPath, commandArgs); Console.WriteLine(""); Assert.Equal(0, exit); @@ -768,6 +778,44 @@ public void FileTrackerFindStrInChainRepeatCommand() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); } + [TestMethod] + public void FileTrackerFindStrInX64X86ChainRepeatCommand() + { + Console.WriteLine("Test: FileTrackerFindStrInX64X86ChainRepeatCommand"); + + string[] tlogFiles = Directory.GetFiles(Environment.CurrentDirectory, "cmd*-findstr.*.1.tlog", SearchOption.TopDirectoryOnly); + foreach (string tlogFile in tlogFiles) + { + File.Delete(tlogFile); + } + FileTrackerTestHelper.WriteAll("test.in", "foo"); + + int exit = FileTrackerTestHelper.RunCommand(s_defaultTrackerPath, "/d " + s_defaultFileTrackerPath + " /c " + s_cmd64Path + " /c " + s_cmd32Path + " /c findstr /ip foo test.in"); + tlogFiles = Directory.GetFiles(Environment.CurrentDirectory, "cmd*-findstr.read.1.tlog", SearchOption.TopDirectoryOnly); + Console.WriteLine(""); + Assert.AreEqual(0, exit); + FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); + } + + [TestMethod] + public void FileTrackerFindStrInX86X64ChainRepeatCommand() + { + Console.WriteLine("Test: FileTrackerFindStrInX86X64ChainRepeatCommand"); + + string[] tlogFiles = Directory.GetFiles(Environment.CurrentDirectory, "cmd*-findstr.*.1.tlog", SearchOption.TopDirectoryOnly); + foreach (string tlogFile in tlogFiles) + { + File.Delete(tlogFile); + } + FileTrackerTestHelper.WriteAll("test.in", "foo"); + + int exit = FileTrackerTestHelper.RunCommand(s_defaultTrackerPath, "/d " + s_defaultFileTrackerPath + " /c " + s_cmd32Path + " /c " + s_cmd64Path + " /c findstr /ip foo test.in"); + tlogFiles = Directory.GetFiles(Environment.CurrentDirectory, "cmd*-findstr.read.1.tlog", SearchOption.TopDirectoryOnly); + Console.WriteLine(""); + Assert.AreEqual(0, exit); + FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); + } + [Fact] public void FileTrackerFileIsUnderPath() { @@ -2231,7 +2279,7 @@ private void InProcTrackingSpawnsToolWithTracker(bool useTrackerResponseFile) const string tlogRootName = "foo_inline"; const string sourceFile = "inlinetrackingtest.txt"; const string trackerResponseFile = "test-tracker.rsp"; - const string fileTrackerParameters = "/d FileTracker32.dll /r \"" + rootingMarker + "\""; + const string fileTrackerParameters = "/d FileTracker.dll /r \"" + rootingMarker + "\""; File.Delete(toolReadTlog); File.Delete(sourceFile); From 0bc6ebf23d0d785cc8297da298424d86504585a2 Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Tue, 24 May 2016 13:56:08 -0700 Subject: [PATCH 6/8] Skip FileTracker crossarch tests on 32-bit Windows This is a port of internal VS change a191243f. These tests only work on 64-bit Windows because they test the handoff between a 64-bit process and a 32-bit one. Since 32-bit Windows can't run 64-bit processes, there's not "handoff" to test. --- .../TrackedDependencies/FileTrackerTests.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs index 06005585215..0eb7ccec2ff 100644 --- a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs +++ b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs @@ -783,6 +783,13 @@ public void FileTrackerFindStrInX64X86ChainRepeatCommand() { Console.WriteLine("Test: FileTrackerFindStrInX64X86ChainRepeatCommand"); + if (!Environment.Is64BitOperatingSystem) + { + Console.WriteLine("FileTrackerFindStrInX64X86ChainRepeatCommand runs both 32-and 64-bit programs so it requires 64-bit Windows."); + Assert.IsTrue(true); + return; + } + string[] tlogFiles = Directory.GetFiles(Environment.CurrentDirectory, "cmd*-findstr.*.1.tlog", SearchOption.TopDirectoryOnly); foreach (string tlogFile in tlogFiles) { @@ -802,6 +809,13 @@ public void FileTrackerFindStrInX86X64ChainRepeatCommand() { Console.WriteLine("Test: FileTrackerFindStrInX86X64ChainRepeatCommand"); + if (!Environment.Is64BitOperatingSystem) + { + Console.WriteLine("FileTrackerFindStrInX86X64ChainRepeatCommand runs both 32-and 64-bit programs so it requires 64-bit Windows."); + Assert.IsTrue(true); + return; + } + string[] tlogFiles = Directory.GetFiles(Environment.CurrentDirectory, "cmd*-findstr.*.1.tlog", SearchOption.TopDirectoryOnly); foreach (string tlogFile in tlogFiles) { From bfa9f8741476309c7ba0a7404fae069ee2306321 Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Tue, 24 May 2016 16:19:07 -0500 Subject: [PATCH 7/8] Port new FileTracker tests to xunit --- .../TrackedDependencies/FileTrackerTests.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs index 0eb7ccec2ff..27d3849b224 100644 --- a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs +++ b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs @@ -778,7 +778,7 @@ public void FileTrackerFindStrInChainRepeatCommand() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); } - [TestMethod] + [Fact] public void FileTrackerFindStrInX64X86ChainRepeatCommand() { Console.WriteLine("Test: FileTrackerFindStrInX64X86ChainRepeatCommand"); @@ -786,7 +786,7 @@ public void FileTrackerFindStrInX64X86ChainRepeatCommand() if (!Environment.Is64BitOperatingSystem) { Console.WriteLine("FileTrackerFindStrInX64X86ChainRepeatCommand runs both 32-and 64-bit programs so it requires 64-bit Windows."); - Assert.IsTrue(true); + Assert.True(true); return; } @@ -800,11 +800,11 @@ public void FileTrackerFindStrInX64X86ChainRepeatCommand() int exit = FileTrackerTestHelper.RunCommand(s_defaultTrackerPath, "/d " + s_defaultFileTrackerPath + " /c " + s_cmd64Path + " /c " + s_cmd32Path + " /c findstr /ip foo test.in"); tlogFiles = Directory.GetFiles(Environment.CurrentDirectory, "cmd*-findstr.read.1.tlog", SearchOption.TopDirectoryOnly); Console.WriteLine(""); - Assert.AreEqual(0, exit); + Assert.Equal(0, exit); FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); } - [TestMethod] + [Fact] public void FileTrackerFindStrInX86X64ChainRepeatCommand() { Console.WriteLine("Test: FileTrackerFindStrInX86X64ChainRepeatCommand"); @@ -812,7 +812,7 @@ public void FileTrackerFindStrInX86X64ChainRepeatCommand() if (!Environment.Is64BitOperatingSystem) { Console.WriteLine("FileTrackerFindStrInX86X64ChainRepeatCommand runs both 32-and 64-bit programs so it requires 64-bit Windows."); - Assert.IsTrue(true); + Assert.True(true); return; } @@ -826,7 +826,7 @@ public void FileTrackerFindStrInX86X64ChainRepeatCommand() int exit = FileTrackerTestHelper.RunCommand(s_defaultTrackerPath, "/d " + s_defaultFileTrackerPath + " /c " + s_cmd32Path + " /c " + s_cmd64Path + " /c findstr /ip foo test.in"); tlogFiles = Directory.GetFiles(Environment.CurrentDirectory, "cmd*-findstr.read.1.tlog", SearchOption.TopDirectoryOnly); Console.WriteLine(""); - Assert.AreEqual(0, exit); + Assert.Equal(0, exit); FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); } From 5b3a79105cb22dd1f3472380782097ba2c91d667 Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Tue, 24 May 2016 16:37:51 -0500 Subject: [PATCH 8/8] Disable FileTracker tests This works around the lack of #649 combined with the `FileTracker{32,64}.dll` rename. The C# side of the rename-handling is being pushed to GitHub, but these tests will fail until the renamed native files are available on a given machine. --- .../TrackedDependencies/FileTrackerTests.cs | 122 +++++++++--------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs index 27d3849b224..be1b5ba4528 100644 --- a/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs +++ b/src/Utilities/UnitTests/TrackedDependencies/FileTrackerTests.cs @@ -75,7 +75,7 @@ public void Dispose() FileTrackerTestHelper.CleanTlogs(); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerHelp() { Console.WriteLine("Test: FileTracker"); @@ -84,7 +84,7 @@ public void FileTrackerHelp() Assert.Equal(1, exit); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerBadArg() { Console.WriteLine("Test: FileTrackerBadArg"); @@ -96,7 +96,7 @@ public void FileTrackerBadArg() Assert.True(log.Contains("TRK0000")); // bad arg } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerNoUIDll() { Console.WriteLine("Test: FileTrackerNoUIDll"); @@ -133,7 +133,7 @@ public void FileTrackerNoUIDll() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerNonexistentRspFile() { Console.WriteLine("Test: FileTrackerNonexistentRspFile"); @@ -154,7 +154,7 @@ public void FileTrackerNonexistentRspFile() Assert.True(log.Contains("abc.rsp")); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerWithDll() { Console.WriteLine("Test: FileTrackerWithDll"); @@ -164,7 +164,7 @@ public void FileTrackerWithDll() Assert.Equal(1, exit); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerReadOnlyTlog() { Console.WriteLine("Test: FileTrackerTlogWriteFailure"); @@ -196,7 +196,7 @@ public void FileTrackerReadOnlyTlog() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrIn() { Console.WriteLine("Test: FileTrackerFindStrIn"); @@ -210,7 +210,7 @@ public void FileTrackerFindStrIn() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), "findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInOperations() { Console.WriteLine("Test: FileTrackerFindStrInOperations"); @@ -228,7 +228,7 @@ public void FileTrackerFindStrInOperations() Assert.True(foundW || foundA); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInOperationsExtended() { Console.WriteLine("Test: FileTrackerFindStrInOperationsExtended"); @@ -251,7 +251,7 @@ public void FileTrackerFindStrInOperationsExtended() Assert.True(foundCreateFileW || foundCreateFileA); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInOperationsExtended_AttributesOnly() { Console.WriteLine("Test: FileTrackerFindStrInOperationsExtended_AttributesOnly"); @@ -273,7 +273,7 @@ public void FileTrackerFindStrInOperationsExtended_AttributesOnly() Assert.True(foundCreateFileW || foundCreateFileA); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerExtendedDirectoryTracking() { Console.WriteLine("Test: FileTrackerExtendedDirectoryTracking"); @@ -395,7 +395,7 @@ static void Main(string[] args) } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInIncludeDuplicates() { Console.WriteLine("Test: FileTrackerFindStrInIncludeDuplicates"); @@ -436,7 +436,7 @@ public void FileTrackerFindStrInIncludeDuplicates() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), "readtwice.read.1.tlog", 2); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerDoNotRecordWriteAsRead() { Console.WriteLine("Test: FileTrackerDoNotRecordWriteAsRead"); @@ -510,7 +510,7 @@ static void Main() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInCommandLine() { Console.WriteLine("Test: FileTrackerFindStrInCommandLine"); @@ -525,7 +525,7 @@ public void FileTrackerFindStrInCommandLine() Assert.Equal("findstr /ip foo test.in", line); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInArgumentSpaces() { Console.WriteLine("Test: FileTrackerFindStrIn"); @@ -539,7 +539,7 @@ public void FileTrackerFindStrInArgumentSpaces() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test file.in").ToUpperInvariant(), "findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindUnicode() { Console.WriteLine("Test: FileTrackerFindUnicode"); @@ -554,7 +554,7 @@ public void FileTrackerFindUnicode() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("t\u1EBCst.in").ToUpperInvariant(), "find.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerStartProcessFindStrIn() { Console.WriteLine("Test: FileTrackerStartProcessFindStrIn"); @@ -570,7 +570,7 @@ public void FileTrackerStartProcessFindStrIn() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), "findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerResponseFile() { Console.WriteLine("Test: FileTrackerResponseFile"); @@ -590,7 +590,7 @@ public void FileTrackerResponseFile() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), "findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInRootFiles() { Console.WriteLine("Test: FileTrackerFindStrInRootFiles"); @@ -607,7 +607,7 @@ public void FileTrackerFindStrInRootFiles() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), "findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInRootFilesCommand() { Console.WriteLine("Test: FileTrackerFindStrInRootFilesCommand"); @@ -627,7 +627,7 @@ public void FileTrackerFindStrInRootFilesCommand() FileTrackerTestHelper.ReadLineFromFile("findstr.command.1.tlog", 2)); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInRootFilesSpaces() { Console.WriteLine("Test: FileTrackerFindStrInRootFilesSpaces"); @@ -644,7 +644,7 @@ public void FileTrackerFindStrInRootFilesSpaces() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), "findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerHelperCommandLine() { Console.WriteLine("Test: FileTrackerHelperCommandLine"); @@ -661,7 +661,7 @@ public void FileTrackerHelperCommandLine() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), "findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerSortOut() { Console.WriteLine("Test: FileTrackerSortOut"); @@ -687,7 +687,7 @@ public void FileTrackerSortOut() FileTrackerTestHelper.ReadLineFromFile("test.out", 1).ToUpperInvariant()); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerSortOutIntermediate() { Console.WriteLine("Test: FileTrackerSortOutIntermediate"); @@ -715,7 +715,7 @@ public void FileTrackerSortOutIntermediate() } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerIntermediateDirMissing() { Console.WriteLine("Test: FileTrackerIntermediateDirMissing"); @@ -745,7 +745,7 @@ public void FileTrackerIntermediateDirMissing() FileTrackerTestHelper.ReadLineFromFile("test.out", 1).ToUpperInvariant()); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInChain() { Console.WriteLine("Test: FileTrackerFindStrInChain"); @@ -759,7 +759,7 @@ public void FileTrackerFindStrInChain() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), "cmd-findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInChainRepeatCommand() { Console.WriteLine("Test: FileTrackerFindStrInChainRepeatCommand"); @@ -778,7 +778,7 @@ public void FileTrackerFindStrInChainRepeatCommand() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInX64X86ChainRepeatCommand() { Console.WriteLine("Test: FileTrackerFindStrInX64X86ChainRepeatCommand"); @@ -804,7 +804,7 @@ public void FileTrackerFindStrInX64X86ChainRepeatCommand() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFindStrInX86X64ChainRepeatCommand() { Console.WriteLine("Test: FileTrackerFindStrInX86X64ChainRepeatCommand"); @@ -830,7 +830,7 @@ public void FileTrackerFindStrInX86X64ChainRepeatCommand() FileTrackerTestHelper.AssertFoundStringInTLog(Path.GetFullPath("test.in").ToUpperInvariant(), tlogFiles[0]); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFileIsUnderPath() { Console.WriteLine("Test: FileTrackerFileIsUnderPath"); @@ -876,7 +876,7 @@ public void FileTrackerFileIsUnderPath() Assert.Equal(false, FileTracker.FileIsUnderPath(@"c:\foo\rumble.cpp", @"c:\foo\rumble\")); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void FileTrackerFileIsExcludedFromDependencies() { Console.WriteLine("Test: FileTrackerFileIsExcludedFromDependencies"); @@ -924,7 +924,7 @@ public void FileTrackerFileIsExcludedFromDependencies() Assert.Equal(true, FileTracker.FileIsExcludedFromDependencies(testFile)); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTest1() { string sourceFile = "inlinetrackingtest.txt"; @@ -947,7 +947,7 @@ public void InProcTrackingTest1() File.Delete(tlogWriteFile); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTest2() { // Do test 1 twice in a row to make sure there is no leakage @@ -955,7 +955,7 @@ public void InProcTrackingTest2() InProcTrackingTest1(); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTestSuspendResume() { string sourceFile = "inlinetrackingtest.txt"; @@ -992,7 +992,7 @@ public void InProcTrackingTestSuspendResume() File.Delete(sourceFile + "_r"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTestStopBeforeWrite() { Assert.Throws(() => @@ -1015,7 +1015,7 @@ public void InProcTrackingTestStopBeforeWrite() } ); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTestNotStop() { InProcTrackingTesterNoStop(1); @@ -1083,7 +1083,7 @@ private static void InProcTrackingTester(int iteration) File.Delete(sourceFile); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTestIteration() { for (int iter = 0; iter < 50; iter++) @@ -1092,7 +1092,7 @@ public void InProcTrackingTestIteration() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingNonStopTestIteration() { for (int iter = 0; iter < 50; iter++) @@ -1102,7 +1102,7 @@ public void InProcTrackingNonStopTestIteration() FileTracker.StopTrackingAndCleanup(); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTwoContexts() { string sourceFile = "inlinetrackingtest.txt"; @@ -1143,7 +1143,7 @@ public void InProcTrackingTwoContexts() File.Delete(tlogWriteFile2); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTwoContextsWithRoot() { string sourceFile = "inlinetrackingtest.txt"; @@ -1194,7 +1194,7 @@ public void InProcTrackingTwoContextsWithRoot() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingSpawnsOutOfProcTool() { string intermediateDir = Path.GetTempPath() + @"InProcTrackingSpawnsOutOfProcTool\"; @@ -1242,7 +1242,7 @@ public void InProcTrackingSpawnsOutOfProcTool() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingSpawnsOutOfProcTool_OverrideEnvironment() { string intermediateDir = Path.GetTempPath() + @"InProcTrackingSpawnsOutOfProcTool_OverrideEnvironment\"; @@ -1292,7 +1292,7 @@ public void InProcTrackingSpawnsOutOfProcTool_OverrideEnvironment() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingSpawnsToolWithTrackerResponseFile() { Console.WriteLine("Test: InProcTrackingSpawnsToolWithTrackerResponseFile"); @@ -1300,7 +1300,7 @@ public void InProcTrackingSpawnsToolWithTrackerResponseFile() InProcTrackingSpawnsToolWithTracker(true); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingSpawnsToolWithTrackerNoResponseFile() { Console.WriteLine("Test: InProcTrackingSpawnsToolWithTrackerNoResponseFile"); @@ -1308,7 +1308,7 @@ public void InProcTrackingSpawnsToolWithTrackerNoResponseFile() InProcTrackingSpawnsToolWithTracker(false); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingTwoContextsTwoEnds() { Assert.Throws(() => @@ -1381,7 +1381,7 @@ public void InProcTrackingStartProcessFindStrIn() File.Delete("InProcTrackingStartProcessFindStrIn-findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingStartProcessFindStrNullCommandLine() { Console.WriteLine("Test: InProcTrackingStartProcessFindStrNullCommandLine"); @@ -1428,7 +1428,7 @@ public void InProcTrackingStartProcessFindStrNullCommandLine() } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingStartProcessFindStrInDefaultTaskName() { Console.WriteLine("Test: InProcTrackingStartProcessFindStrInDefaultTaskName"); @@ -1457,7 +1457,7 @@ public void InProcTrackingStartProcessFindStrInDefaultTaskName() File.Delete("InProcTrackingStartProcessFindStrIn-findstr.read.1.tlog"); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingChildThreadTrackedAuto() { FileTracker.SetThreadCount(1); @@ -1498,7 +1498,7 @@ public void InProcTrackingChildThreadTrackedAuto() File.Delete(sourceFile); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingChildThreadTrackedManual() { FileTracker.SetThreadCount(1); @@ -1537,7 +1537,7 @@ public void InProcTrackingChildThreadTrackedManual() File.Delete(sourceFile); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingChildThreadNotTracked() { FileTracker.SetThreadCount(1); @@ -1573,7 +1573,7 @@ public void InProcTrackingChildThreadNotTracked() File.Delete(sourceFile); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingChildThreadNotTrackedLocallyTracked() { FileTracker.SetThreadCount(1); @@ -1635,7 +1635,7 @@ public void ThreadProcManualTLog() } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void InProcTrackingChildCustomEnvironment() { string sourceFile = "allenvironment.txt"; @@ -1701,7 +1701,7 @@ public void InProcTrackingChildCustomEnvironment() File.Delete(commandFile); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void CreateFileDoesntRecordWriteIfNotWrittenTo() { string testDir = Path.Combine(Path.GetTempPath(), "CreateFileDoesntRecordWriteIfNotWrittenTo"); @@ -1744,7 +1744,7 @@ public void CreateFileDoesntRecordWriteIfNotWrittenTo() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void CopyAlwaysRecordsWrites() { string testDir = Path.Combine(Path.GetTempPath(), "CopyAlwaysRecordsWrites"); @@ -1887,7 +1887,7 @@ public void MoveAlwaysRecordsWrites() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void LaunchMultipleOfSameTool_SameCommand() { string testDir = Path.Combine(Path.GetTempPath(), "LaunchMultipleOfSameTool_SameCommand"); @@ -1919,7 +1919,7 @@ public void LaunchMultipleOfSameTool_SameCommand() LaunchDuplicateToolsAndVerifyTlogExistsForEach(testDir, contextSpecifications, tlogPatterns, createTestDirectory: false); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void LaunchMultipleOfSameTool_DifferentCommands1() { string testDir = Path.Combine(Path.GetTempPath(), "LaunchMultipleOfSameTool_DifferentCommands1"); @@ -1952,7 +1952,7 @@ public void LaunchMultipleOfSameTool_DifferentCommands1() LaunchDuplicateToolsAndVerifyTlogExistsForEach(testDir, contextSpecifications, tlogPatterns, createTestDirectory: false); } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void LaunchMultipleOfSameTool_DifferentCommands2() { string testDir = Path.Combine(Path.GetTempPath(), "LaunchMultipleOfSameTool_DifferentCommands2"); @@ -2002,7 +2002,7 @@ public void LaunchMultipleOfSameTool_DifferentCommands2() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void LaunchMultipleOfSameTool_DifferentCommands3() { string testDir = Path.Combine(Path.GetTempPath(), "LaunchMultipleOfSameTool_DifferentCommands3"); @@ -2057,7 +2057,7 @@ public void LaunchMultipleOfSameTool_DifferentCommands3() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void LaunchMultipleOfSameTool_DifferentCommands4() { string testDir = Path.Combine(Path.GetTempPath(), "LaunchMultipleOfSameTool_DifferentCommands4"); @@ -2111,7 +2111,7 @@ public void LaunchMultipleOfSameTool_DifferentCommands4() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void LaunchMultipleDifferentTools() { string testDir = Path.Combine(Path.GetTempPath(), "LaunchMultipleDifferentTools"); @@ -2160,7 +2160,7 @@ public void LaunchMultipleDifferentTools() } } - [Fact] + [Fact(Skip = "FileTracker tests require VS2015 Update 3 or a packaged version of Tracker.exe https://github.com/Microsoft/msbuild/issues/649")] public void LaunchMultipleOfSameTool_DifferentContexts() { string testDir = Path.Combine(Path.GetTempPath(), "LaunchMultipleOfSameTool_DifferentContexts");