Exemple #1
0
        public async Task CanCheckIfPullRequestsExist()
        {
            var sut                = vContainer.Resolve <IGitHubUtilities>();
            var errorsAndInfos     = new ErrorsAndInfos();
            var hasOpenPullRequest = await HasOpenPullRequestAsync(sut, "", errorsAndInfos);

            if (hasOpenPullRequest.Inconclusive)
            {
                return;
            }

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsTrue(hasOpenPullRequest.YesNo);

            hasOpenPullRequest = await HasOpenPullRequestAsync(sut, "1", errorsAndInfos);

            if (hasOpenPullRequest.Inconclusive)
            {
                return;
            }

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsFalse(hasOpenPullRequest.YesNo);

            hasOpenPullRequest = await HasOpenPullRequestForThisBranchAsync(sut, true, errorsAndInfos);

            if (hasOpenPullRequest.Inconclusive)
            {
                return;
            }

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsFalse(hasOpenPullRequest.YesNo);

            hasOpenPullRequest = await HasOpenPullRequestForThisBranchAsync(sut, false, errorsAndInfos);

            if (hasOpenPullRequest.Inconclusive)
            {
                return;
            }

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsTrue(hasOpenPullRequest.YesNo);

            var hasPullRequest = await HasPullRequestForThisBranchAndItsHeadTipAsync(sut, errorsAndInfos);

            if (hasOpenPullRequest.Inconclusive)
            {
                return;
            }

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsTrue(hasPullRequest.YesNo);
        }
Exemple #2
0
        public void CanCheckIfIsBranchAheadOfMaster()
        {
            var errorsAndInfos = new ErrorsAndInfos();

            CloneRepository(DoNotPullFolder.Folder(), "do-not-pull-from-me", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsFalse(vSut.IsBranchAheadOfMaster(MasterFolder));
            vContainer.Resolve <IEmbeddedCakeScriptCopier>().CopyCakeScriptEmbeddedInAssembly(Assembly.GetExecutingAssembly(), BuildCake.Standard, DoNotPullFolder, errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            TargetRunner.RunBuildCakeScript(BuildCake.Standard, DoNotPullFolder, "CleanRestorePull", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsTrue(vSut.IsBranchAheadOfMaster(DoNotPullFolder.Folder()));
        }
Exemple #3
0
        public void Initialize()
        {
            vContainer    = new ContainerBuilder().UseGittyAndPegh(new DummyCsArgumentPrompter()).UseGittyTestUtilities().Build();
            vGitUtilities = vContainer.Resolve <IGitUtilities>();
            var checkOutFolder = new Folder(Path.GetTempPath()).SubFolder("AspenlaubTemp").SubFolder(nameof(GitHubUtilitiesTest));

            MasterFolder      = checkOutFolder.SubFolder("PakledCore-Master");
            DevelopmentFolder = checkOutFolder.SubFolder("PakledCore-Development");

            CleanUp();
            var errorsAndInfos = new ErrorsAndInfos();

            CloneRepository(MasterFolder, "master", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            CloneRepository(DevelopmentFolder, "do-not-pull-from-me", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
        }
Exemple #4
0
        public void CanCallScriptAgainstAlternativeTarget()
        {
            var errorsAndInfos = new ErrorsAndInfos();

            Sut.CallCake(ScriptsFolder.FullName + @"\success.cake", "AlternativeTarget", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.Errors.Any(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsTrue(errorsAndInfos.Infos.Any(i => i.Contains("This is an alternative target")));
        }
Exemple #5
0
        public void CanIdentifyUrlOwnerAndName()
        {
            var errorsAndInfos = new ErrorsAndInfos();

            vSut.IdentifyOwnerAndName(MasterFolder, out var owner, out var name, errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.AreEqual("aspenlaub", owner);
            Assert.AreEqual("PakledCore", name);
        }
Exemple #6
0
        public void CanDetermineUncommittedChanges()
        {
            var errorsAndInfos = new ErrorsAndInfos();

            vSut.VerifyThatThereAreNoUncommittedChanges(MasterFolder, errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            File.WriteAllText(MasterFolder.FullName + @"\change.cs", @"This is not a change");
            vSut.VerifyThatThereAreNoUncommittedChanges(MasterFolder, errorsAndInfos);
            Assert.IsTrue(errorsAndInfos.Errors.Any(e => e.Contains(@"change.cs")));
        }
Exemple #7
0
        public async Task CanGetManuallyUpdatedPackages()
        {
            var errorsAndInfos          = new ErrorsAndInfos();
            var secret                  = new SecretManuallyUpdatedPackages();
            var container               = new ContainerBuilder().UsePegh(new DummyCsArgumentPrompter()).Build();
            var manuallyUpdatedPackages = await container.Resolve <ISecretRepository>().GetAsync(secret, errorsAndInfos);

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsNotNull(manuallyUpdatedPackages);
        }
Exemple #8
0
        public void CanCallScriptWithoutErrors()
        {
            var errorsAndInfos = new ErrorsAndInfos();

            Sut.CallCake(ScriptsFolder.FullName + @"\success.cake", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.Errors.Any(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsTrue(errorsAndInfos.Infos.Any(m => m.Contains(@"Task")));
            Assert.IsTrue(errorsAndInfos.Infos.Any(m => m.Contains(@"Duration")));
            Assert.IsTrue(errorsAndInfos.Infos.Any(m => m.Contains(@"00:00:00")));
        }
Exemple #9
0
        public void CanCallScriptWithNet5Addin()
        {
            var errorsAndInfos = new ErrorsAndInfos();

            Sut.CallCake(ScriptsFolder.FullName + @"\net5.cake", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.Errors.Any(), errorsAndInfos.ErrorsPlusRelevantInfos());
            const string constructionStatement = "Constructing a strong thing";

            Assert.IsTrue(errorsAndInfos.Infos.Contains(constructionStatement));
            Assert.AreEqual("Success", errorsAndInfos.Infos[errorsAndInfos.Infos.IndexOf(constructionStatement) + 1]);
        }
Exemple #10
0
        public void UnchangedBinariesAreNotListed()
        {
            var sut = Container.Resolve <IChangedBinariesLister>();

            Assert.IsNotNull(sut);
            var errorsAndInfos  = new ErrorsAndInfos();
            var changedBinaries = sut.ListChangedBinaries("Pegh", PreviousHeadTipIdSha, CurrentHeadTipIdSha, errorsAndInfos);

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsFalse(changedBinaries.Any());
        }
Exemple #11
0
        public async Task CanCheckHowManyPullRequestsExist()
        {
            var sut            = vContainer.Resolve <IGitHubUtilities>();
            var errorsAndInfos = new ErrorsAndInfos();

            try {
                var numberOfPullRequests = await sut.GetNumberOfPullRequestsAsync(MasterFolder, errorsAndInfos);

                Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
                Assert.IsTrue(numberOfPullRequests > 0);
            } catch (WebException) {
            }
        }
Exemple #12
0
        public void Initialize()
        {
            vSut = vContainer.Resolve <IGitUtilities>();
            var checkOutFolder = new Folder(Path.GetTempPath()).SubFolder("AspenlaubTemp").SubFolder(nameof(GitUtilitiesTest));

            DevelopmentFolder = checkOutFolder.SubFolder("PakledCore-Development");
            MasterFolder      = checkOutFolder.SubFolder("PakledCore-Master");
            NoGitFolder       = checkOutFolder.SubFolder("NoGit");
            DoNotPullFolder.Delete();

            CleanUp();
            var errorsAndInfos = new ErrorsAndInfos();

            CloneRepository(MasterFolder, "master", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            CloneRepository(DevelopmentFolder, "development", errorsAndInfos);
            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            if (!NoGitFolder.Exists())
            {
                Directory.CreateDirectory(NoGitFolder.FullName);
            }
        }
        public void BuildCakeUsesRightPackageVersion()
        {
            var version = typeof(INugetPackageUpdater).Assembly.GetName().Version;

            Assert.IsNotNull(version);
            Assert.IsTrue(version.ToString().StartsWith("2.0."));
            var errorsAndInfos = new ErrorsAndInfos();
            var buildCake      = vContainer.Resolve <IEmbeddedCakeScriptReader>().ReadCakeScriptFromAssembly(Assembly.GetExecutingAssembly(), BuildCake.Standard, errorsAndInfos).Split("\n");

            Assert.IsFalse(errorsAndInfos.Errors.Any(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.IsTrue(buildCake.Any(s => s.Contains("Fusion") & s.Contains($"version={version}")),
                          $"Build cake does not use Fusion version {version}");
        }
Exemple #14
0
        public void CanListChangedBinaries()
        {
            var sut = Container.Resolve <IChangedBinariesLister>();

            Assert.IsNotNull(sut);
            var errorsAndInfos  = new ErrorsAndInfos();
            var changedBinaries = sut.ListChangedBinaries("Pegh", BeforeMajorChangeHeadTipSha, CurrentHeadTipIdSha, errorsAndInfos);

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            Assert.AreEqual(3, changedBinaries.Count);
            Assert.IsTrue(changedBinaries.Any(c => c.FileName == "Aspenlaub.Net.GitHub.CSharp.Pegh.dll"));
            Assert.IsTrue(changedBinaries.Any(c => c.FileName == "Aspenlaub.Net.GitHub.CSharp.Pegh.pdb"));
            Assert.IsTrue(changedBinaries.Any(c => c.FileName == "Aspenlaub.Net.GitHub.CSharp.Pegh.deps.json"));
        }
Exemple #15
0
        public async Task CanListAndCopyChangedBinaries()
        {
            var lister          = Container.Resolve <IChangedBinariesLister>();
            var errorsAndInfos  = new ErrorsAndInfos();
            var changedBinaries = lister.ListChangedBinaries(RepositoryId, BeforeMajorChangeHeadTipSha, CurrentHeadTipIdSha, errorsAndInfos);

            Assert.AreEqual(3, changedBinaries.Count);
            var sourceFolder = WorkFolder.SubFolder("Source");

            sourceFolder.CreateIfNecessary();
            var destinationFolder = WorkFolder.SubFolder("Destination");

            destinationFolder.CreateIfNecessary();
            foreach (var changedBinary in changedBinaries)
            {
                await File.WriteAllTextAsync(sourceFolder.FullName + '\\' + changedBinary.FileName, changedBinary.FileName);

                await File.WriteAllTextAsync(destinationFolder.FullName + '\\' + changedBinary.FileName, "Old " + changedBinary.FileName);

                await File.WriteAllTextAsync(destinationFolder.FullName + @"\Unchanged" + changedBinary.FileName, "Unchanged " + changedBinary.FileName);
            }
            await File.WriteAllTextAsync(sourceFolder.FullName + @"\SomeNewFile.txt", "SomeNewFile");

            var sut = Container.Resolve <IFolderUpdater>();
            await sut.UpdateFolderAsync(RepositoryId, BeforeMajorChangeHeadTipSha, sourceFolder, CurrentHeadTipIdSha, destinationFolder, true, true, "aspenlaub.local", errorsAndInfos);

            Assert.IsFalse(errorsAndInfos.AnyErrors(), errorsAndInfos.ErrorsPlusRelevantInfos());
            foreach (var changedBinary in changedBinaries)
            {
                Assert.AreEqual(changedBinary.FileName, await File.ReadAllTextAsync(sourceFolder.FullName + '\\' + changedBinary.FileName));
                Assert.AreEqual(changedBinary.FileName, await File.ReadAllTextAsync(destinationFolder.FullName + '\\' + changedBinary.FileName));
                Assert.AreEqual("Unchanged " + changedBinary.FileName, await File.ReadAllTextAsync(destinationFolder.FullName + @"\Unchanged" + changedBinary.FileName));
            }
            Assert.IsTrue(File.Exists(destinationFolder.FullName + @"\SomeNewFile.txt"));
            Assert.AreEqual("SomeNewFile", await File.ReadAllTextAsync(destinationFolder.FullName + @"\SomeNewFile.txt"));
        }