Beispiel #1
0
        public void GetFilesWithExtension_ReturnsFilesAtSpecifiedSubDirectoryAndItsSubDirectories_IfSubDirectorySearchIsTrue()
        {
            // Arrange
            var expected1  = Path.Combine(_rootDirPath, "a", "a1.txt");
            var expected2  = Path.Combine(_rootDirPath, "a", "aa", "aa1.txt");
            var sourceRepo = new LocalSourceRepo(_rootDirPath, NullLoggerFactory.Instance);

            // Act
            var files = sourceRepo.EnumerateFiles(
                "*.txt",
                searchSubDirectories: true,
                subDirectoryToSearchUnder: "a");

            // Assert
            Assert.NotNull(files);
            Assert.Equal(2, files.Count());
            Assert.Contains(expected1, files);
            Assert.Contains(expected2, files);
        }
        public void Detect_ReturnsNull_WhenSourceDirectoryIsEmpty()
        {
            // Arrange
            var version  = "100.100.100";
            var detector = CreatePythonPlatformDetector(
                supportedPythonVersions: new[] { version },
                defaultVersion: version,
                new PythonScriptGeneratorOptions());
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);
            // No files in source directory
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.Null(result);
        }
Beispiel #3
0
        public void Detect_ReutrnsNull_WhenRequirementsFileDoesNotExist()
        {
            // Arrange
            var version  = "100.100.100";
            var detector = CreatePythonLanguageDetector(
                supportedPythonVersions: new[] { version },
                defaultVersion: version);
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "foo.py content", "foo.py");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.Null(result);
        }
Beispiel #4
0
        public void Detect_ReturnsResult_WithPythonDefaultVersion_WhenNoRuntimeTextFileExists()
        {
            // Arrange
            var detector = CreatePythonLanguageDetector(
                supportedPythonVersions: new[] { Common.PythonVersions.Python37Version });
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "content", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "foo.py content", "foo.py");
            var repo = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);

            // Act
            var result = detector.Detect(repo);

            // Assert
            Assert.NotNull(result);
            Assert.Equal("python", result.Language);
            Assert.Equal(Common.PythonVersions.Python37Version, result.LanguageVersion);
        }
Beispiel #5
0
        public void Detect_Throws_WhenUnsupportedPythonVersion_FoundInRuntimeFile()
        {
            // Arrange
            var detector = CreatePythonLanguageDetector(
                supportedPythonVersions: new[] { Common.PythonVersions.Python37Version });
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "python-100.100.100", PythonConstants.RuntimeFileName);
            var repo = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);

            // Act & Assert
            var exception = Assert.Throws <UnsupportedVersionException>(() => detector.Detect(repo));

            Assert.Equal(
                "Target Python version '100.100.100' is unsupported. " +
                $"Supported versions are: {Common.PythonVersions.Python37Version}",
                exception.Message);
        }
Beispiel #6
0
        public void Detect_ReutrnsResult_WhenNoPyFileExists_ButRuntimeTextFileExists_HavingPythonVersionInIt()
        {
            // Arrange
            var detector  = CreatePythonLanguageDetector(supportedPythonVersions: new[] { Common.PythonVersions.Python37Version });
            var sourceDir = CreateNewDir();

            // No file with a '.py' extension
            CreateFile(sourceDir, "", "requirements.txt");
            CreateFile(sourceDir, $"python-{Common.PythonVersions.Python37Version}", "runtime.txt");
            var repo = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);

            // Act
            var result = detector.Detect(repo);

            // Assert
            Assert.NotNull(result);
            Assert.Equal("python", result.Language);
            Assert.Equal(Common.PythonVersions.Python37Version, result.LanguageVersion);
        }
        public void Detect_ReutrnsResult_WhenOnlyRequirementsTextFileExists_ButNoPyOrRuntimeFileExists()
        {
            // Arrange
            var detector  = CreatePythonPlatformDetector(new PythonScriptGeneratorOptions());
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            // No files with '.py' or no runtime.txt file
            IOHelpers.CreateFile(sourceDir, "requirements.txt content", PythonConstants.RequirementsFileName);
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(PythonConstants.PlatformName, result.Platform);
            Assert.Null(result.PlatformVersion);
        }
Beispiel #8
0
        public void Detect_ReturnsNullVersion_IfNoVersionFoundFromApp_OrOptions()
        {
            // Arrange
            var detector  = CreatePythonPlatformDetector();
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "", "app.py");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal("python", result.Platform);
            Assert.Null(result.PlatformVersion);
        }
Beispiel #9
0
        internal override int Execute(IServiceProvider serviceProvider, IConsole console)
        {
            if (string.IsNullOrWhiteSpace(PlatformName))
            {
                console.Error.WriteLine("Platform name is required.");
                return(ProcessConstants.ExitFailure);
            }

            string         appPath       = Path.GetFullPath(AppDir);
            ILoggerFactory loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();
            var            sourceRepo    = new LocalSourceRepo(appPath, loggerFactory);

            var options = new RunScriptGeneratorOptions
            {
                SourceRepo        = sourceRepo,
                PlatformVersion   = PlatformVersion,
                PassThruArguments = RemainingArgs
            };

            var runScriptGenerator = serviceProvider.GetRequiredService <IRunScriptGenerator>();
            var script             = runScriptGenerator.GenerateBashScript(PlatformName, options);

            if (string.IsNullOrEmpty(script))
            {
                console.Error.WriteLine("Error: Couldn't generate startup script.");
                return(ProcessConstants.ExitFailure);
            }

            if (string.IsNullOrWhiteSpace(OutputPath))
            {
                console.WriteLine(script);
            }
            else
            {
                File.WriteAllText(OutputPath, script);
                console.WriteLine($"Script written to '{OutputPath}'");

                // Try making the script executable
                ProcessHelper.TrySetExecutableMode(OutputPath);
            }

            return(ProcessConstants.ExitSuccess);
        }
Beispiel #10
0
        public void Detect_ReutrnsNull_WhenRequirementsTextFileExists_ButNoPyOrRuntimeFileExists()
        {
            // Arrange
            var version  = "100.100.100";
            var detector = CreatePythonLanguageDetector(
                supportedPythonVersions: new[] { version },
                defaultVersion: version);
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            // No files with '.py' or no runtime.txt file
            IOHelpers.CreateFile(sourceDir, "requirements.txt content", PythonConstants.RequirementsFileName);
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.Null(result);
        }
        public void Detect_ReturnsDefaultVersion_IfNoVersionFoundFromApp_OrOptions()
        {
            // Arrange
            var expectedVersion = "1.2.3";
            var platform        = CreatePlatform(defaultVersion: expectedVersion);
            var sourceDir       = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "", "app.py");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = platform.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(PythonConstants.PlatformName, result.Platform);
            Assert.Equal(expectedVersion, result.PlatformVersion);
        }
Beispiel #12
0
        public void Detect_ReutrnsNull_WhenRuntimeTextFileExists_ButDoesNotTextInExpectedFormat(string fileContent)
        {
            // Arrange
            var supportedVersion = "1.2.3";
            var detector         = CreatePythonLanguageDetector(
                supportedPythonVersions: new[] { supportedVersion },
                defaultVersion: supportedVersion);
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, fileContent, "runtime.txt");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.Null(result);
        }
        public void Detect_ReturnsResult_WithPythonDefaultVersion_WhenNoRuntimeTextFileExists()
        {
            // Arrange
            var expectedVersion = "1.2.3";
            var platform        = CreatePlatform(defaultVersion: expectedVersion);
            var sourceDir       = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "content", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "foo.py content", "foo.py");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = platform.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(PythonConstants.PlatformName, result.Platform);
            Assert.Equal(expectedVersion, result.PlatformVersion);
        }
Beispiel #14
0
        public void ReadFile_ReturnsConentOfTheFileRequested()
        {
            // Arrange-1
            var sourceRepo = new LocalSourceRepo(_rootDirPath, NullLoggerFactory.Instance);

            // Act-1
            var exists = sourceRepo.FileExists("subDir1", "subDir2", "file1.txt");

            // Assert-1
            Assert.True(exists);

            // Arrange-2
            var expected = $"file in {Path.Combine(_rootDirPath, "subDir1", "subDir2")}";

            // Act-2
            var content = sourceRepo.ReadFile("subDir1", "subDir2", "file1.txt");

            // Assert-2
            Assert.Equal(expected, content);
        }
        public void Detect_ReutrnsResult_WhenDotPyFilesExistInSubFolders()
        {
            // Arrange
            var detector  = CreatePythonPlatformDetector(new PythonScriptGeneratorOptions());
            var sourceDir = Directory.CreateDirectory(Path.Combine(_tempDirRoot, Guid.NewGuid().ToString("N")))
                            .FullName;
            var subDir = Directory.CreateDirectory(Path.Combine(sourceDir, Guid.NewGuid().ToString("N"))).FullName;

            IOHelpers.CreateFile(subDir, "foo.py content", "foo.py");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(PythonConstants.PlatformName, result.Platform);
            Assert.Null(result.PlatformVersion);
        }
Beispiel #16
0
        public void Detect_ReturnsVersionFromRuntimeTextFile(string expectedVersion)
        {
            // Arrange
            var detector  = CreatePythonPlatformDetector();
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "", "app.py");
            IOHelpers.CreateFile(sourceDir, $"python-{expectedVersion}", PythonConstants.RuntimeFileName);
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(PythonConstants.PlatformName, result.Platform);
            Assert.Equal(expectedVersion, result.PlatformVersion);
        }
Beispiel #17
0
        public void Detect_ReutrnsResult_WhenComposerFileDoesNotExist_ButFilesWithPhpExtensionExist()
        {
            // Arrange
            var sourceDir = Directory.CreateDirectory(Path.Combine(_tempDirRoot, Guid.NewGuid().ToString()))
                            .FullName;

            File.WriteAllText(Path.Combine(sourceDir, "foo.php"), "php file content");
            var repo     = new LocalSourceRepo(sourceDir);
            var detector = CreatePhpPlatformDetector();
            var context  = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(PhpConstants.PlatformName, result.Platform);
            Assert.Equal(string.Empty, result.AppDirectory);
            Assert.Null(result.PlatformVersion);
        }
Beispiel #18
0
        public void Detect_ReturnsResult_WhenValidCondaEnvironmentFileExists(string environmentFileName)
        {
            // Arrange
            var detector  = CreatePythonPlatformDetector();
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "channels:", environmentFileName);
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            var pythonPlatformResult = Assert.IsType <PythonPlatformDetectorResult>(result);

            Assert.Equal(PythonConstants.PlatformName, pythonPlatformResult.Platform);
            Assert.Null(pythonPlatformResult.PlatformVersion);
            Assert.False(pythonPlatformResult.HasJupyterNotebookFiles);
            Assert.True(pythonPlatformResult.HasCondaEnvironmentYmlFile);
        }
Beispiel #19
0
        public void Detect_ReturnsNull_WhenCustomRequirementsFileDoesNotExist()
        {
            // Arrange
            var options = new DetectorOptions
            {
                CustomRequirementsTxtPath = "foo/requirements.txt",
            };
            var detector  = CreatePythonPlatformDetector(options);
            var sourceDir = Directory.CreateDirectory(Path.Combine(_tempDirRoot, Guid.NewGuid().ToString("N")))
                            .FullName;

            IOHelpers.CreateFile(sourceDir, "foo==1.1", "requirements.txt");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.Null(result);
        }
Beispiel #20
0
        public void Detect_ReturnsResult_WhenNoPyFileExists_ButRuntimeTextFileExists_HavingPythonVersionInIt()
        {
            // Arrange
            var expectedVersion = "1000.1000.1000";
            var detector        = CreatePythonPlatformDetector();
            var sourceDir       = IOHelpers.CreateTempDir(_tempDirRoot);

            // No file with a '.py' extension
            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, $"python-{expectedVersion}", "runtime.txt");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(PythonConstants.PlatformName, result.Platform);
            Assert.Equal(expectedVersion, result.PlatformVersion);
        }
Beispiel #21
0
        internal override int Execute(IServiceProvider serviceProvider, IConsole console)
        {
            if (string.IsNullOrWhiteSpace(PlatformName))
            {
                console.WriteLine("Platform name is required.");
                return(ProcessConstants.ExitFailure);
            }

            AppPath = string.IsNullOrWhiteSpace(AppPath) ? "." : AppPath;
            string         appFullPath        = Path.GetFullPath(AppPath);
            string         defaultAppFullPath = string.IsNullOrWhiteSpace(DefaultApp) ? null : Path.GetFullPath(DefaultApp);
            ILoggerFactory loggerFactory      = serviceProvider.GetRequiredService <ILoggerFactory>();
            var            sourceRepo         = new LocalSourceRepo(appFullPath, loggerFactory);
            var            options            = new RunScriptGeneratorOptions
            {
                CustomServerCommand = ServerCmd,
                DebuggingMode       = DebugMode,
                DebugPort           = DebugPort,
                DefaultAppPath      = defaultAppFullPath,
                SourceRepo          = sourceRepo,
                UserStartupCommand  = UserStartupCommand,
                PlatformVersion     = PlatformVersion,
                BindPort            = BindPort,
            };
            var runScriptGenerator = serviceProvider.GetRequiredService <IRunScriptGenerator>();
            var script             = runScriptGenerator.GenerateBashScript(PlatformName, options);

            if (string.IsNullOrEmpty(script))
            {
                console.WriteLine("Couldn't generate startup script.");
                return(ProcessConstants.ExitFailure);
            }
            else
            {
                File.WriteAllText(OutputPath, script);
                console.WriteLine($"Script written to '{OutputPath}'");
            }

            return(ProcessConstants.ExitSuccess);
        }
Beispiel #22
0
        public void GetFilesWithExtension_ReturnsFilesAtAllDirectories_IfSubDirectorySearchIsTrue()
        {
            // Arrange
            var expected1  = Path.Combine(_rootDirPath, "a", "a1.txt");
            var expected2  = Path.Combine(_rootDirPath, "a", "aa", "aa1.txt");
            var expected3  = Path.Combine(_rootDirPath, "b", "b1.txt");
            var expected4  = Path.Combine(_rootDirPath, "b", "bb", "bb1.txt");
            var expected5  = Path.Combine(_rootDirPath, "root1.txt");
            var sourceRepo = new LocalSourceRepo(_rootDirPath, NullLoggerFactory.Instance);

            // Act
            var files = sourceRepo.EnumerateFiles("*.txt", searchSubDirectories: true);

            // Assert
            Assert.NotNull(files);
            Assert.Equal(5, files.Count());
            Assert.Contains(expected1, files);
            Assert.Contains(expected2, files);
            Assert.Contains(expected3, files);
            Assert.Contains(expected4, files);
            Assert.Contains(expected5, files);
        }
Beispiel #23
0
        public void Detect_ReutrnsResult_WhenRepoHasFileWithSupportedJavaExtensions(string extension)
        {
            // Arrange
            var sourceDir = Directory.CreateDirectory(Path.Combine(_tempDirRoot, Guid.NewGuid().ToString()))
                            .FullName;

            File.WriteAllText(Path.Combine(sourceDir, $"main.{extension}"), "file content here");
            var repo     = new LocalSourceRepo(sourceDir);
            var detector = CreateJavaDetector();
            var context  = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            var javaPlatformDetectorResult = Assert.IsType <JavaPlatformDetectorResult>(result);

            Assert.Equal(JavaConstants.PlatformName, javaPlatformDetectorResult.Platform);
            Assert.False(javaPlatformDetectorResult.UsesMaven);
            Assert.False(javaPlatformDetectorResult.UsesMavenWrapperTool);
            Assert.Null(javaPlatformDetectorResult.PlatformVersion);
        }
        public void Detect_ReturnsDefaultVersionOfVersionProvider_IfNoVersionFoundFromApp_OrEnvVariable()
        {
            // Arrange
            var expectedVersion = "1.2.3";
            var detector        = CreatePythonLanguageDetector(
                supportedPythonVersions: new[] { "100.100.100", "2.5.0", expectedVersion },
                defaultVersion: expectedVersion);
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "", "app.py");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal("python", result.Language);
            Assert.Equal(expectedVersion, result.LanguageVersion);
        }
        public void Detect_Throws_WhenUnsupportedPythonVersion_FoundInRuntimeFile()
        {
            // Arrange
            var unsupportedVersion = "100.100.100";
            var supportedVersion   = "1.2.3";
            var platform           = CreatePlatform(
                supportedVersions: new[] { supportedVersion },
                defaultVersion: supportedVersion);
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "python-" + unsupportedVersion, PythonConstants.RuntimeFileName);
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act & Assert
            var exception = Assert.Throws <UnsupportedVersionException>(() => platform.Detect(context));

            Assert.Equal(
                $"Platform 'python' version '{unsupportedVersion}' is unsupported. " +
                $"Supported versions: {supportedVersion}",
                exception.Message);
        }
Beispiel #26
0
        public void Detect_ReturnsResult_WhenOnlyMajorAndMinorVersion_AreSpecifiedInRuntimeTxtFile()
        {
            // Arrange
            var runtimeTxtVersion = "1.2";
            var expectedVersion   = "1.2.3";
            var detector          = CreatePythonLanguageDetector(
                supportedPythonVersions: new[] { "100.100.100", "1.2.1r", expectedVersion },
                defaultVersion: expectedVersion);
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, $"python-{runtimeTxtVersion}", PythonConstants.RuntimeFileName);
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal("python", result.Language);
            Assert.Equal(expectedVersion, result.LanguageVersion);
        }
        public void Detect_ReturnsResult_WithPythonDefaultVersion_WhenNoRuntimeTextFileExists()
        {
            // Arrange
            var expectedVersion = "1.2.3";
            var detector        = CreatePythonPlatformDetector(
                supportedPythonVersions: new[] { "100.100.100", expectedVersion },
                defaultVersion: expectedVersion,
                new PythonScriptGeneratorOptions());
            var sourceDir = IOHelpers.CreateTempDir(_tempDirRoot);

            IOHelpers.CreateFile(sourceDir, "content", PythonConstants.RequirementsFileName);
            IOHelpers.CreateFile(sourceDir, "foo.py content", "foo.py");
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal("python", result.Platform);
            Assert.Equal(expectedVersion, result.PlatformVersion);
        }
Beispiel #28
0
        public void Detect_ReutrnsResult_WhenRequirementsFileExistsAtRoot_AndDeepProbingIsDisabled()
        {
            // Arrange
            var options = new DetectorOptions
            {
                DisableRecursiveLookUp = true,
            };
            var detector  = CreatePythonPlatformDetector(options);
            var sourceDir = Directory.CreateDirectory(Path.Combine(_tempDirRoot, Guid.NewGuid().ToString("N")))
                            .FullName;

            IOHelpers.CreateFile(sourceDir, "foo==1.1", PythonConstants.RequirementsFileName);
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(PythonConstants.PlatformName, result.Platform);
            Assert.Null(result.PlatformVersion);
        }
Beispiel #29
0
        public void Detect_ReturnsNull_WhenDotPyFilesExistInSubFolders_AndDeepProbingIsDisabled()
        {
            // Arrange
            var options = new DetectorOptions
            {
                DisableRecursiveLookUp = true,
            };
            var detector  = CreatePythonPlatformDetector(options);
            var sourceDir = Directory.CreateDirectory(Path.Combine(_tempDirRoot, Guid.NewGuid().ToString("N")))
                            .FullName;
            var subDir = Directory.CreateDirectory(Path.Combine(sourceDir, Guid.NewGuid().ToString("N"))).FullName;

            IOHelpers.CreateFile(subDir, "foo.py content", "foo.py");
            IOHelpers.CreateFile(subDir, "foo==1.1", PythonConstants.RequirementsFileName);
            var repo    = new LocalSourceRepo(sourceDir, NullLoggerFactory.Instance);
            var context = CreateContext(repo);

            // Act
            var result = detector.Detect(context);

            // Assert
            Assert.Null(result);
        }
Beispiel #30
0
        internal override int Execute(IServiceProvider serviceProvider, IConsole console)
        {
            ILoggerFactory loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();
            var            sourceRepo    = new LocalSourceRepo(this.AppDir, loggerFactory);

            var ctx = new RunScriptGeneratorContext
            {
                SourceRepo        = sourceRepo,
                Platform          = this.PlatformName,
                PlatformVersion   = this.PlatformVersion,
                PassThruArguments = this.RemainingArgs,
            };

            var runScriptGenerator = serviceProvider.GetRequiredService <IRunScriptGenerator>();
            var script             = runScriptGenerator.GenerateBashScript(ctx);

            if (string.IsNullOrEmpty(script))
            {
                console.WriteErrorLine("Couldn't generate startup script.");
                return(ProcessConstants.ExitFailure);
            }

            if (string.IsNullOrWhiteSpace(this.OutputPath))
            {
                console.WriteLine(script);
            }
            else
            {
                File.WriteAllText(this.OutputPath, script);
                console.WriteLine($"Script written to '{this.OutputPath}'");

                // Try making the script executable
                ProcessHelper.TrySetExecutableMode(this.OutputPath);
            }

            return(ProcessConstants.ExitSuccess);
        }