public async Task ShouldDetectFileChangesAndCommit() { Logger.Trace("Starting ShouldDetectFileChangesAndCommit"); try { InitializePlatformAndEnvironment(TestRepoMasterCleanSynchronized); using (var repositoryWatcher = CreateRepositoryWatcher(TestRepoMasterCleanSynchronized)) { var watcherAutoResetEvent = new RepositoryWatcherAutoResetEvent(); var repositoryWatcherListener = Substitute.For <IRepositoryWatcherListener>(); repositoryWatcherListener.AttachListener(repositoryWatcher, watcherAutoResetEvent); repositoryWatcher.Initialize(); repositoryWatcher.Start(); repositoryWatcher.Stop(); try { var foobarTxt = TestRepoMasterCleanSynchronized.Combine("foobar.txt"); Logger.Trace("Issuing Changes"); foobarTxt.WriteAllText("foobar"); await TaskManager.Wait(); Logger.Trace("Continue test"); repositoryWatcher.Start(); watcherAutoResetEvent.RepositoryChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); watcherAutoResetEvent.Reset(); repositoryWatcherListener.DidNotReceive().HeadChanged(); repositoryWatcherListener.DidNotReceive().ConfigChanged(); repositoryWatcherListener.DidNotReceive().RepositoryCommitted(); repositoryWatcherListener.DidNotReceive().IndexChanged(); repositoryWatcherListener.Received().RepositoryChanged(); repositoryWatcherListener.DidNotReceive().LocalBranchesChanged(); repositoryWatcherListener.DidNotReceive().RemoteBranchesChanged(); repositoryWatcherListener.ClearReceivedCalls(); repositoryWatcher.Stop(); Logger.Trace("Issuing Command"); await GitClient.AddAll().StartAsAsync(); Logger.Trace("Completed Command"); repositoryWatcher.Start(); watcherAutoResetEvent.IndexChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); watcherAutoResetEvent.Reset(); repositoryWatcherListener.DidNotReceive().HeadChanged(); repositoryWatcherListener.DidNotReceive().ConfigChanged(); repositoryWatcherListener.DidNotReceive().RepositoryCommitted(); repositoryWatcherListener.Received(1).IndexChanged(); repositoryWatcherListener.DidNotReceive().RepositoryChanged(); repositoryWatcherListener.DidNotReceive().LocalBranchesChanged(); repositoryWatcherListener.DidNotReceive().RemoteBranchesChanged(); repositoryWatcherListener.ClearReceivedCalls(); repositoryWatcher.Stop(); Logger.Trace("Issuing Command"); await GitClient.Commit("Test Commit", string.Empty).StartAsAsync(); Logger.Trace("Completed Command"); repositoryWatcher.Start(); watcherAutoResetEvent.RepositoryCommitted.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); watcherAutoResetEvent.IndexChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); watcherAutoResetEvent.Reset(); repositoryWatcherListener.DidNotReceive().HeadChanged(); repositoryWatcherListener.DidNotReceive().ConfigChanged(); repositoryWatcherListener.Received(1).RepositoryCommitted(); repositoryWatcherListener.Received(1).IndexChanged(); repositoryWatcherListener.DidNotReceive().RepositoryChanged(); repositoryWatcherListener.Received(1).LocalBranchesChanged(); repositoryWatcherListener.DidNotReceive().RemoteBranchesChanged(); repositoryWatcherListener.ClearReceivedCalls(); } finally { repositoryWatcher.Stop(); } } } finally { Logger.Trace("Ending ShouldDetectFileChangesAndCommit"); } }
public async Task ShouldDetectChangesToRemotes() { Logger.Trace("Starting ShouldDetectChangesToRemotes"); try { InitializePlatformAndEnvironment(TestRepoMasterCleanSynchronized); using (var repositoryWatcher = CreateRepositoryWatcher(TestRepoMasterCleanSynchronized)) { var watcherAutoResetEvent = new RepositoryWatcherAutoResetEvent(); var repositoryWatcherListener = Substitute.For <IRepositoryWatcherListener>(); repositoryWatcherListener.AttachListener(repositoryWatcher, watcherAutoResetEvent); repositoryWatcher.Initialize(); repositoryWatcher.Start(); repositoryWatcher.Stop(); try { Logger.Trace("Issuing Command"); await GitClient.RemoteRemove("origin").StartAsAsync(); await TaskManager.Wait(); Logger.Trace("Continue test"); repositoryWatcher.Start(); watcherAutoResetEvent.ConfigChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); watcherAutoResetEvent.RemoteBranchesChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); watcherAutoResetEvent.Reset(); repositoryWatcherListener.DidNotReceive().HeadChanged(); repositoryWatcherListener.Received(1).ConfigChanged(); repositoryWatcherListener.DidNotReceive().RepositoryCommitted(); repositoryWatcherListener.DidNotReceive().IndexChanged(); repositoryWatcherListener.DidNotReceive().RepositoryChanged(); repositoryWatcherListener.DidNotReceive().LocalBranchesChanged(); repositoryWatcherListener.Received(1).RemoteBranchesChanged(); repositoryWatcherListener.ClearReceivedCalls(); repositoryWatcher.Stop(); Logger.Trace("Issuing 2nd Command"); await GitClient.RemoteAdd("origin", "https://github.com/EvilStanleyGoldman/IOTestsRepo.git").StartAsAsync(); await TaskManager.Wait(); Logger.Trace("Continue 2nd test"); repositoryWatcher.Start(); watcherAutoResetEvent.ConfigChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); watcherAutoResetEvent.RemoteBranchesChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); repositoryWatcherListener.DidNotReceive().HeadChanged(); repositoryWatcherListener.Received(1).ConfigChanged(); repositoryWatcherListener.DidNotReceive().RepositoryCommitted(); repositoryWatcherListener.DidNotReceive().IndexChanged(); repositoryWatcherListener.DidNotReceive().RepositoryChanged(); repositoryWatcherListener.DidNotReceive().LocalBranchesChanged(); repositoryWatcherListener.Received(1).RemoteBranchesChanged(); } finally { repositoryWatcher.Stop(); } } } finally { Logger.Trace("Ending ShouldDetectChangesToRemotes"); } }
public async Task ShouldDetectBranchCreate() { Logger.Trace("Starting ShouldDetectBranchCreate"); try { await Initialize(TestRepoMasterCleanSynchronized, initializeRepository : false); using (var repositoryWatcher = CreateRepositoryWatcher(TestRepoMasterCleanSynchronized)) { var watcherAutoResetEvent = new RepositoryWatcherAutoResetEvent(); var repositoryWatcherListener = Substitute.For <IRepositoryWatcherListener>(); repositoryWatcherListener.AttachListener(repositoryWatcher, watcherAutoResetEvent); repositoryWatcher.Initialize(); repositoryWatcher.Start(); repositoryWatcher.Stop(); try { Logger.Trace("Issuing Command"); await GitClient.CreateBranch("feature/document2", "feature/document").StartAsAsync(); await TaskManager.Wait(); Logger.Trace("Continue test"); repositoryWatcher.Start(); watcherAutoResetEvent.LocalBranchesChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); watcherAutoResetEvent.Reset(); repositoryWatcherListener.DidNotReceive().HeadChanged(); repositoryWatcherListener.DidNotReceive().ConfigChanged(); repositoryWatcherListener.DidNotReceive().RepositoryCommitted(); repositoryWatcherListener.DidNotReceive().IndexChanged(); repositoryWatcherListener.DidNotReceive().RepositoryChanged(); repositoryWatcherListener.Received(1).LocalBranchesChanged(); repositoryWatcherListener.DidNotReceive().RemoteBranchesChanged(); repositoryWatcherListener.ClearReceivedCalls(); repositoryWatcher.Stop(); Logger.Trace("Issuing Command"); await GitClient.CreateBranch("feature2/document2", "feature/document").StartAsAsync(); await TaskManager.Wait(); Logger.Trace("Continue test"); repositoryWatcher.Start(); watcherAutoResetEvent.LocalBranchesChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); repositoryWatcherListener.DidNotReceive().HeadChanged(); repositoryWatcherListener.DidNotReceive().ConfigChanged(); repositoryWatcherListener.DidNotReceive().RepositoryCommitted(); repositoryWatcherListener.DidNotReceive().IndexChanged(); repositoryWatcherListener.DidNotReceive().RepositoryChanged(); repositoryWatcherListener.Received(1).LocalBranchesChanged(); repositoryWatcherListener.DidNotReceive().RemoteBranchesChanged(); } finally { repositoryWatcher.Stop(); } } } finally { Logger.Trace("Ending ShouldDetectBranchCreate"); } }