public void GetCommitsForInputDocument() { // Given string inputFolder = Path.GetDirectoryName( Path.GetDirectoryName( Path.GetDirectoryName( Path.GetDirectoryName(TestContext.CurrentContext.TestDirectory) ) ) ); IExecutionContext context = Substitute.For <IExecutionContext>(); context.InputFolder.Returns(inputFolder); context.GetDocument(Arg.Any <IEnumerable <KeyValuePair <string, object> > >()).Returns(getNewDocumentCallInfo => { IDocument newDocument = Substitute.For <IDocument>(); newDocument.GetEnumerator() .Returns(getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).GetEnumerator()); newDocument.Get <IReadOnlyDictionary <string, string> >(Arg.Any <string>()) .Returns(getCallInfo => (IReadOnlyDictionary <string, string>)getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).First(x => x.Key == getCallInfo.ArgAt <string>(0)).Value); return(newDocument); }); IDocument document = Substitute.For <IDocument>(); document.Source.Returns(Path.Combine(inputFolder, "Wyam.Core\\IModule.cs")); // Use file that no longer exists so commit count is stable context.GetDocument(Arg.Any <IDocument>(), Arg.Any <IEnumerable <KeyValuePair <string, object> > >()).Returns(x => { IDocument newDocument = Substitute.For <IDocument>(); newDocument.GetEnumerator().Returns(x.ArgAt <IEnumerable <KeyValuePair <string, object> > >(1).GetEnumerator()); return(newDocument); }); GitCommits gitCommits = new GitCommits().ForEachInputDocument(); // When List <IDocument> results = gitCommits.Execute(new[] { document }, context).ToList(); // Make sure to materialize the result list // Then Assert.AreEqual(1, results.Count); List <IDocument> commits = ((IEnumerable <IDocument>)results[0].First(x => x.Key == GitKeys.Commits).Value).ToList(); Assert.AreEqual(6, commits.Count); Assert.AreEqual("6274fb76a0380760ab2dc83f90748b7d953aceb4", commits.Last().First(x => x.Key == GitKeys.Sha).Value); }
public void GetCommitsForInputDocument() { // Given string inputFolder = Path.GetDirectoryName( Path.GetDirectoryName( Path.GetDirectoryName( Path.GetDirectoryName(TestContext.CurrentContext.TestDirectory) ) ) ); IExecutionContext context = Substitute.For<IExecutionContext>(); context.InputFolder.Returns(inputFolder); context.GetNewDocument(Arg.Any<IEnumerable<MetadataItem>>()).Returns(getNewDocumentCallInfo => { IDocument newDocument = Substitute.For<IDocument>(); newDocument.GetEnumerator() .Returns(getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).Select(x => (KeyValuePair<string, object>)x).GetEnumerator()); newDocument.Get<IReadOnlyDictionary<string, string>>(Arg.Any<string>()) .Returns(getCallInfo => (IReadOnlyDictionary<string, string>)getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).First(x => x.Key == getCallInfo.ArgAt<string>(0)).Value); return newDocument; }); IDocument document = Substitute.For<IDocument>(); document.Source.Returns(Path.Combine(inputFolder, "Wyam.Core\\IModule.cs")); // Use file that no longer exists so commit count is stable document.Clone(Arg.Any<IEnumerable<MetadataItem>>()).Returns(x => { IDocument newDocument = Substitute.For<IDocument>(); newDocument.GetEnumerator().Returns(x.ArgAt<IEnumerable<MetadataItem>>(0).Select(y => (KeyValuePair<string, object>)y).GetEnumerator()); return newDocument; }); GitCommits gitCommits = new GitCommits().ForEachInputDocument(); // When List<IDocument> results = gitCommits.Execute(new[] { document }, context).ToList(); // Make sure to materialize the result list // Then Assert.AreEqual(1, results.Count); List<IDocument> commits = ((IEnumerable<IDocument>) results[0].First(x => x.Key == GitKeys.Commits).Value).ToList(); Assert.AreEqual(6, commits.Count); Assert.AreEqual("6274fb76a0380760ab2dc83f90748b7d953aceb4", commits.Last().First(x => x.Key == GitKeys.Sha).Value); }
public void Execute() { var task = new GitCommits(); task.BuildEngine = new MockBuild(); task.ToolPath = @"C:\Program Files (x86)\Git\bin"; string prjRootPath = TaskUtility.GetProjectRootDirectory(true); task.LocalPath = Path.Combine(prjRootPath, @"Source"); bool result = task.Execute(); int commits; int.TryParse(task.CommitsCount, out commits); Assert.IsTrue(result, "Execute Failed"); Assert.IsFalse(commits == 0, "Invalid CommitsCount"); }
public void GetAllCommitsFromInputPath() { // Given IExecutionContext context = Substitute.For<IExecutionContext>(); context.InputFolder.Returns(TestContext.CurrentContext.TestDirectory); context.GetNewDocument(Arg.Any<IEnumerable<MetadataItem>>()).Returns(getNewDocumentCallInfo => { IDocument newDocument = Substitute.For<IDocument>(); newDocument.GetEnumerator() .Returns(getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).Select(x => (KeyValuePair<string, object>)x).GetEnumerator()); return newDocument; }); IDocument document = Substitute.For<IDocument>(); GitCommits gitCommits = new GitCommits(); // When List<IDocument> results = gitCommits.Execute(new[] { document }, context).ToList(); // Make sure to materialize the result list // Then Assert.That(results.Count, Is.GreaterThan(400)); Assert.AreEqual("cbd6fb2b7e7fc6e0bbe19744433a510cef93bd7f", results.Last().First(x => x.Key == GitKeys.Sha).Value); }
public void GetAllCommitsFromInputPath() { // Given IExecutionContext context = Substitute.For <IExecutionContext>(); context.InputFolder.Returns(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Environment.CurrentDirectory)))); // Ascend from \bin\Debug context.GetNewDocument(Arg.Any <IEnumerable <MetadataItem> >()).Returns(getNewDocumentCallInfo => { IDocument newDocument = Substitute.For <IDocument>(); newDocument.GetEnumerator() .Returns(getNewDocumentCallInfo.ArgAt <IEnumerable <MetadataItem> >(0).Select(x => (KeyValuePair <string, object>)x).GetEnumerator()); return(newDocument); }); IDocument document = Substitute.For <IDocument>(); GitCommits gitCommits = new GitCommits(); // When List <IDocument> results = gitCommits.Execute(new[] { document }, context).ToList(); // Make sure to materialize the result list // Then Assert.That(results.Count, Is.GreaterThan(400)); Assert.AreEqual("cbd6fb2b7e7fc6e0bbe19744433a510cef93bd7f", results.Last().First(x => x.Key == GitKeys.Sha).Value); }
public void GetAllCommitsFromInputPath() { // Given IExecutionContext context = Substitute.For <IExecutionContext>(); context.FileSystem.RootPath.Returns(new DirectoryPath("/")); context.FileSystem.InputPaths.Returns(x => new [] { new DirectoryPath(TestContext.CurrentContext.TestDirectory) }); context.GetDocument(Arg.Any <IEnumerable <KeyValuePair <string, object> > >()).Returns(getNewDocumentCallInfo => { IDocument newDocument = Substitute.For <IDocument>(); newDocument.GetEnumerator() .Returns(getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).GetEnumerator()); return(newDocument); }); IDocument document = Substitute.For <IDocument>(); GitCommits gitCommits = new GitCommits(); // When List <IDocument> results = gitCommits.Execute(new[] { document }, context).ToList(); // Make sure to materialize the result list // Then Assert.That(results.Count, Is.GreaterThan(400)); Assert.AreEqual("cbd6fb2b7e7fc6e0bbe19744433a510cef93bd7f", results.Last().First(x => x.Key == GitKeys.Sha).Value); }
public void GetCommitsForInputDocument() { // Given DirectoryPath inputPath = new DirectoryPath(TestContext.CurrentContext.TestDirectory).Parent.Parent.Parent.Parent; IExecutionContext context = Substitute.For<IExecutionContext>(); context.FileSystem.RootPath.Returns(new DirectoryPath("/")); context.FileSystem.InputPaths.Returns(x => new[] { inputPath }); context.GetDocument(Arg.Any<IEnumerable<KeyValuePair<string, object>>>()).Returns(getNewDocumentCallInfo => { IDocument newDocument = Substitute.For<IDocument>(); newDocument.GetEnumerator() .Returns(getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).GetEnumerator()); newDocument.Get<IReadOnlyDictionary<FilePath, string>>(Arg.Any<string>()) .Returns(getCallInfo => (IReadOnlyDictionary<FilePath, string>)getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).First(x => x.Key == getCallInfo.ArgAt<string>(0)).Value); return newDocument; }); IDocument document = Substitute.For<IDocument>(); document.Source.Returns(inputPath.CombineFile("Wyam.Core/IModule.cs")); // Use file that no longer exists so commit count is stable context.GetDocument(Arg.Any<IDocument>(), Arg.Any<IEnumerable<KeyValuePair<string, object>>>()).Returns(x => { IDocument newDocument = Substitute.For<IDocument>(); newDocument.GetEnumerator().Returns(x.ArgAt<IEnumerable<KeyValuePair<string, object>>>(1).GetEnumerator()); return newDocument; }); GitCommits gitCommits = new GitCommits().ForEachInputDocument(); // When List<IDocument> results = gitCommits.Execute(new[] { document }, context).ToList(); // Make sure to materialize the result list // Then Assert.AreEqual(1, results.Count); List<IDocument> commits = ((IEnumerable<IDocument>) results[0].First(x => x.Key == GitKeys.Commits).Value).ToList(); Assert.AreEqual(6, commits.Count); Assert.AreEqual("6274fb76a0380760ab2dc83f90748b7d953aceb4", commits.Last().First(x => x.Key == GitKeys.Sha).Value); }