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();
        }
Пример #2
0
        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/");
            }
        }
Пример #3
0
        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();
            }
Пример #5
0
        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();
        }
Пример #6
0
        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);
        }