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);
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #10
0
        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));
        }
Beispiel #11
0
        //[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));
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }