public void Setup() { _gitFile = Path.Combine(_workingDir, ".git"); _gitWorkingDir = _gitFile.EnsureTrailingPathSeparator(); _indexLockFile = Path.Combine(_gitWorkingDir, IndexLock); _file = Substitute.For <FileBase>(); _directory = Substitute.For <DirectoryBase>(); _fileSystem = Substitute.For <IFileSystem>(); _fileSystem.Directory.Returns(_directory); _fileSystem.File.Returns(_file); _module = Substitute.For <IGitModule>(); _module.WorkingDir.Returns(_workingDir); _gitDirectoryResolver = Substitute.For <IGitDirectoryResolver>(); _gitDirectoryResolver.Resolve(_workingDir).Returns(_gitWorkingDir); _manager = new IndexLockManager(_module, _gitDirectoryResolver, _fileSystem); }
public void Resolve_submodule_real_filesystem() { using var helper = new GitModuleTestHelper(); helper.CreateFile(helper.Module.WorkingDir, ".gitmodules", @"[submodule ""Externals/NBug""] path = Externals/NBug url = https://github.com/gitextensions/NBug.git [submodule ""Externals/Git.hub""] path = Externals/Git.hub url = https://github.com/gitextensions/Git.hub.gitk"); var submoduleGitHub = Path.Combine(helper.Module.WorkingDir, "Externals", "Git.hub"); var submoduleNBug = Path.Combine(helper.Module.WorkingDir, "Externals", "NBug"); var submoduleGitHubWorkingDirGitDir = Path.Combine(helper.Module.WorkingDirGitDir, "modules", "Externals", "Git.hub"); var submoduleNbugWorkingDirGitDir = Path.Combine(helper.Module.WorkingDirGitDir, "modules", "Externals", "NBug"); helper.CreateFile(submoduleGitHub, ".git", "gitdir: ../../.git/modules/Externals/Git.hub"); helper.CreateFile(submoduleNBug, ".git", "gitdir: ../../.git/modules/Externals/NBug"); helper.CreateFile(helper.Module.WorkingDirGitDir, IndexLock, ""); helper.CreateFile(submoduleGitHubWorkingDirGitDir, IndexLock, ""); _manager = new IndexLockManager(helper.Module); var indexLock = Path.Combine(helper.Module.WorkingDirGitDir, IndexLock); File.Exists(indexLock).Should().BeTrue(); var gitHubIndexLock = Path.Combine(submoduleGitHubWorkingDirGitDir, IndexLock); File.Exists(gitHubIndexLock).Should().BeTrue(); var nbugIndexLock = Path.Combine(submoduleNbugWorkingDirGitDir, IndexLock); File.Exists(nbugIndexLock).Should().BeFalse(); _manager.UnlockIndex(true); File.Exists(indexLock).Should().BeFalse(); File.Exists(gitHubIndexLock).Should().BeFalse(); File.Exists(nbugIndexLock).Should().BeFalse(); }