public void Detect_Throws_WhenUnsupportedPhpVersion_IsSetInOptions() { // Arrange var unsupportedVersion = "0"; var supportedVersion = "7.3.5"; var phpScriptGeneratorOptions = new PhpScriptGeneratorOptions { PhpVersion = unsupportedVersion }; var platform = CreatePhpPlatform( supportedPhpVersions: new[] { supportedVersion }, defaultVersion: supportedVersion, phpScriptGeneratorOptions: phpScriptGeneratorOptions); var repo = new MemorySourceRepo(); repo.AddFile("{\"require\":{\"php\":\"" + supportedVersion + "\"}}", PhpConstants.ComposerFileName); var context = CreateContext(repo); // Act & Assert var exception = Assert.Throws <UnsupportedVersionException>(() => platform.Detect(context)); Assert.Equal( $"Platform 'php' version '{unsupportedVersion}' is unsupported. " + $"Supported versions: {supportedVersion}", exception.Message); }
public void Detect_ReturnsVersionFromOptions_UsingMaximumSatisfyingVersionRules( string[] supportedVersions, string defaultVersion, string versionInOptions, string expectedVersion) { // Arrange var phpScriptGeneratorOptions = new PhpScriptGeneratorOptions { PhpVersion = versionInOptions }; var platform = CreatePhpPlatform( supportedPhpVersions: supportedVersions, defaultVersion: defaultVersion, phpScriptGeneratorOptions: phpScriptGeneratorOptions); var repo = new MemorySourceRepo(); repo.AddFile("{\"require\":{\"php\":\"1.1.1\"}}", PhpConstants.ComposerFileName); var context = CreateContext(repo); // Act var result = platform.Detect(context); // Assert Assert.NotNull(result); Assert.Equal(PhpConstants.PlatformName, result.Platform); Assert.Equal(expectedVersion, result.PlatformVersion); }
public void Detect_ReturnsVersionFromOptions_UsingMaximumSatisfyingVersionRules( string[] supportedVersions, string defaultVersion, string versionInOptions, string expectedVersion) { // Arrange var phpScriptGeneratorOptions = new PhpScriptGeneratorOptions { PhpVersion = versionInOptions }; var platform = CreatePhpPlatform( supportedPhpVersions: supportedVersions, defaultVersion: defaultVersion, detectedVersion: "1.1.1", phpScriptGeneratorOptions: phpScriptGeneratorOptions); var context = CreateContext(); // Act var result = platform.Detect(context); // Assert Assert.NotNull(result); Assert.Equal(PhpConstants.PlatformName, result.Platform); Assert.Equal(expectedVersion, result.PlatformVersion); }
public void Detect_ReturnsVersionFromOptions_EvenIfComposerFileHasVersionSpecified() { // Arrange var expectedVersion = "100.100.100"; var versionInComposerFile = "5.6.0"; var defaultVersion = "7.3.14"; var phpScriptGeneratorOptions = new PhpScriptGeneratorOptions { PhpVersion = expectedVersion }; var platform = CreatePhpPlatform( supportedPhpVersions: new[] { defaultVersion, "7.2.5", versionInComposerFile, expectedVersion }, defaultVersion: defaultVersion, phpScriptGeneratorOptions: phpScriptGeneratorOptions); var repo = new MemorySourceRepo(); repo.AddFile("{\"require\":{\"php\":\"" + versionInComposerFile + "\"}}", PhpConstants.ComposerFileName); var context = CreateContext(repo); // Act var result = platform.Detect(context); // Assert Assert.NotNull(result); Assert.Equal(PhpConstants.PlatformName, result.Platform); Assert.Equal(expectedVersion, result.PlatformVersion); }
public void Detect_ReturnsVersionFromOptions_EvenIfDetectorReturnsVersion() { // Arrange var expectedVersion = "100.100.100"; var detectedVersion = "5.6.0"; var defaultVersion = "7.3.14"; var phpScriptGeneratorOptions = new PhpScriptGeneratorOptions { PhpVersion = expectedVersion }; var platform = CreatePhpPlatform( supportedPhpVersions: new[] { defaultVersion, "7.2.5", detectedVersion, expectedVersion }, defaultVersion: defaultVersion, detectedVersion: detectedVersion, phpScriptGeneratorOptions: phpScriptGeneratorOptions); var context = CreateContext(); // Act var result = platform.Detect(context); // Assert Assert.NotNull(result); Assert.Equal(PhpConstants.PlatformName, result.Platform); Assert.Equal(expectedVersion, result.PlatformVersion); }
private PhpLanguageDetector CreatePhpLanguageDetector(string[] supportedPhpVersions, IEnvironment environment) { var optionsSetup = new PhpScriptGeneratorOptionsSetup(environment); var options = new PhpScriptGeneratorOptions(); optionsSetup.Configure(options); return(new PhpLanguageDetector(Options.Create(options), new TestPhpVersionProvider(supportedPhpVersions), NullLogger <PhpLanguageDetector> .Instance)); }
private PhpPlatformDetector CreatePhpPlatformDetector( string[] supportedPhpVersions, string defaultVersion, PhpScriptGeneratorOptions options) { options = options ?? new PhpScriptGeneratorOptions(); return(new PhpPlatformDetector( Options.Create(options), new TestPhpVersionProvider(supportedPhpVersions, defaultVersion), NullLogger <PhpPlatformDetector> .Instance, new DefaultStandardOutputWriter())); }
public void Configure_SetsPythonVersion_ToLatestVersion_WhenNoEnvironmentVariableSet() { // Arrange var environment = new TestEnvironment(); var optionsSetup = new PhpScriptGeneratorOptionsSetup(environment); var options = new PhpScriptGeneratorOptions(); // Act optionsSetup.Configure(options); // Assert Assert.Equal(PhpConstants.DefaultPhpRuntimeVersion, options.PhpDefaultVersion); }
public void Configure_SetsPythonVersion_ToEnvironmentVariableValue() { // Arrange var environment = new TestEnvironment(); environment.Variables[PhpConstants.PhpRuntimeVersionEnvVarName] = "10.10.10"; var optionsSetup = new PhpScriptGeneratorOptionsSetup(environment); var options = new PhpScriptGeneratorOptions(); // Act optionsSetup.Configure(options); // Assert Assert.Equal("10.10.10", options.PhpVersion); }
private PhpPlatform CreatePhpPlatform( string[] supportedPhpVersions = null, string[] supportedPhpComposerVersions = null, string defaultVersion = null, string defaultComposerVersion = null, string detectedVersion = null, BuildScriptGeneratorOptions commonOptions = null, PhpScriptGeneratorOptions phpScriptGeneratorOptions = null, bool?isPhpVersionAlreadyInstalled = null, string phpInstallationScript = null, bool?isPhpComposerAlreadyInstalled = null, string phpComposerInstallationScript = null) { commonOptions = commonOptions ?? new BuildScriptGeneratorOptions(); phpScriptGeneratorOptions = phpScriptGeneratorOptions ?? new PhpScriptGeneratorOptions(); isPhpVersionAlreadyInstalled = isPhpVersionAlreadyInstalled ?? true; phpInstallationScript = phpInstallationScript ?? "default-php-installation-script"; isPhpComposerAlreadyInstalled = isPhpComposerAlreadyInstalled ?? true; phpComposerInstallationScript = phpComposerInstallationScript ?? "default-php-composer-installation-script"; var versionProvider = new TestPhpVersionProvider(supportedPhpVersions, defaultVersion); supportedPhpComposerVersions = supportedPhpComposerVersions ?? new[] { PhpVersions.ComposerVersion }; defaultComposerVersion = defaultComposerVersion ?? PhpVersions.ComposerVersion; var composerVersionProvider = new TestPhpComposerVersionProvider( supportedPhpComposerVersions, defaultComposerVersion); var detector = new TestPhpPlatformDetector(detectedVersion: detectedVersion); var phpInstaller = new TestPhpPlatformInstaller( Options.Create(commonOptions), isPhpVersionAlreadyInstalled.Value, phpInstallationScript); var phpComposerInstaller = new TestPhpComposerInstaller( Options.Create(commonOptions), isPhpComposerAlreadyInstalled.Value, phpComposerInstallationScript); return(new TestPhpPlatform( Options.Create(phpScriptGeneratorOptions), Options.Create(commonOptions), versionProvider, composerVersionProvider, NullLogger <TestPhpPlatform> .Instance, detector, phpInstaller, phpComposerInstaller)); }
//[Fact] //public void GeneratedScript_UsesNpmInstall_IfPackageLockJsonFileIsPresent() //{ // // Arrange // var scriptGenerator = GetScriptGenerator(defaultNpmVersion: "6.0.0"); // var repo = new MemorySourceRepo(); // repo.AddFile(ComposerFileWithNoNpmVersion, NodeConstants.ComposerFileFileName); // repo.AddFile("Package lock json file content here", NodeConstants.PackageLockJsonFileName); // var context = CreateBuildScriptGeneratorContext(repo); // context.LanguageVersion = "8.2.1"; // var expected = new NodeBashBuildSnippetProperties( // packageInstallCommand: NpmInstallCommand, // runBuildCommand: null, // runBuildAzureCommand: null); // // Act // var snippet = scriptGenerator.GenerateBashBuildScriptSnippet(context); // // Assert // Assert.NotNull(snippet); // Assert.Equal(TemplateHelpers.Render( // TemplateHelpers.TemplateResource.NodeSnippet, expected), snippet.BashBuildScriptSnippet); //} //[Fact] //public void GeneratedScript_UsesNpmRunBuild_IfBuildNodeIsPresentUnderScripts() //{ // // Arrange // var scriptGenerator = GetScriptGenerator(defaultNpmVersion: "6.0.0"); // var repo = new MemorySourceRepo(); // repo.AddFile(ComposerFileWithBuildScript, NodeConstants.ComposerFileFileName); // var context = CreateBuildScriptGeneratorContext(repo); // context.LanguageVersion = "8.2.1"; // var expected = new NodeBashBuildSnippetProperties( // packageInstallCommand: NpmInstallCommand, // runBuildCommand: "npm run build", // runBuildAzureCommand: "npm run build:azure"); // // Act // var snippet = scriptGenerator.GenerateBashBuildScriptSnippet(context); // // Assert // Assert.NotNull(snippet); // Assert.Equal(TemplateHelpers.Render( // TemplateHelpers.TemplateResource.NodeSnippet, expected), snippet.BashBuildScriptSnippet); //} private IProgrammingPlatform GetScriptGenerator( string defaultVersion, BuildScriptGeneratorOptions commonOptions, PhpScriptGeneratorOptions phpScriptGeneratorOptions) { var phpVersionProvider = new TestPhpVersionProvider( supportedPhpVersions: new[] { "7.2.15", Common.PhpVersions.Php73Version }); phpScriptGeneratorOptions = phpScriptGeneratorOptions ?? new PhpScriptGeneratorOptions(); commonOptions = commonOptions ?? new BuildScriptGeneratorOptions(); return(new PhpPlatform( Options.Create(phpScriptGeneratorOptions), Options.Create(commonOptions), phpVersionProvider, NullLogger <PhpPlatform> .Instance, detector: null)); }
public void Detect_Throws_WhenUnsupportedPhpVersion_IsSetInOptions() { // Arrange var versionFromOptions = "0"; var supportedVersion = "7.3.5"; var phpScriptGeneratorOptions = new PhpScriptGeneratorOptions { PhpVersion = versionFromOptions }; var platform = CreatePhpPlatform( supportedPhpVersions: new[] { supportedVersion }, defaultVersion: supportedVersion, detectedVersion: supportedVersion, phpScriptGeneratorOptions: phpScriptGeneratorOptions); var context = CreateContext(); // Act & Assert var exception = Assert.Throws <UnsupportedVersionException>(() => platform.Detect(context)); Assert.Equal( $"Platform 'php' version '{versionFromOptions}' is unsupported. " + $"Supported versions: {supportedVersion}", exception.Message); }
public void Detect_WhenPreviewPhpVersion_IsSetInOptions(string[] supportedVersions, string previewVersion, string expectedVersion) { // Arrange var phpScriptGeneratorOptions = new PhpScriptGeneratorOptions { PhpVersion = previewVersion }; var platform = CreatePhpPlatform( supportedPhpVersions: supportedVersions, defaultVersion: previewVersion, phpScriptGeneratorOptions: phpScriptGeneratorOptions); var repo = new MemorySourceRepo(); repo.AddFile("{\"require\":{\"php\":\"" + previewVersion + "\"}}", PhpConstants.ComposerFileName); var context = CreateContext(repo); // Act var result = platform.Detect(context); // Act & Assert Assert.NotNull(result); Assert.Equal(PhpConstants.PlatformName, result.Platform); Assert.Equal(expectedVersion, result.PlatformVersion); }