public void CloneWithDefaultLocalCacheLocation() { FileSystemRunner fileSystem = FileSystemRunner.DefaultRunner; string homeDirectory = Environment.GetEnvironmentVariable("HOME"); homeDirectory.ShouldBeADirectory(fileSystem); string newEnlistmentRoot = GSDFunctionalTestEnlistment.GetUniqueEnlistmentRoot(); ProcessStartInfo processInfo = new ProcessStartInfo(GSDTestConfig.PathToGSD); processInfo.Arguments = $"clone {Properties.Settings.Default.RepoToClone} {newEnlistmentRoot} --no-mount --no-prefetch"; processInfo.WindowStyle = ProcessWindowStyle.Hidden; processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; processInfo.RedirectStandardOutput = true; ProcessResult result = ProcessHelper.Run(processInfo); result.ExitCode.ShouldEqual(0, result.Errors); string dotGSDRoot = Path.Combine(newEnlistmentRoot, GSDTestConfig.DotGSDRoot); dotGSDRoot.ShouldBeADirectory(fileSystem); string localCacheRoot = GSDHelpers.GetPersistedLocalCacheRoot(dotGSDRoot); string gitObjectsRoot = GSDHelpers.GetPersistedGitObjectsRoot(dotGSDRoot); string defaultGSDCacheRoot = Path.Combine(homeDirectory, ".gvfsCache"); localCacheRoot.StartsWith(defaultGSDCacheRoot, StringComparison.Ordinal).ShouldBeTrue($"Local cache root did not default to using {homeDirectory}"); gitObjectsRoot.StartsWith(defaultGSDCacheRoot, StringComparison.Ordinal).ShouldBeTrue($"Git objects root did not default to using {homeDirectory}"); RepositoryHelpers.DeleteTestDirectory(newEnlistmentRoot); }
public void MountFailsWhenNoGitObjectsRootInRepoMetadata() { this.Enlistment.UnmountGSD(); string majorVersion; string minorVersion; GSDHelpers.GetPersistedDiskLayoutVersion(this.Enlistment.DotGSDRoot, out majorVersion, out minorVersion); majorVersion.ShouldNotBeNull(); minorVersion.ShouldNotBeNull(); string localCacheRoot = GSDHelpers.GetPersistedLocalCacheRoot(this.Enlistment.DotGSDRoot).ShouldNotBeNull(); string metadataPath = Path.Combine(this.Enlistment.DotGSDRoot, GSDHelpers.RepoMetadataName); string metadataBackupPath = metadataPath + ".backup"; this.fileSystem.MoveFile(metadataPath, metadataBackupPath); this.fileSystem.CreateEmptyFile(metadataPath); GSDHelpers.SaveDiskLayoutVersion(this.Enlistment.DotGSDRoot, majorVersion, minorVersion); GSDHelpers.SaveLocalCacheRoot(this.Enlistment.DotGSDRoot, localCacheRoot); this.MountShouldFail("Failed to determine git objects root from repo metadata"); this.fileSystem.DeleteFile(metadataPath); this.fileSystem.MoveFile(metadataBackupPath, metadataPath); this.Enlistment.MountGSD(); }