private void RunEsentRepoMetadataUpgradeTest(string sourceVersion) { this.Enlistment.UnmountGVFS(); // Delete the existing repo metadata string versionJsonPath = Path.Combine(this.Enlistment.DotGVFSRoot, GVFSHelpers.RepoMetadataName); versionJsonPath.ShouldBeAFile(this.fileSystem); this.fileSystem.DeleteFile(versionJsonPath); ESENTDatabase.SaveDiskLayoutVersionAsEsentDatabase(this.Enlistment.DotGVFSRoot, sourceVersion); string esentDatabasePath = Path.Combine(this.Enlistment.DotGVFSRoot, ESENTDatabase.EsentRepoMetadataFolder); esentDatabasePath.ShouldBeADirectory(this.fileSystem); // We should be able to mount, and there should no longer be any Esent Repo Metadata this.Enlistment.MountGVFS(); esentDatabasePath.ShouldNotExistOnDisk(this.fileSystem); versionJsonPath.ShouldBeAFile(this.fileSystem); this.ValidatePersistedVersionMatchesCurrentVersion(); GVFSHelpers.GetPersistedLocalCacheRoot(this.Enlistment.DotGVFSRoot) .ShouldEqual(string.Empty, "LocalCacheRoot should be an empty string when upgrading from a version prior to 12"); // We're starting with fresh enlisments, and so the legacy cache location: <root>\.gvfs\gitObjectCache should not be on disk Path.Combine(this.Enlistment.DotGVFSRoot, @".gvfs\gitObjectCache").ShouldNotExistOnDisk(this.fileSystem); // The upgrader should set GitObjectsRoot to src\.git\objects (because the legacy cache location is not on disk) GVFSHelpers.GetPersistedGitObjectsRoot(this.Enlistment.DotGVFSRoot) .ShouldNotBeNull("GitObjectsRoot should not be null") .ShouldEqual(Path.Combine(this.Enlistment.RepoRoot, @".git\objects")); }
public void MountFailsToUpgradeFromEsentVersion6ToJsonRepoMetadata() { this.Enlistment.UnmountGVFS(); // Delete the existing repo metadata string versionJsonPath = Path.Combine(this.Enlistment.DotGVFSRoot, GVFSHelpers.RepoMetadataName); versionJsonPath.ShouldBeAFile(this.fileSystem); this.fileSystem.DeleteFile(versionJsonPath); ESENTDatabase.SaveDiskLayoutVersionAsEsentDatabase(this.Enlistment.DotGVFSRoot, "6"); string esentDatabasePath = Path.Combine(this.Enlistment.DotGVFSRoot, ESENTDatabase.EsentRepoMetadataFolder); esentDatabasePath.ShouldBeADirectory(this.fileSystem); this.Enlistment.TryMountGVFS().ShouldEqual(false, "Should not be able to upgrade from version 6"); esentDatabasePath.ShouldBeADirectory(this.fileSystem); }