public void ProcessesNamedEntry() { GitTreeEntry[] inputData = new[] { new GitTreeEntry("file", this.RandomSha(), false, true), new GitTreeEntry("Dir", this.RandomSha(), false, true) }; using (MemoryStream testData = new MemoryStream()) { // Create test data WriteTestTreeEntries(inputData, testData); testData.Position = 0; using (MemoryStream mockStdInStream = new MemoryStream()) using (StreamWriter mockStdIn = new StreamWriter(mockStdInStream)) { GitCatFileBatchProcess dut = new GitCatFileBatchProcess(new StreamReader(testData, GitOutputEncoding), mockStdIn); GitTreeEntry[] output = dut.GetTreeEntries(TestTreeSha).ToArray(); output.Length.ShouldEqual(inputData.Length); for (int i = 0; i < output.Length; ++i) { output[i].Sha.ShouldEqual(inputData[i].Sha); output[i].Name.ShouldEqual(inputData[i].Name); output[i].IsBlob.ShouldEqual(inputData[i].IsBlob); output[i].IsTree.ShouldEqual(inputData[i].IsTree); } } } }
private CloneVerb.Result HydrateRootGitAttributes_CanTimeout(GitObjects gitObjects, string branch) { using (GitCatFileBatchProcess catFile = new GitCatFileBatchProcess(this.tracer, this.enlistment)) { string treeSha = catFile.GetTreeSha_CanTimeout(branch); GitTreeEntry gitAttributes = catFile.GetTreeEntries_CanTimeout(treeSha).FirstOrDefault(entry => entry.Name.Equals(GVFSConstants.SpecialGitFiles.GitAttributes)); if (gitAttributes == null) { return(new CloneVerb.Result("This branch does not contain a " + GVFSConstants.SpecialGitFiles.GitAttributes + " file in the root folder. This file is required by GVFS clone")); } if (!gitObjects.TryDownloadAndSaveBlobs(new[] { gitAttributes.Sha })) { return(new CloneVerb.Result("Could not download " + GVFSConstants.SpecialGitFiles.GitAttributes + " file")); } } return(new CloneVerb.Result(true)); }