public async Task Submodule_status_changes_for_top_module() { var currentModule = _repo1Module; var result = await SubmoduleTestHelpers.UpdateSubmoduleStructureAndWaitForResultAsync(_provider, currentModule); result.Should().NotBeNull(); // No changes in repo var changedFiles = GetStatusChangedFiles(currentModule); changedFiles.Should().HaveCount(0); await SubmoduleTestHelpers.UpdateSubmoduleStatusAndWaitForResultAsync(_provider, currentModule, changedFiles); result.OurSubmodules.All(i => i.Detailed == null).Should().BeTrue(); // Make a change in repo2 _repo1.CreateFile(_repo2Module.WorkingDir, "test.txt", "test"); changedFiles = GetStatusChangedFiles(currentModule); changedFiles.Should().HaveCount(1); await SubmoduleTestHelpers.UpdateSubmoduleStatusAndWaitForResultAsync(_provider, currentModule, changedFiles); result.OurSubmodules[0].Detailed.IsDirty.Should().BeTrue(); result.OurSubmodules[1].Detailed.Should().BeNull(); // Revert the change File.Delete(Path.Combine(_repo2Module.WorkingDir, "test.txt")); changedFiles = GetStatusChangedFiles(currentModule); changedFiles.Should().HaveCount(0); await SubmoduleTestHelpers.UpdateSubmoduleStatusAndWaitForResultAsync(_provider, currentModule, changedFiles); result.OurSubmodules.All(i => i.Detailed == null).Should().BeTrue(); }
public void Resolve_submodule_real_filsystem_Mono() { using (var helper = new GitModuleTestHelper()) { var submodulePath = Path.Combine(helper.Module.WorkingDir, "External", "Git.hub"); helper.CreateFile(submodulePath, ".git", "\r \r\ngitdir: ../../.git/modules/Externals/Git.hub\r\ntext"); _resolver = new GitDirectoryResolver(); _resolver.Resolve(submodulePath).Should().Be($@"{helper.Module.WorkingDirGitDir}modules/Externals/Git.hub/"); } }
public void TryGetExactPathName_should_check_if_path_matches_case(string relativePath, bool isResolved, bool doesMatch) { using var repo = new GitModuleTestHelper(); // Create a file var notUsed = repo.CreateFile(Path.Combine(repo.TemporaryPath, "Folder1"), "file1.txt", "bla"); var expected = Path.Combine(repo.TemporaryPath, relativePath); Assert.AreEqual(isResolved, _controller.TryGetExactPath(expected, out string exactPath)); Assert.AreEqual(doesMatch, exactPath == expected); }
public void HasChangedToNone_valid_result() { UpdateSubmoduleStatusAndWaitForResult(_provider, _repo3Module); // No changes in repo var changedFiles = GetStatusChangedFiles(_repo1Module); changedFiles.Should().HaveCount(0); _provider.HasChangedToNone(changedFiles).Should().BeFalse(); // Make a change in repo2 _repo1.CreateFile(_repo2Module.WorkingDir, "test.txt", "test"); changedFiles = GetStatusChangedFiles(_repo1Module); changedFiles.Should().HaveCount(1); _provider.HasChangedToNone(changedFiles).Should().BeFalse(); // Revert the change File.Delete(Path.Combine(_repo2Module.WorkingDir, "test.txt")); changedFiles = GetStatusChangedFiles(_repo1Module); changedFiles.Should().HaveCount(0); _provider.HasChangedToNone(changedFiles).Should().BeTrue(); }
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(); }
public void Setup() { _testHelper = new GitModuleTestHelper(); var content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level1_GitExtensions.settings.xml"); _level1 = _testHelper.CreateRepoFile(".git", "GitExtensions.settings", content); content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level2_GitExtensions.settings.xml"); _level2 = _testHelper.CreateFile(_testHelper.TemporaryPath + "/RoamingProfile", "GitExtensions.settings", content); content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level3_GitExtensions.settings.xml"); _level3 = _testHelper.CreateRepoFile("GitExtensions.settings", content); _userRoaming = new RepoDistSettings(null, new GitExtSettingsCache(_level3)); _repoDistributed = new RepoDistSettings(_userRoaming, new GitExtSettingsCache(_level2)); _repoLocal = new RepoDistSettings(_repoDistributed, new GitExtSettingsCache(_level1)); }
public void Setup() { _testHelper = new GitModuleTestHelper(); var content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level3_roaming_GitExtensions.settings.xml"); _userRoamingConfigFilePath = _testHelper.CreateFile(_testHelper.TemporaryPath + "/RoamingProfile", "GitExtensions.settings", content); content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level2_repodist_GitExtensions.settings.xml"); _repoDistributedConfigFilePath = _testHelper.CreateRepoFile("GitExtensions.settings", content); content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level1_repogit_GitExtensions.settings.xml"); _repoLocalConfigFilePath = _testHelper.CreateRepoFile(".git", "GitExtensions.settings", content); _userRoaming = new RepoDistSettings(null, new GitExtSettingsCache(_userRoamingConfigFilePath), SettingLevel.Global); _repoDistributed = new RepoDistSettings(_userRoaming, new GitExtSettingsCache(_repoDistributedConfigFilePath), SettingLevel.Distributed); _repoLocal = new RepoDistSettings(_repoDistributed, new GitExtSettingsCache(_repoLocalConfigFilePath), SettingLevel.Local); _effective = new RepoDistSettings(_repoLocal, new GitExtSettingsCache(null), SettingLevel.Effective); }
public void Setup() { _testHelper = new GitModuleTestHelper(); var content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level1_repogit_GitExtensions.settings.xml"); _level1 = _testHelper.CreateRepoFile(".git", "GitExtensions.settings", content); content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level2_repodist_GitExtensions.settings.xml"); _level2 = _testHelper.CreateFile(_testHelper.TemporaryPath + "/RoamingProfile", "GitExtensions.settings", content); content = EmbeddedResourceLoader.Load(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MockData.level3_roaming_GitExtensions.settings.xml"); _level3 = _testHelper.CreateRepoFile("GitExtensions.settings", content); _userRoaming = new RepoDistSettings(null, new GitExtSettingsCache(_level3)); _repoDistributed = new RepoDistSettings(_userRoaming, new GitExtSettingsCache(_level2)); _repoLocal = new RepoDistSettings(_repoDistributed, new GitExtSettingsCache(_level1)); _externalLinksStorage = Substitute.For <IExternalLinksStorage>(); _provider = new ConfiguredLinkDefinitionsProvider(_externalLinksStorage); }