public void TryGenerateScript_ReturnsTrue_IfLanguageIsProvidedButNoVersion_AndCanDetectVersion() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test", detectedLanguageVersion: "1.0.0"); var platform = new TestProgrammingPlatform( "test", new[] { "1.0.0" }, canGenerateScript: true, scriptContent: "script-content", detector); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext(); context.Language = "test"; context.LanguageVersion = null; // version not provided by user // Act generator.GenerateBashScript(context, out var generatedScript); // Assert Assert.Contains("script-content", generatedScript); Assert.True(detector.DetectInvoked); }
public void TryGenerateScript_CallsDetector_IfMultiPlatformIsOn_AndLangProvided() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test", detectedLanguageVersion: "1.0.0"); var platform = new TestProgrammingPlatform( "test", new[] { "1.0.0" }, canGenerateScript: true, scriptContent: "script-content", detector); var detector2 = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test2", detectedLanguageVersion: "1.0.0"); var platform2 = new TestProgrammingPlatform( "test2", new[] { "1.0.0" }, canGenerateScript: true, scriptContent: "script-content", detector2); var generator = CreateDefaultScriptGenerator(new[] { platform, platform2 }); var context = CreateScriptGeneratorContext( suppliedLanguageName: "test", suppliedLanguageVersion: "1.0.0", enableMultiPlatformBuild: true); // Act & Assert generator.GenerateBashScript(context, out var generatedScript); Assert.False(detector.DetectInvoked); Assert.True(detector2.DetectInvoked); }
public void GeneratesScript_UsingTheFirstplatform_WhichCanGenerateScript() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: null, detectedLanguageVersion: null); var platform1 = new TestProgrammingPlatform( "lang1", new[] { "1.0.0" }, canGenerateScript: false, scriptContent: null, detector); var platform2 = new TestProgrammingPlatform( "lang2", new[] { "1.0.0" }, canGenerateScript: true, scriptContent: "script-content", detector); var generator = CreateDefaultScriptGenerator( new[] { platform1, platform2 }); var context = CreateScriptGeneratorContext( suppliedLanguageName: "lang2", suppliedLanguageVersion: "1.0.0"); // Act generator.GenerateBashScript(context, out var generatedScript); // Assert Assert.Contains("script-content", generatedScript); Assert.False(detector.DetectInvoked); }
public void TryGenerateScript_Throws_IfSuppliedLanguageVersionIsUnsupported() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test", detectedLanguageVersion: "1.0.0"); var platform = new TestProgrammingPlatform( "test", new[] { "1.0.0" }, canGenerateScript: true, scriptContent: "script-content", detector); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext( suppliedLanguageName: "test", suppliedLanguageVersion: "2.0.0"); //unsupported version // Act & Assert var exception = Assert.Throws <UnsupportedVersionException>( () => generator.GenerateBashScript(context, out var generatedScript)); Assert.Equal( "The 'test' version '2.0.0' is not supported. Supported versions are: 1.0.0", exception.Message); Assert.False(detector.DetectInvoked); }
public void GenerateDockerfile_GeneratesBuildTagAndRuntime_ForProvidedPlatform( string platformName, string detectedPlatformVersion, string expectedBuildTag) { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: platformName, detectedLanguageVersion: detectedPlatformVersion); var platform = new TestProgrammingPlatform( platformName, new[] { detectedPlatformVersion }, detector: detector); var generator = CreateDefaultDockerfileGenerator(platform); var ctx = CreateDockerfileContext(platformName, null); // Act var dockerfile = generator.GenerateDockerfile(ctx); // Assert Assert.NotNull(dockerfile); Assert.NotEqual(string.Empty, dockerfile); Assert.Contains(string.Format(_buildImageFormat, expectedBuildTag), dockerfile); Assert.Contains(string.Format(_argRuntimeFormat, platformName, detectedPlatformVersion), dockerfile); Assert.True(detector.DetectInvoked); }
public void TryGenerateScript_ReturnsTrue_IfNoLanguageIsProvided_AndCanDetectLanguage() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test", detectedLanguageVersion: "1.0.0"); var platform = new TestProgrammingPlatform( "test", new[] { "1.0.0" }, canGenerateScript: true, scriptContent: "script-content", detector: detector); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext( suppliedLanguageName: null, suppliedLanguageVersion: null); // Act var canGenerateScript = generator.TryGenerateBashScript(context, out var generatedScript); // Assert Assert.True(canGenerateScript); Assert.Contains("script-content", generatedScript); Assert.True(detector.DetectInvoked); }
public void UsesMaxSatisfyingVersion_WhenOnlyMajorAndMinorVersion_OfLanguageIsSpecified() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test", detectedLanguageVersion: "1.0.0"); var platform1 = new TestProgrammingPlatform( "test", new[] { "1.1.0" }, canGenerateScript: true, scriptContent: "1.0.0-content", detector); var platform2 = new TestProgrammingPlatform( "test", new[] { "1.1.5" }, canGenerateScript: true, scriptContent: "1.1.5-content", detector); var generator = CreateDefaultScriptGenerator( new[] { platform1, platform2 }); var context = CreateScriptGeneratorContext( suppliedLanguageName: "test", suppliedLanguageVersion: "1.1"); // Act var canGenerateScript = generator.TryGenerateBashScript(context, out var generatedScript); // Assert Assert.True(canGenerateScript); Assert.Contains("1.1.5-content", generatedScript); Assert.False(detector.DetectInvoked); }
public void TryGenerateScript_Throws_IfLanguageIsProvidedButDisabled() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test", detectedLanguageVersion: "1.0.0"); var platform = new TestProgrammingPlatform("test", new[] { "1.0.0" }, detector: detector, enabled: false); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext( suppliedLanguageName: "test", suppliedLanguageVersion: "1.0.0"); // Act & Assert var exception = Assert.Throws <UnsupportedLanguageException>( () => generator.GenerateBashScript(context, out var generatedScript)); }
public void TryGenerateScript_Throws_IfLanguageIsProvided_AndCannotDetectLanguage() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: null, detectedLanguageVersion: null); var platform = new TestProgrammingPlatform("test1", new[] { "1.0.0" }, detector: detector); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext( suppliedLanguageName: "test2", suppliedLanguageVersion: null); // Act & Assert var exception = Assert.Throws <UnsupportedLanguageException>( () => generator.GenerateBashScript(context, out var generatedScript)); Assert.Equal("'test2' platform is not supported. Supported platforms are: test1", exception.Message); }
public void TryGenerateScript_Throws_IfLanguageIsProvidedButNoVersion_AndCannotDetectVersion() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test", detectedLanguageVersion: null); var platform = new TestProgrammingPlatform("test", new[] { "1.0.0" }, detector: detector); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext( suppliedLanguageName: "test", suppliedLanguageVersion: null); // Act & Assert var exception = Assert.Throws <UnsupportedVersionException>( () => generator.GenerateBashScript(context, out var generatedScript)); Assert.Equal("Couldn't detect a version for the platform 'test' in the repo.", exception.Message); Assert.True(detector.DetectInvoked); }
public void TryGenerateScript_Throws_IfNoLanguageIsProvided_AndCannotDetectLanguage() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: null, detectedLanguageVersion: null); var platform = new TestProgrammingPlatform("test", new[] { "1.0.0" }, detector: detector); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext( suppliedLanguageName: null, suppliedLanguageVersion: null, enableMultiPlatformBuild: true); // Act & Assert var exception = Assert.Throws <UnsupportedLanguageException>( () => generator.GenerateBashScript(context, out var generatedScript)); Assert.Equal("Could not detect the language from repo.", exception.Message); Assert.True(detector.DetectInvoked); }
public void GenerateDockerfile_GeneratesBuildTagAndRuntime_ForMultiPlatformBuild( string platformName, string platformVersion, string runtimePlatformName, string runtimePlatformVersion, string expectedBuildTag) { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: platformName, detectedLanguageVersion: platformVersion); var platform = new TestProgrammingPlatform( platformName, new[] { platformVersion }, detector: detector); var runtimeDetector = new TestLanguageDetectorUsingLangName( detectedLanguageName: runtimePlatformName, detectedLanguageVersion: runtimePlatformVersion); var runtimePlatform = new TestProgrammingPlatform( runtimePlatformName, new[] { runtimePlatformVersion }, detector: runtimeDetector); var generator = CreateDefaultDockerfileGenerator(new[] { platform, runtimePlatform }); var ctx = CreateDockerfileContext(null, null, true); // Act var dockerfile = generator.GenerateDockerfile(ctx); // Assert Assert.NotNull(dockerfile); Assert.NotEqual(string.Empty, dockerfile); Assert.Contains(string.Format(_buildImageFormat, expectedBuildTag), dockerfile); Assert.Contains(string.Format(_argRuntimeFormat, ConvertToRuntimeName(runtimePlatformName), runtimePlatformVersion), dockerfile); }
public void TryGenerateScript_ReturnsFalse_IfGeneratorTryGenerateScript_IsFalse() { // Arrange var detector = new TestLanguageDetectorUsingLangName( detectedLanguageName: "test", detectedLanguageVersion: "1.0.0"); var platform = new TestProgrammingPlatform( "test", new[] { "1.0.0" }, canGenerateScript: false, scriptContent: null, detector); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext( suppliedLanguageName: null, suppliedLanguageVersion: null); // Act & Assert var exception = Assert.Throws <UnsupportedLanguageException>( () => generator.GenerateBashScript(context, out var generatedScript)); Assert.Equal("Could not detect the language from repo.", exception.Message); Assert.True(detector.DetectInvoked); }
public void GetRequiredToolVersions_ReturnsPlatformTools() { // Arrange var platName = "test"; var platVer = "1.0.0"; var detector = new TestLanguageDetectorUsingLangName(platName, platVer); var platform = new TestProgrammingPlatform( platName, new[] { platVer }, canGenerateScript: true, scriptContent: "script-content", detector: detector); var generator = CreateDefaultScriptGenerator(platform); var context = CreateScriptGeneratorContext( suppliedLanguageName: null, suppliedLanguageVersion: null); // Act var result = generator.GetRequiredToolVersions(context); // Assert Assert.Equal(platName, result.First().Key); Assert.Equal(platVer, result.First().Value); }