public void ShouldReadOnlyMatrixVariables() { const string yaml = @" environment: matrix: - db: mysql password: mysql_password - db: sqlserver password: secure: sqlserver_secured_password "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); conf.EnvironmentVariables.CommonVariables.Should().BeEmpty(); conf.EnvironmentVariables.Should().BeEquivalentTo( new EnvironmentVariables( null, new List <ReadOnlyCollection <Variable> > { new ReadOnlyCollection <Variable>(new List <Variable> { new Variable("db", "mysql", false), new Variable("password", "mysql_password", false) }), new ReadOnlyCollection <Variable>(new List <Variable> { new Variable("db", "sqlserver", false), new Variable("password", "sqlserver_secured_password", true) }) })); }
public void ShouldReadBuildScriptAsAScriptBlockWithSplittedLinesScripts_AlternativeBlockStylePowershell() { const string yaml = @" build_script: - ps: |- echo -------------------------------------------------------------------------------- echo Build tinyformat mkdir build cd build cmake -G ""%COMPILER%"" .. cmake --build . --config %CONFIGURATION% "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); Assert.Single(conf.BuildScript); Assert.Equal("echo --------------------------------------------------------------------------------\n" + "echo Build tinyformat\n" + "mkdir build\n" + "cd build\n" + "cmake -G \"%COMPILER%\" ..\n" + "cmake --build . --config %CONFIGURATION%", conf.BuildScript[0].Script); Assert.Equal(ScriptType.PowerShell, conf.BuildScript[0].ScriptType); }
public void Windows_ShouldReadBuildScriptAsAScriptBlockWithMultipleDifferentTypeScripts() { const string yaml = @" build_script: # by default, all script lines are interpreted as batch - echo This is batch # to run script as a PowerShell command prepend it with ps: - ps: Write-Host 'This is PowerShell' # batch commands start from cmd: - cmd: echo This is batch again - cmd: set MY_VAR=12345 "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); Assert.Equal(4, conf.BuildScript.Count); Assert.Equal("echo This is batch", conf.BuildScript[0].Script); Assert.Equal(ScriptType.Batch, conf.BuildScript[0].ScriptType); Assert.Equal("Write-Host 'This is PowerShell'", conf.BuildScript[1].Script); Assert.Equal(ScriptType.PowerShell, conf.BuildScript[1].ScriptType); Assert.Equal("echo This is batch again", conf.BuildScript[2].Script); Assert.Equal(ScriptType.Batch, conf.BuildScript[2].ScriptType); Assert.Equal("set MY_VAR=12345", conf.BuildScript[3].Script); Assert.Equal(ScriptType.Batch, conf.BuildScript[3].ScriptType); }
public void MatrixShouldHaveDefaultValuesWhenNotSpecified() { var conf = new BuildConfigurationYamlStringReader(string.Empty).GetBuildConfiguration(); conf.Matrix.ShouldBeEquivalentTo(new Matrix()); conf.Matrix.IsFastFinish.Should().BeFalse(); conf.Matrix.AllowedFailures.Should().BeEmpty(); }
public void ShouldReadNoEnvironmentButPropertiesShouldNotBeNullOnlyEmpty() { var conf = new BuildConfigurationYamlStringReader("").GetBuildConfiguration(); conf.EnvironmentVariables.Should().NotBeNull(); conf.EnvironmentVariables.CommonVariables.Should().BeEmpty(); conf.EnvironmentVariables.Matrix.Should().BeEmpty(); }
public void ShouldGracefullyReadAnInvalidScriptBlock_AndMakeItAnEmptyScript() { const string yaml = @" build_script: true; "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); Assert.Empty(conf.BuildScript); }
public void ShouldBePatchFalseForAssemblyInfoWhenNotSpecified() { var conf = new BuildConfigurationYamlStringReader(string.Empty).GetBuildConfiguration(); conf.AssemblyInfo.Should().BeEquivalentTo(new AssemblyInfo()); conf.AssemblyInfo.Should().BeEquivalentTo(new AssemblyInfo( false, null, null, null, null)); }
public void MatrixShouldHaveFastFinishAsTrueAndEmptyAllowedFailures() { const string yaml = @" matrix: fast_finish: true "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); conf.Matrix.ShouldBeEquivalentTo(new Matrix( true, new AllowedJobFailureConditions[0])); conf.Matrix.IsFastFinish.Should().BeTrue(); conf.Matrix.AllowedFailures.Should().BeEmpty(); }
public void ShouldExpandCloneFolderWithVersionAndBuildNumber() { Environment.SetEnvironmentVariable("APPVEYOR_BUILD_BUILD", "0"); Environment.SetEnvironmentVariable("APPVEYOR_BUILD_VERSION", "1.0.0-0"); const string yaml = @" version: 1.0.0-{build} clone_folder: c:\folder\with\version_{version}_here "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); conf.Version.Should().Be("1.0.0-0"); conf.CloneFolder.Should().Be(@"c:\folder\with\version_1.0.0-0_here"); }
public void AllowFailuresSectionShouldBeEmpty() { const string yaml = @" matrix: "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); conf.Matrix.ShouldBeEquivalentTo(new Matrix( false, new AllowedJobFailureConditions[0])); conf.Matrix.IsFastFinish.Should().BeFalse(); conf.Matrix.AllowedFailures.Should().BeEmpty(); }
public void ShouldReadAssemblyInfoStep() { const string yaml = @" assembly_info: patch: true file: AssemblyInfo.* assembly_version: ""2.2.{build}"" assembly_file_version: ""{version}"" assembly_informational_version: ""{version}"" "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); conf.AssemblyInfo.Should().BeEquivalentTo(new AssemblyInfo( true, "AssemblyInfo.*", "2.2.{build}", "{version}", "{version}")); }
public void ShouldExpandVariableValueWhenUsed() { Environment.SetEnvironmentVariable("ENV_VAR", "my env value"); const string yaml = @" environment: common_var1: common_value1 $(ENV_VAR) "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); conf.EnvironmentVariables.ShouldBeEquivalentTo( new EnvironmentVariables( new List <Variable> { new Variable("common_var1", "common_value1 $(ENV_VAR)", false) })); conf.EnvironmentVariables.CommonVariables[0].Value.Should().Be("common_value1 my env value"); conf.EnvironmentVariables.Matrix.Should().BeEmpty(); }
public void ShouldReadCommonVariablesInsideGlobal() { const string yaml = @" environment: global: common_var1: common_value1 common_var2: secure: common_value2_secured matrix: - db: mysql password: mysql_password - db: sqlserver password: secure: sqlserver_secured_password "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); conf.EnvironmentVariables.Should().BeEquivalentTo( new EnvironmentVariables( new List <Variable> { new Variable("common_var1", "common_value1", false), new Variable("common_var2", "common_value2_secured", true) }, new List <ReadOnlyCollection <Variable> > { new ReadOnlyCollection <Variable>(new List <Variable> { new Variable("db", "mysql", false), new Variable("password", "mysql_password", false) }), new ReadOnlyCollection <Variable>(new List <Variable> { new Variable("db", "sqlserver", false), new Variable("password", "sqlserver_secured_password", true) }) })); }
public void MatrixShouldReadAllowFailuresSectionSuccessfully() { const string yaml = @" matrix: allow_failures: - platform: x86 configuration: Debug - platform: x64 configuration: Release "; var conf = new BuildConfigurationYamlStringReader(yaml).GetBuildConfiguration(); conf.Matrix.ShouldBeEquivalentTo(new Matrix( false, new[] { new AllowedJobFailureConditions(null, "Debug", "x86", null, new Variable[0]), new AllowedJobFailureConditions(null, "Release", "x64", null, new Variable[0]) })); conf.Matrix.AllowedFailures.Should().HaveCount(2); }