diff --git a/src/Cake.Common.Tests/Fixtures/Build/TFBuildFixture.cs b/src/Cake.Common.Tests/Fixtures/Build/TFBuildFixture.cs index 44a9622341..1b10cf9389 100644 --- a/src/Cake.Common.Tests/Fixtures/Build/TFBuildFixture.cs +++ b/src/Cake.Common.Tests/Fixtures/Build/TFBuildFixture.cs @@ -4,7 +4,6 @@ using Cake.Common.Build.TFBuild; using Cake.Core; -using Cake.Core.Diagnostics; using Cake.Core.IO; using Cake.Testing; using NSubstitute; @@ -26,13 +25,17 @@ public TFBuildFixture() Log = new FakeLog(); } - public void IsRunningOnTFS() + public void IsRunningOnTFS() => IsRunningOnAzurePipelines(); + + public void IsRunningOnVSTS() => IsRunningOnAzurePipelinesHosted(); + + public void IsRunningOnAzurePipelines() { Environment.GetEnvironmentVariable("TF_BUILD").Returns("True"); Environment.GetEnvironmentVariable("AGENT_NAME").Returns("On Premises"); } - public void IsRunningOnVSTS() + public void IsRunningOnAzurePipelinesHosted() { Environment.GetEnvironmentVariable("TF_BUILD").Returns("True"); Environment.GetEnvironmentVariable("AGENT_NAME").Returns("Hosted Agent"); diff --git a/src/Cake.Common.Tests/Unit/Build/BuildSystemTests.cs b/src/Cake.Common.Tests/Unit/Build/BuildSystemTests.cs index 5f6361f648..9068f38447 100644 --- a/src/Cake.Common.Tests/Unit/Build/BuildSystemTests.cs +++ b/src/Cake.Common.Tests/Unit/Build/BuildSystemTests.cs @@ -64,7 +64,7 @@ public void Should_Throw_If_TeamCity_Is_Null() var tfBuildProvider = Substitute.For(); // When - var result = Record.Exception(() => new BuildSystem(appVeyorProvider, null, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider)); + var result = Record.Exception(() => new BuildSystem(appVeyorProvider, null, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider)); // Then AssertEx.IsArgumentNullException(result, "teamCityProvider"); @@ -87,7 +87,7 @@ public void Should_Throw_If_MyGet_Is_Null() var tfBuildProvider = Substitute.For(); // When - var result = Record.Exception(() => new BuildSystem(appVeyorProvider, teamCityProvider, null, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider)); + var result = Record.Exception(() => new BuildSystem(appVeyorProvider, teamCityProvider, null, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider)); // Then AssertEx.IsArgumentNullException(result, "myGetProvider"); @@ -110,7 +110,7 @@ public void Should_Throw_If_Bamboo_Is_Null() var tfBuildProvider = Substitute.For(); // When - var result = Record.Exception(() => new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, null, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider)); + var result = Record.Exception(() => new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, null, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider)); // Then AssertEx.IsArgumentNullException(result, "bambooProvider"); @@ -133,7 +133,7 @@ public void Should_Throw_If_ContinuaCI_Is_Null() var tfBuildProvider = Substitute.For(); // When - var result = Record.Exception(() => new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, null, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider)); + var result = Record.Exception(() => new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, null, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider)); // Then AssertEx.IsArgumentNullException(result, "continuaCIProvider"); @@ -321,7 +321,7 @@ public void Should_Return_True_If_Running_On_AppVeyor() var tfBuildProvider = Substitute.For(); appVeyorProvider.IsRunningOnAppVeyor.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnAppVeyor; @@ -351,7 +351,7 @@ public void Should_Return_True_If_Running_On_TeamCity() var tfBuildProvider = Substitute.For(); teamCityProvider.IsRunningOnTeamCity.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnTeamCity; @@ -381,7 +381,7 @@ public void Should_Return_True_If_Running_On_MyGet() var tfBuildProvider = Substitute.For(); myGetProvider.IsRunningOnMyGet.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnMyGet; @@ -411,7 +411,7 @@ public void Should_Return_True_If_Running_On_Bamboo() var tfBuildProvider = Substitute.For(); bambooProvider.IsRunningOnBamboo.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnBamboo; @@ -441,7 +441,7 @@ public void Should_Return_True_If_Running_On_ContinuaCI() var tfBuildProvider = Substitute.For(); continuaCIProvider.IsRunningOnContinuaCI.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnContinuaCI; @@ -471,7 +471,7 @@ public void Should_Return_True_If_Running_On_Jenkins() var tfBuildProvider = Substitute.For(); jenkinsProvider.IsRunningOnJenkins.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnJenkins; @@ -501,7 +501,7 @@ public void Should_Return_True_If_Running_On_Bitrise() var tfBuildProvider = Substitute.For(); bitriseProvider.IsRunningOnBitrise.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnBitrise; @@ -531,7 +531,7 @@ public void Should_Return_True_If_Running_On_TravisCI() var tfBuildProvider = Substitute.For(); travisCIProvider.IsRunningOnTravisCI.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnTravisCI; @@ -561,7 +561,7 @@ public void Should_Return_True_If_Running_On_BitbucketPipelines() var tfBuildProvider = Substitute.For(); bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnBitbucketPipelines; @@ -631,36 +631,6 @@ public void Should_Return_True_If_Running_On_GitLabCI() } } - public sealed class TheIsRunningOnVSTSProperty - { - [Fact] - public void Should_Return_True_If_Running_On_VSTS() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - tfBuildProvider.IsRunningOnVSTS.Returns(true); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - - // When - var result = buildSystem.IsRunningOnVSTS; - - // Then - Assert.True(result); - } - } - public sealed class TheIsRunningOnTFSProperty { [Fact] @@ -680,249 +650,23 @@ public void Should_Return_True_If_Running_On_TFS() var gitlabCIProvider = Substitute.For(); var tfBuildProvider = Substitute.For(); +#pragma warning disable 618 tfBuildProvider.IsRunningOnTFS.Returns(true); var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When var result = buildSystem.IsRunningOnTFS; +#pragma warning restore 618 // Then Assert.True(result); } } - public sealed class TheIsLocalBuildProperty + public sealed class TheIsRunningOnVSTSProperty { [Fact] - public void Should_Return_False_If_Running_On_AppVeyor() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(true); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - - // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_False_If_Running_On_TeamCity() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(true); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - - // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_False_If_Running_On_MyGet() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(true); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - - // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_False_If_Running_On_Bamboo() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(true); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - - // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_False_If_Running_On_ContinuaCI() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(true); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - - // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_False_If_Running_On_Jenkins() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(true); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - - // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_False_If_Running_On_Bitrise() + public void Should_Return_True_If_Running_On_VSTS() { // Given var appVeyorProvider = Substitute.For(); @@ -938,29 +682,23 @@ public void Should_Return_False_If_Running_On_Bitrise() var gitlabCIProvider = Substitute.For(); var tfBuildProvider = Substitute.For(); - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(true); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); +#pragma warning disable 618 + tfBuildProvider.IsRunningOnVSTS.Returns(true); var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When - var result = buildSystem.IsLocalBuild; + var result = buildSystem.IsRunningOnVSTS; +#pragma warning restore 618 // Then - Assert.False(result); + Assert.True(result); } + } + public sealed class TheIsRunningOnAzurePipelinesProperty + { [Fact] - public void Should_Return_False_If_Running_On_TravisCI() + public void Should_Return_True_If_Running_On_AzurePipelines() { // Given var appVeyorProvider = Substitute.For(); @@ -976,29 +714,21 @@ public void Should_Return_False_If_Running_On_TravisCI() var gitlabCIProvider = Substitute.For(); var tfBuildProvider = Substitute.For(); - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(true); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); + tfBuildProvider.IsRunningOnAzurePipelines.Returns(true); var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When - var result = buildSystem.IsLocalBuild; + var result = buildSystem.IsRunningOnAzurePipelines; // Then - Assert.False(result); + Assert.True(result); } + } + public sealed class TheIsRunningOnAzurePipelinesHostedProperty + { [Fact] - public void Should_Return_False_If_Running_On_BitbucketPipelines() + public void Should_Return_True_If_Running_On_AzurePipelinesHosted() { // Given var appVeyorProvider = Substitute.For(); @@ -1014,29 +744,37 @@ public void Should_Return_False_If_Running_On_BitbucketPipelines() var gitlabCIProvider = Substitute.For(); var tfBuildProvider = Substitute.For(); - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(true); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); + tfBuildProvider.IsRunningOnAzurePipelinesHosted.Returns(true); var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); // When - var result = buildSystem.IsLocalBuild; + var result = buildSystem.IsRunningOnAzurePipelinesHosted; // Then - Assert.False(result); + Assert.True(result); } + } - [Fact] - public void Should_Return_False_If_Running_On_GoCD() + public sealed class TheProviderProperty + { + [Theory] + [InlineData(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, BuildProvider.Local)] + [InlineData(true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, BuildProvider.AppVeyor)] + [InlineData(false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, BuildProvider.TeamCity)] + [InlineData(false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, BuildProvider.MyGet)] + [InlineData(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, BuildProvider.Bamboo)] + [InlineData(false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, BuildProvider.ContinuaCI)] + [InlineData(false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, BuildProvider.Jenkins)] + [InlineData(false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, BuildProvider.Bitrise)] + [InlineData(false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, BuildProvider.TravisCI)] + [InlineData(false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, BuildProvider.BitbucketPipelines)] + [InlineData(false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, BuildProvider.GoCD)] + [InlineData(false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, BuildProvider.GitLabCI)] + [InlineData(false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, BuildProvider.AzurePipelines)] // tfs + [InlineData(false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, BuildProvider.AzurePipelinesHosted)] // vsts + [InlineData(false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, BuildProvider.AzurePipelines)] + [InlineData(false, false, false, false, false, false, false, false, false, false, false, true, false, false, true, BuildProvider.AzurePipelinesHosted)] + public void Should_Return_Provider_If_Running_On_Provider(bool appVeyor, bool teamCity, bool myGet, bool bamboo, bool continuaCI, bool jenkins, bool bitrise, bool travisCI, bool bitbucketPipelines, bool goCD, bool gitlabCI, bool tfs, bool vsts, bool azurePipelines, bool azurePipelinesHosted, BuildProvider provider) { // Given var appVeyorProvider = Substitute.For(); @@ -1052,69 +790,52 @@ public void Should_Return_False_If_Running_On_GoCD() var gitlabCIProvider = Substitute.For(); var tfBuildProvider = Substitute.For(); - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - goCDProvider.IsRunningOnGoCD.Returns(true); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + appVeyorProvider.IsRunningOnAppVeyor.Returns(appVeyor); + teamCityProvider.IsRunningOnTeamCity.Returns(teamCity); + myGetProvider.IsRunningOnMyGet.Returns(myGet); + bambooProvider.IsRunningOnBamboo.Returns(bamboo); + continuaCIProvider.IsRunningOnContinuaCI.Returns(continuaCI); + jenkinsProvider.IsRunningOnJenkins.Returns(jenkins); + bitriseProvider.IsRunningOnBitrise.Returns(bitrise); + travisCIProvider.IsRunningOnTravisCI.Returns(travisCI); + bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(bitbucketPipelines); + goCDProvider.IsRunningOnGoCD.Returns(goCD); + gitlabCIProvider.IsRunningOnGitLabCI.Returns(gitlabCI); +#pragma warning disable 618 + tfBuildProvider.IsRunningOnTFS.Returns(tfs); + tfBuildProvider.IsRunningOnVSTS.Returns(vsts); +#pragma warning restore 618 + tfBuildProvider.IsRunningOnAzurePipelines.Returns(azurePipelines); + tfBuildProvider.IsRunningOnAzurePipelinesHosted.Returns(azurePipelinesHosted); // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_False_If_Running_On_GitLabCI() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - goCDProvider.IsRunningOnGoCD.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(true); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - // When - var result = buildSystem.IsLocalBuild; - // Then - Assert.False(result); + Assert.Equal(provider, buildSystem.Provider); } + } - [Fact] - public void Should_Return_False_If_Running_On_VSTS() + public sealed class TheIsLocalBuildProperty + { + [Theory] + [InlineData(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true)] + [InlineData(true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false)] + [InlineData(false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false)] + [InlineData(false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false)] + [InlineData(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false)] + [InlineData(false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false)] + [InlineData(false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false)] + [InlineData(false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false)] + [InlineData(false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false)] + [InlineData(false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false)] + [InlineData(false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false)] + [InlineData(false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false)] + [InlineData(false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false)] // tfs + [InlineData(false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false)] // vsts + [InlineData(false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false)] + [InlineData(false, false, false, false, false, false, false, false, false, false, false, true, false, false, true, false)] + public void Should_Return_False_If_Running_On_Provider(bool appVeyor, bool teamCity, bool myGet, bool bamboo, bool continuaCI, bool jenkins, bool bitrise, bool travisCI, bool bitbucketPipelines, bool goCD, bool gitlabCI, bool tfs, bool vsts, bool azurePipelines, bool azurePipelinesHosted, bool isLocalBuild) { // Given var appVeyorProvider = Substitute.For(); @@ -1130,103 +851,29 @@ public void Should_Return_False_If_Running_On_VSTS() var gitlabCIProvider = Substitute.For(); var tfBuildProvider = Substitute.For(); - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - goCDProvider.IsRunningOnGoCD.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(true); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); + appVeyorProvider.IsRunningOnAppVeyor.Returns(appVeyor); + teamCityProvider.IsRunningOnTeamCity.Returns(teamCity); + myGetProvider.IsRunningOnMyGet.Returns(myGet); + bambooProvider.IsRunningOnBamboo.Returns(bamboo); + continuaCIProvider.IsRunningOnContinuaCI.Returns(continuaCI); + jenkinsProvider.IsRunningOnJenkins.Returns(jenkins); + bitriseProvider.IsRunningOnBitrise.Returns(bitrise); + travisCIProvider.IsRunningOnTravisCI.Returns(travisCI); + bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(bitbucketPipelines); + goCDProvider.IsRunningOnGoCD.Returns(goCD); + gitlabCIProvider.IsRunningOnGitLabCI.Returns(gitlabCI); +#pragma warning disable 618 + tfBuildProvider.IsRunningOnTFS.Returns(tfs); + tfBuildProvider.IsRunningOnVSTS.Returns(vsts); +#pragma warning restore 618 + tfBuildProvider.IsRunningOnAzurePipelines.Returns(azurePipelines); + tfBuildProvider.IsRunningOnAzurePipelinesHosted.Returns(azurePipelinesHosted); // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_False_If_Running_On_TFS() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - jenkinsProvider.IsRunningOnJenkins.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - goCDProvider.IsRunningOnGoCD.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(true); var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - // When - var result = buildSystem.IsLocalBuild; - - // Then - Assert.False(result); - } - - [Fact] - public void Should_Return_True_If_Not_Running_On_Any() - { - // Given - var appVeyorProvider = Substitute.For(); - var teamCityProvider = Substitute.For(); - var myGetProvider = Substitute.For(); - var bambooProvider = Substitute.For(); - var continuaCIProvider = Substitute.For(); - var jenkinsProvider = Substitute.For(); - var bitriseProvider = Substitute.For(); - var travisCIProvider = Substitute.For(); - var bitbucketPipelinesProvider = Substitute.For(); - var goCDProvider = Substitute.For(); - var gitlabCIProvider = Substitute.For(); - var tfBuildProvider = Substitute.For(); - - appVeyorProvider.IsRunningOnAppVeyor.Returns(false); - teamCityProvider.IsRunningOnTeamCity.Returns(false); - myGetProvider.IsRunningOnMyGet.Returns(false); - bambooProvider.IsRunningOnBamboo.Returns(false); - continuaCIProvider.IsRunningOnContinuaCI.Returns(false); - bitriseProvider.IsRunningOnBitrise.Returns(false); - travisCIProvider.IsRunningOnTravisCI.Returns(false); - bitbucketPipelinesProvider.IsRunningOnBitbucketPipelines.Returns(false); - goCDProvider.IsRunningOnGoCD.Returns(false); - gitlabCIProvider.IsRunningOnGitLabCI.Returns(false); - tfBuildProvider.IsRunningOnVSTS.Returns(false); - tfBuildProvider.IsRunningOnTFS.Returns(false); - var buildSystem = new BuildSystem(appVeyorProvider, teamCityProvider, myGetProvider, bambooProvider, continuaCIProvider, jenkinsProvider, bitriseProvider, travisCIProvider, bitbucketPipelinesProvider, goCDProvider, gitlabCIProvider, tfBuildProvider); - - // When - var result = buildSystem.IsLocalBuild; - // Then - Assert.True(result); + Assert.Equal(isLocalBuild, buildSystem.IsLocalBuild); } } } diff --git a/src/Cake.Common.Tests/Unit/Build/TFBuild/TFBuildProviderTests.cs b/src/Cake.Common.Tests/Unit/Build/TFBuild/TFBuildProviderTests.cs index 5bd1937a53..1aa2c39ba1 100644 --- a/src/Cake.Common.Tests/Unit/Build/TFBuild/TFBuildProviderTests.cs +++ b/src/Cake.Common.Tests/Unit/Build/TFBuild/TFBuildProviderTests.cs @@ -36,6 +36,42 @@ public void Should_Throw_If_Log_Is_Null() } } + public sealed class TheIsRunningOnTFSProperty + { + [Fact] + public void Should_Return_True_If_Running_On_TFS() + { + // Given + var fixture = new TFBuildFixture(); + fixture.IsRunningOnTFS(); + var tfBuild = fixture.CreateTFBuildService(); + + // When +#pragma warning disable 618 + var result = tfBuild.IsRunningOnTFS; +#pragma warning restore 618 + + // Then + Assert.True(result); + } + + [Fact] + public void Should_Return_False_If_Not_Running_On_TFS() + { + // Given + var fixture = new TFBuildFixture(); + var tfBuild = fixture.CreateTFBuildService(); + + // When +#pragma warning disable 618 + var result = tfBuild.IsRunningOnTFS; +#pragma warning restore 618 + + // Then + Assert.False(result); + } + } + public sealed class TheIsRunningOnVSTSProperty { [Fact] @@ -44,10 +80,12 @@ public void Should_Return_True_If_Running_On_VSTS() // Given var fixture = new TFBuildFixture(); fixture.IsRunningOnVSTS(); - var vsts = fixture.CreateTFBuildService(); + var tfBuild = fixture.CreateTFBuildService(); // When - var result = vsts.IsRunningOnVSTS; +#pragma warning disable 618 + var result = tfBuild.IsRunningOnVSTS; +#pragma warning restore 618 // Then Assert.True(result); @@ -58,42 +96,76 @@ public void Should_Return_False_If_Not_Running_On_VSTS() { // Given var fixture = new TFBuildFixture(); - var vsts = fixture.CreateTFBuildService(); + var tfBuild = fixture.CreateTFBuildService(); // When - var result = vsts.IsRunningOnVSTS; +#pragma warning disable 618 + var result = tfBuild.IsRunningOnVSTS; +#pragma warning restore 618 // Then Assert.False(result); } } - public sealed class TheIsRunningOnTFSProperty + public sealed class TheIsRunningOnAzurePipelinesProperty { [Fact] - public void Should_Return_True_If_Running_On_TFS() + public void Should_Return_True_If_Running_On_AzurePipelines() { // Given var fixture = new TFBuildFixture(); - fixture.IsRunningOnTFS(); - var vsts = fixture.CreateTFBuildService(); + fixture.IsRunningOnAzurePipelines(); + var tfBuild = fixture.CreateTFBuildService(); // When - var result = vsts.IsRunningOnTFS; + var result = tfBuild.IsRunningOnAzurePipelines; // Then Assert.True(result); } [Fact] - public void Should_Return_False_If_Not_Running_On_TFS() + public void Should_Return_False_If_Not_Running_On_AzurePipelines() + { + // Given + var fixture = new TFBuildFixture(); + var tfBuild = fixture.CreateTFBuildService(); + + // When + var result = tfBuild.IsRunningOnAzurePipelines; + + // Then + Assert.False(result); + } + } + + public sealed class TheIsRunningOnAzurePipelinesHostedProperty + { + [Fact] + public void Should_Return_True_If_Running_On_AzurePipelinesHosted() + { + // Given + var fixture = new TFBuildFixture(); + fixture.IsRunningOnAzurePipelinesHosted(); + var tfBuild = fixture.CreateTFBuildService(); + + // When + var result = tfBuild.IsRunningOnAzurePipelinesHosted; + + // Then + Assert.True(result); + } + + [Fact] + public void Should_Return_False_If_Not_Running_On_AzurePipelinesHosted() { // Given var fixture = new TFBuildFixture(); - var vsts = fixture.CreateTFBuildService(); + var tfBuild = fixture.CreateTFBuildService(); // When - var result = vsts.IsRunningOnTFS; + var result = tfBuild.IsRunningOnAzurePipelinesHosted; // Then Assert.False(result); @@ -107,10 +179,10 @@ public void Should_Return_Non_Null_Reference() { // Given var fixture = new TFBuildFixture(); - var vsts = fixture.CreateTFBuildService(); + var tfBuild = fixture.CreateTFBuildService(); // When - var result = vsts.Environment; + var result = tfBuild.Environment; // Then Assert.NotNull(result); diff --git a/src/Cake.Common/Build/BuildProvider.cs b/src/Cake.Common/Build/BuildProvider.cs new file mode 100644 index 0000000000..f4c5f2b538 --- /dev/null +++ b/src/Cake.Common/Build/BuildProvider.cs @@ -0,0 +1,85 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace Cake.Common.Build +{ + /// + /// Represents a build provider. + /// + [Flags] + public enum BuildProvider + { + /// + /// Local build provider. + /// + Local = 0, + + /// + /// AppVeyor build provider. + /// + AppVeyor = 1, + + /// + /// TeamCity build provider. + /// + TeamCity = 2, + + /// + /// MyGet build provider. + /// + MyGet = 4, + + /// + /// Bamboo build provider. + /// + Bamboo = 8, + + /// + /// ContinuaCI build provider. + /// + ContinuaCI = 16, + + /// + /// Jenkins build provider. + /// + Jenkins = 32, + + /// + /// Bitrise build provider. + /// + Bitrise = 64, + + /// + /// TravisCI build provider. + /// + TravisCI = 128, + + /// + /// BitbucketPipelines build provider. + /// + BitbucketPipelines = 256, + + /// + /// GoCD build provider. + /// + GoCD = 512, + + /// + /// GitLabCI build provider. + /// + GitLabCI = 1024, + + /// + /// AzurePipelines build provider. + /// + AzurePipelines = 2048, + + /// + /// AzurePipelinesHosted build provider. + /// + AzurePipelinesHosted = 4096 + } +} \ No newline at end of file diff --git a/src/Cake.Common/Build/BuildSystem.cs b/src/Cake.Common/Build/BuildSystem.cs index c83ade787b..56a64bc9ea 100644 --- a/src/Cake.Common/Build/BuildSystem.cs +++ b/src/Cake.Common/Build/BuildSystem.cs @@ -114,6 +114,22 @@ public BuildSystem( GoCD = goCDProvider; GitLabCI = gitlabCIProvider; TFBuild = tfBuildProvider; + + Provider = (AppVeyor.IsRunningOnAppVeyor ? BuildProvider.AppVeyor : BuildProvider.Local) + | (TeamCity.IsRunningOnTeamCity ? BuildProvider.TeamCity : BuildProvider.Local) + | (MyGet.IsRunningOnMyGet ? BuildProvider.MyGet : BuildProvider.Local) + | (Bamboo.IsRunningOnBamboo ? BuildProvider.Bamboo : BuildProvider.Local) + | (ContinuaCI.IsRunningOnContinuaCI ? BuildProvider.ContinuaCI : BuildProvider.Local) + | (Jenkins.IsRunningOnJenkins ? BuildProvider.Jenkins : BuildProvider.Local) + | (Bitrise.IsRunningOnBitrise ? BuildProvider.Bitrise : BuildProvider.Local) + | (TravisCI.IsRunningOnTravisCI ? BuildProvider.TravisCI : BuildProvider.Local) + | (BitbucketPipelines.IsRunningOnBitbucketPipelines ? BuildProvider.BitbucketPipelines : BuildProvider.Local) + | (GoCD.IsRunningOnGoCD ? BuildProvider.GoCD : BuildProvider.Local) + | (GitLabCI.IsRunningOnGitLabCI ? BuildProvider.GitLabCI : BuildProvider.Local) + | (TFBuild.IsRunningOnAzurePipelines ? BuildProvider.AzurePipelines : BuildProvider.Local) + | (TFBuild.IsRunningOnAzurePipelinesHosted ? BuildProvider.AzurePipelinesHosted : BuildProvider.Local); + + IsLocalBuild = Provider == BuildProvider.Local; } /// @@ -463,6 +479,24 @@ public BuildSystem( /// public bool IsRunningOnGitLabCI => GitLabCI.IsRunningOnGitLabCI; + /// + /// Gets a value indicating whether this instance is running on TFS. + /// + /// + /// + /// if(BuildSystem.IsRunningOnTFS) + /// { + /// // Get the build commit hash. + /// var commitHash = BuildSystem.TFBuild.Environment.Repository.SourceVersion; + /// } + /// + /// + /// + /// true if this instance is running on TFS; otherwise, false. + /// + [Obsolete("Please use BuildSystem.IsRunningOnAzurePipelines instead.")] + public bool IsRunningOnTFS => TFBuild.IsRunningOnTFS; + /// /// Gets a value indicating whether this instance is running on VSTS. /// @@ -478,14 +512,15 @@ public BuildSystem( /// /// true if this instance is running on VSTS; otherwise, false. /// + [Obsolete("Please use BuildSystem.IsRunningOnAzurePipelinesHosted instead.")] public bool IsRunningOnVSTS => TFBuild.IsRunningOnVSTS; /// - /// Gets a value indicating whether this instance is running on TFS. + /// Gets a value indicating whether this instance is running on Azure Pipelines. /// /// /// - /// if(BuildSystem.IsRunningOnTFS) + /// if(BuildSystem.IsRunningOnAzurePipelines) /// { /// // Get the build commit hash. /// var commitHash = BuildSystem.TFBuild.Environment.Repository.SourceVersion; @@ -493,9 +528,26 @@ public BuildSystem( /// /// /// - /// true if this instance is running on TFS; otherwise, false. + /// true if this instance is running on Azure Pipelines; otherwise, false. /// - public bool IsRunningOnTFS => TFBuild.IsRunningOnTFS; + public bool IsRunningOnAzurePipelines => TFBuild.IsRunningOnAzurePipelines; + + /// + /// Gets a value indicating whether this instance is running on hosted Azure Pipelines. + /// + /// + /// + /// if(BuildSystem.IsRunningOnAzurePipelinesHosted) + /// { + /// // Get the build commit hash. + /// var commitHash = BuildSystem.TFBuild.Environment.Repository.SourceVersion; + /// } + /// + /// + /// + /// true if this instance is running on hosted Azure Pipelines; otherwise, false. + /// + public bool IsRunningOnAzurePipelinesHosted => TFBuild.IsRunningOnAzurePipelinesHosted; /// /// Gets the TF Build Provider. @@ -511,6 +563,12 @@ public BuildSystem( /// public ITFBuildProvider TFBuild { get; } + /// + /// Gets the current build provider. + /// + /// The current build provider. + public BuildProvider Provider { get; } + /// /// Gets a value indicating whether the current build is local build. /// @@ -530,6 +588,6 @@ public BuildSystem( /// /// true if the current build is local build; otherwise, false. /// - public bool IsLocalBuild => !(IsRunningOnAppVeyor || IsRunningOnTeamCity || IsRunningOnMyGet || IsRunningOnBamboo || IsRunningOnContinuaCI || IsRunningOnJenkins || IsRunningOnBitrise || IsRunningOnTravisCI || IsRunningOnBitbucketPipelines || IsRunningOnGoCD || IsRunningOnGitLabCI || IsRunningOnTFS || IsRunningOnVSTS); + public bool IsLocalBuild { get; } } } \ No newline at end of file diff --git a/src/Cake.Common/Build/TFBuild/ITFBuildProvider.cs b/src/Cake.Common/Build/TFBuild/ITFBuildProvider.cs index 055b434804..b867d93d44 100644 --- a/src/Cake.Common/Build/TFBuild/ITFBuildProvider.cs +++ b/src/Cake.Common/Build/TFBuild/ITFBuildProvider.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Cake.Common.Build.TFBuild.Data; namespace Cake.Common.Build.TFBuild @@ -11,21 +12,39 @@ namespace Cake.Common.Build.TFBuild /// public interface ITFBuildProvider { + /// + /// Gets a value indicating whether the current build is running on TFS. + /// + /// + /// true if the current build is running on TFS; otherwise, false. + /// + [Obsolete("Please use ITFBuildProvider.IsRunningOnAzurePipelines instead.")] + bool IsRunningOnTFS { get; } + /// /// Gets a value indicating whether the current build is running on VSTS. /// /// /// true if the current build is running on VSTS; otherwise, false. /// + [Obsolete("Please use ITFBuildProvider.IsRunningOnAzurePipelinesHosted instead.")] bool IsRunningOnVSTS { get; } /// - /// Gets a value indicating whether the current build is running on TFS. + /// Gets a value indicating whether the current build is running on Azure Pipelines. /// /// - /// true if the current build is running on TFS; otherwise, false. + /// true if the current build is running on Azure Pipelines; otherwise, false. /// - bool IsRunningOnTFS { get; } + bool IsRunningOnAzurePipelines { get; } + + /// + /// Gets a value indicating whether the current build is running on hosted Azure Pipelines. + /// + /// + /// true if the current build is running on hosted Azure Pipelines; otherwise, false. + /// + bool IsRunningOnAzurePipelinesHosted { get; } /// /// Gets the TF Build environment. diff --git a/src/Cake.Common/Build/TFBuild/TFBuildProvider.cs b/src/Cake.Common/Build/TFBuild/TFBuildProvider.cs index d199025585..446e348271 100644 --- a/src/Cake.Common/Build/TFBuild/TFBuildProvider.cs +++ b/src/Cake.Common/Build/TFBuild/TFBuildProvider.cs @@ -36,24 +36,42 @@ public TFBuildProvider(ICakeEnvironment environment, ICakeLog log) Commands = new TFBuildCommands(environment, log); } + /// + /// Gets a value indicating whether the current build is running on TFS. + /// + /// + /// true if the current build is running on TFS; otherwise, false. + /// + [Obsolete("Please use TFBuildProvider.IsRunningOnAzurePipelines instead.")] + public bool IsRunningOnTFS => IsRunningOnAzurePipelines; + /// /// Gets a value indicating whether the current build is running on VSTS. /// /// /// true if the current build is running on VSTS; otherwise, false. /// - public bool IsRunningOnVSTS - => !string.IsNullOrWhiteSpace(_environment.GetEnvironmentVariable("TF_BUILD")) && IsHostedAgent; + [Obsolete("Please use TFBuildProvider.IsRunningOnAzurePipelinesHosted instead.")] + public bool IsRunningOnVSTS => IsRunningOnAzurePipelinesHosted; /// - /// Gets a value indicating whether the current build is running on TFS. + /// Gets a value indicating whether the current build is running on Azure Pipelines. /// /// - /// true if the current build is running on TFS; otherwise, false. + /// true if the current build is running on Azure Pipelines; otherwise, false. /// - public bool IsRunningOnTFS + public bool IsRunningOnAzurePipelines => !string.IsNullOrWhiteSpace(_environment.GetEnvironmentVariable("TF_BUILD")) && !IsHostedAgent; + /// + /// Gets a value indicating whether the current build is running on hosted Azure Pipelines. + /// + /// + /// true if the current build is running on hosted Azure Pipelines; otherwise, false. + /// + public bool IsRunningOnAzurePipelinesHosted + => !string.IsNullOrWhiteSpace(_environment.GetEnvironmentVariable("TF_BUILD")) && IsHostedAgent; + /// /// Gets the TF Build environment. /// diff --git a/src/Cake.sln.DotSettings b/src/Cake.sln.DotSettings index a94025e4fe..0d2a3b4d22 100644 --- a/src/Cake.sln.DotSettings +++ b/src/Cake.sln.DotSettings @@ -23,6 +23,7 @@ NEVER LINE_BREAK True + CI CI CLS DNU @@ -54,7 +55,9 @@ True True True + True True + True True True True