public void MoveFile() { using (WindowsFileSystemVirtualizerTester tester = new WindowsFileSystemVirtualizerTester(this.Repo)) { NotificationType notificationType = NotificationType.UseExistingMask; tester.MockVirtualization.OnNotifyFileRenamed( "test.txt", "test2.txt", isDirectory: false, triggeringProcessId: TriggeringProcessId, triggeringProcessImageFileName: TriggeringProcessImageFileName, notificationMask: out notificationType); notificationType.ShouldEqual(NotificationType.UseExistingMask); tester.FileSystemCallbacks.OnIndexFileChangeCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnLogsHeadChangeCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnFileRenamedCallCount.ShouldEqual(1); tester.FileSystemCallbacks.OnFolderRenamedCallCount.ShouldEqual(0); tester.FileSystemCallbacks.ResetCalls(); tester.MockVirtualization.OnNotifyFileRenamed( "test_folder_src", "test_folder_dst", isDirectory: true, triggeringProcessId: TriggeringProcessId, triggeringProcessImageFileName: TriggeringProcessImageFileName, notificationMask: out notificationType); notificationType.ShouldEqual(NotificationType.UseExistingMask); tester.FileSystemCallbacks.OnIndexFileChangeCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnLogsHeadChangeCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnFileRenamedCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnFolderRenamedCallCount.ShouldEqual(1); } }
public void MoveFileIntoDotGitDirectory() { using (WindowsFileSystemVirtualizerTester tester = new WindowsFileSystemVirtualizerTester(this.Repo)) { NotificationType notificationType = NotificationType.UseExistingMask; tester.MockVirtualization.OnNotifyFileRenamed( "test.txt", Path.Combine(".git", "test.txt"), isDirectory: false, triggeringProcessId: TriggeringProcessId, triggeringProcessImageFileName: TriggeringProcessImageFileName, notificationMask: out notificationType); notificationType.ShouldEqual(NotificationType.UseExistingMask); tester.FileSystemCallbacks.OnIndexFileChangeCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnLogsHeadChangeCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnFileRenamedCallCount.ShouldEqual(1); tester.FileSystemCallbacks.OnFolderRenamedCallCount.ShouldEqual(0); tester.FileSystemCallbacks.ResetCalls(); // We don't expect something to rename something from outside the .gitdir to the .git\index, but this // verifies that we behave as expected in case that happens tester.MockVirtualization.OnNotifyFileRenamed( "test.txt", Path.Combine(".git", "index"), isDirectory: false, triggeringProcessId: TriggeringProcessId, triggeringProcessImageFileName: TriggeringProcessImageFileName, notificationMask: out notificationType); notificationType.ShouldEqual(NotificationType.UseExistingMask); tester.FileSystemCallbacks.OnIndexFileChangeCallCount.ShouldEqual(1); tester.FileSystemCallbacks.OnLogsHeadChangeCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnFileRenamedCallCount.ShouldEqual(1); tester.FileSystemCallbacks.OnFolderRenamedCallCount.ShouldEqual(0); tester.FileSystemCallbacks.ResetCalls(); // We don't expect something to rename something from outside the .gitdir to the .git\logs\HEAD, but this // verifies that we behave as expected in case that happens tester.MockVirtualization.OnNotifyFileRenamed( "test.txt", Path.Combine(".git", "logs\\HEAD"), isDirectory: false, triggeringProcessId: TriggeringProcessId, triggeringProcessImageFileName: TriggeringProcessImageFileName, notificationMask: out notificationType); notificationType.ShouldEqual(NotificationType.UseExistingMask); tester.FileSystemCallbacks.OnIndexFileChangeCallCount.ShouldEqual(0); tester.FileSystemCallbacks.OnLogsHeadChangeCallCount.ShouldEqual(1); tester.FileSystemCallbacks.OnFileRenamedCallCount.ShouldEqual(1); tester.FileSystemCallbacks.OnFolderRenamedCallCount.ShouldEqual(0); tester.FileSystemCallbacks.ResetCalls(); } }