public void FindPdbFile_PATHcontainsInvalidChars_ErrorIsLogged() { TestResources.LoadTests_ReleaseX86.AsFileInfo().Should().Exist(); string pdb = Path.ChangeExtension(TestResources.LoadTests_ReleaseX86, ".pdb"); pdb.AsFileInfo().Should().Exist(); string renamedPdb = $"{pdb}.bak"; renamedPdb.AsFileInfo().Should().NotExist(); string pdbFound; var fakeLogger = new FakeLogger(() => OutputMode.Verbose); var currentPath = Environment.GetEnvironmentVariable("PATH"); try { File.Move(pdb, renamedPdb); pdb.AsFileInfo().Should().NotExist(); Environment.SetEnvironmentVariable("PATH", $"My<Invalid>Path;{currentPath}"); pdbFound = PdbLocator.FindPdbFile(TestResources.LoadTests_ReleaseX86, "", fakeLogger); } finally { Environment.SetEnvironmentVariable("PATH", currentPath); File.Move(renamedPdb, pdb); pdb.AsFileInfo().Should().Exist(); } pdbFound.Should().BeNull(); fakeLogger.Warnings .Should() .Contain(msg => msg.Contains("invalid path")); }
public void FindPdbFile_ExeWithoutPdb_AttemptsToFindPdbAreLogged() { TestResources.LoadTests_ReleaseX86.AsFileInfo().Should().Exist(); string pdb = Path.ChangeExtension(TestResources.LoadTests_ReleaseX86, ".pdb"); pdb.AsFileInfo().Should().Exist(); string renamedPdb = $"{pdb}.bak"; renamedPdb.AsFileInfo().Should().NotExist(); string pdbFound; var fakeLogger = new FakeLogger(() => OutputMode.Verbose); try { File.Move(pdb, renamedPdb); pdb.AsFileInfo().Should().NotExist(); pdbFound = PdbLocator.FindPdbFile(TestResources.LoadTests_ReleaseX86, "", fakeLogger); } finally { File.Move(renamedPdb, pdb); pdb.AsFileInfo().Should().Exist(); } pdbFound.Should().BeNull(); fakeLogger.Infos .Should() .Contain(msg => msg.Contains("Attempts to find PDB:")); }
public void FindPdbFile_ExeWithPdb_FindsPdb() { string executable = Path.GetFullPath(TestResources.LoadTests_ReleaseX86); executable.AsFileInfo().Should().Exist(); var fakeLogger = new FakeLogger(() => OutputMode.Verbose); string pdbFound = PdbLocator.FindPdbFile(executable, "", fakeLogger); string pdb = Path.ChangeExtension(executable, ".pdb"); pdb.AsFileInfo().Should().Exist(); pdbFound.Should().Be(pdb); }
private void DoResolveTest(string executable, string filter, int expectedLocations, int expectedErrorMessages, bool disposeResolver = true) { var locations = new List <SourceFileLocation>(); var fakeLogger = new FakeLogger(() => OutputMode.Info); string pdb = PdbLocator.FindPdbFile(executable, "", fakeLogger); IDiaResolver resolver = DefaultDiaResolverFactory.Instance.Create(executable, pdb, fakeLogger); locations.AddRange(resolver.GetFunctions(filter)); if (disposeResolver) { resolver.Dispose(); } locations.Should().HaveCountGreaterOrEqualTo(expectedLocations); fakeLogger.GetMessages(Severity.Warning, Severity.Error).Should().HaveCountGreaterOrEqualTo(expectedErrorMessages); }