private string RenderReport(ReportedFileAccess report) { return(m_options.Verbose ? $"Path = {report.GetPath(m_pathTable)}{Environment.NewLine}{report.Describe()}" : report.ShortDescribe(m_pathTable)); }
private static ReportedFileAccess ReadReportedFileAccess(BuildXLReader reader, ReportedProcess[] processes, Func <BuildXLReader, AbsolutePath> readPath) { return(ReportedFileAccess.Deserialize(reader, processes, readPath)); }
public void ReportedFileAccessCreate() { var pathTable = new PathTable(); AbsolutePath file1 = AbsolutePath.Create(pathTable, A("t", "file1.txt")); var process = new ReportedProcess(0, string.Empty); ReportedFileAccess rfa1 = ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file1); XAssert.AreEqual(rfa1.Status, FileAccessStatus.Allowed); XAssert.AreEqual(rfa1.ManifestPath, file1); XAssert.AreEqual(rfa1.Path, null); XAssert.AreEqual(A("t", "file1.txt"), rfa1.GetPath(pathTable)); XAssert.AreEqual(rfa1.OpenedFileOrDirectoryAttributes, (FlagsAndAttributes)FlagsAndAttributesConstants.InvalidFileAttributes); XAssert.IsFalse(rfa1.IsOpenedHandleDirectory()); ReportedFileAccess rfa2 = ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.CannotDeterminePolicy, true, 0, new Usn(0), DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, FlagsAndAttributes.FILE_ATTRIBUTE_DIRECTORY, pathTable, A("t", "file1.txt")); XAssert.AreEqual(rfa2.Status, FileAccessStatus.CannotDeterminePolicy); XAssert.AreEqual(rfa2.ManifestPath, file1); XAssert.AreEqual(rfa2.Path, null); XAssert.AreEqual(A("t", "file1.txt"), rfa2.GetPath(pathTable)); XAssert.AreEqual(rfa2.OpenedFileOrDirectoryAttributes, FlagsAndAttributes.FILE_ATTRIBUTE_DIRECTORY); XAssert.IsTrue(rfa2.IsOpenedHandleDirectory()); ReportedFileAccess rfa3 = ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Denied, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("t", "file2.txt")); XAssert.AreEqual(rfa3.Status, FileAccessStatus.Denied); XAssert.AreEqual(rfa3.ManifestPath, AbsolutePath.Invalid); XAssert.AreEqual(rfa3.Path, A("t", "file2.txt")); XAssert.AreEqual(A("t", "file2.txt"), rfa3.GetPath(pathTable)); XAssert.AreEqual(rfa3.OpenedFileOrDirectoryAttributes, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL); XAssert.IsFalse(rfa3.IsOpenedHandleDirectory()); }
public void ReportedFileAccessEquality() { var pathTable = new PathTable(); AbsolutePath file1 = AbsolutePath.Create(pathTable, A("t", "file1.txt")); AbsolutePath file2 = AbsolutePath.Create(pathTable, A("t", "file2.txt")); var process = new ReportedProcess(0, string.Empty); Test.BuildXL.TestUtilities.Xunit.StructTester.TestEquality( baseValue: ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file1), equalValue: ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file1), notEqualValues: new[] { ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Denied, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file1), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file2), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("u", "file3.txt")), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Denied, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("u", "file4.txt")), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, false, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file1), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Write, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file1) }, eq: (left, right) => left == right, neq: (left, right) => left != right, skipHashCodeForNotEqualValues: true); Test.BuildXL.TestUtilities.Xunit.StructTester.TestEquality( baseValue: ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("x", "file5.txt")), equalValue: ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("x", "file5.txt")), notEqualValues: new[] { ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Denied, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("x", "file5.txt")), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, new Usn(0), DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("x", "file5.txt")), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file1), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Denied, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, file2), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("u", "file3.txt")), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("u", "file4.txt")), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Read, FileAccessStatus.Allowed, false, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("x", "file5.txt")), ReportedFileAccess.Create( ReportedFileOperation.CreateFile, process, RequestedAccess.Write, FileAccessStatus.Allowed, true, 0, ReportedFileAccess.NoUsn, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_NONE, CreationDisposition.OPEN_ALWAYS, FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL, pathTable, A("x", "file5.txt")) }, eq: (left, right) => left == right, neq: (left, right) => left != right, skipHashCodeForNotEqualValues: true); }
private string GetAccessPath(ReportedFileAccess access) { return((access.Path ?? access.ManifestPath.ToString(PathTable)).ToCanonicalizedPath()); }