public void GetRelativePathToProjectFile_DoesNotThrow_IfRepoHasMultipleWebApps_AndProjectEnvVariableIsSet(
            string projectFileExtension)
        {
            // Arrange
            var sourceRepoDir = CreateSourceRepoDir();
            var srcDir        = CreateDir(sourceRepoDir, "src");
            var webApp1Dir    = CreateDir(srcDir, "WebApp1");

            File.WriteAllText(Path.Combine(webApp1Dir, $"WebApp1.{projectFileExtension}"), webApp1Dir);
            var webApp2Dir  = CreateDir(srcDir, "WebApp2");
            var projectFile = Path.Combine(webApp2Dir, $"WebApp2.{projectFileExtension}");

            File.WriteAllText(projectFile, webApp1Dir);
            var sourceRepo          = CreateSourceRepo(sourceRepoDir);
            var relativeProjectPath = Path.Combine("src", "WebApp2", $"WebApp2.{projectFileExtension}");
            var options             = new DotNetCoreScriptGeneratorOptions();

            options.Project = relativeProjectPath;
            var provider = CreateProjectFileProvider(options);

            // Act
            var actualFile = provider.GetRelativePathToProjectFile(sourceRepo);

            // Assert
            Assert.Equal(relativeProjectPath, actualFile);
        }
        private DotNetCorePlatform CreatePlatform(
            string projectFile = null,
            Dictionary <string, string> supportedVersions = null,
            string defaultVersion = null)
        {
            var projectFileProvider = new TestProjectFileProvider(projectFile);
            var detector            = new DotNetCorePlatformDetector(
                projectFileProvider,
                NullLogger <DotNetCorePlatformDetector> .Instance);

            defaultVersion    = defaultVersion ?? DotNetCoreRunTimeVersions.NetCoreApp31;
            supportedVersions = supportedVersions ?? new Dictionary <string, string>
            {
                { defaultVersion, defaultVersion },
            };
            var versionProvider = new TestDotNetCoreVersionProvider(
                supportedVersions,
                defaultVersion);
            var commonOptions = new BuildScriptGeneratorOptions();
            var dotNetCoreScriptGeneratorOptions = new DotNetCoreScriptGeneratorOptions();
            var installer = new DotNetCorePlatformInstaller(
                Options.Create(commonOptions),
                versionProvider,
                NullLoggerFactory.Instance);
            var globalJsonSdkResolver = new GlobalJsonSdkResolver(NullLogger <GlobalJsonSdkResolver> .Instance);

            return(new TestDotNetCorePlatform(
                       versionProvider,
                       projectFileProvider,
                       detector,
                       Options.Create(commonOptions),
                       Options.Create(dotNetCoreScriptGeneratorOptions),
                       installer,
                       globalJsonSdkResolver));
        }
 private DefaultAspNetCoreWebAppProjectFileProvider CreateProjectFileProvider(
     DotNetCoreScriptGeneratorOptions options)
 {
     return(new DefaultAspNetCoreWebAppProjectFileProvider(
                Options.Create(options),
                NullLogger <DefaultAspNetCoreWebAppProjectFileProvider> .Instance));
 }
        private DotNetCorePlatform CreateDotNetCorePlatform(
            Dictionary <string, string> supportedDotNetCoreVersions = null,
            string defaultVersion  = null,
            string detectedVersion = null,
            BuildScriptGeneratorOptions commonOptions = null,
            DotNetCoreScriptGeneratorOptions DotNetCoreScriptGeneratorOptions = null,
            bool?isDotNetCoreVersionAlreadyInstalled = null,
            string DotNetCoreInstallationScript      = null,
            string dotNetCoreInstallationScript      = null)
        {
            commonOptions = commonOptions ?? new BuildScriptGeneratorOptions();
            DotNetCoreScriptGeneratorOptions    = DotNetCoreScriptGeneratorOptions ?? new DotNetCoreScriptGeneratorOptions();
            isDotNetCoreVersionAlreadyInstalled = isDotNetCoreVersionAlreadyInstalled ?? true;
            DotNetCoreInstallationScript        = DotNetCoreInstallationScript ?? "default-DotNetCore-installation-script";
            var versionProvider     = new TestDotNetCoreVersionProvider(supportedDotNetCoreVersions, defaultVersion);
            var detector            = new TestDotNetCorePlatformDetector(detectedVersion: detectedVersion);
            var DotNetCoreInstaller = new TestDotNetCorePlatformInstaller(
                Options.Create(commonOptions),
                isDotNetCoreVersionAlreadyInstalled.Value,
                DotNetCoreInstallationScript);
            var globalJsonSdkResolver = new GlobalJsonSdkResolver(NullLogger <GlobalJsonSdkResolver> .Instance);

            return(new TestDotNetCorePlatform(
                       Options.Create(DotNetCoreScriptGeneratorOptions),
                       Options.Create(commonOptions),
                       versionProvider,
                       NullLogger <TestDotNetCorePlatform> .Instance,
                       detector,
                       DotNetCoreInstaller,
                       globalJsonSdkResolver));
        }
Пример #5
0
        public void GetRelativePathToProjectFile_Throws_IfPathInProjectEnvVariableValue_DoesNotExist()
        {
            // Arrange
            var sourceRepoDir = CreateSourceRepoDir();
            var srcDir        = CreateDir(sourceRepoDir, "src");
            var webApp1Dir    = CreateDir(srcDir, "WebApp1");

            File.WriteAllText(Path.Combine(webApp1Dir, "WebApp1.csproj"), WebSdkProjectFile);
            var webApp2Dir = CreateDir(srcDir, "WebApp2");

            File.WriteAllText(Path.Combine(webApp2Dir, "WebApp2.csproj"), WebSdkProjectFile);
            var sourceRepo          = CreateSourceRepo(sourceRepoDir);
            var relativeProjectPath = Path.Combine("src", "WebApp2", "WebApp2-doesnotexist.csproj");
            var options             = new DotNetCoreScriptGeneratorOptions();

            options.Project = relativeProjectPath;
            var context  = GetContext(sourceRepo);
            var provider = GetProjectFileProvider(options);

            // Act & Assert
            var exception = Assert.Throws <InvalidUsageException>(
                () => provider.GetRelativePathToProjectFile(context));

            Assert.Contains("Could not find the project file ", exception.Message);
        }
Пример #6
0
        public void GetRelativePathToProjectFile_ReturnsFile_UsingProjectPropertyAsPrecedenceOverProjectEnvVariable()
        {
            // Arrange
            var sourceRepoDir = CreateSourceRepoDir();
            var srcDir        = CreateDir(sourceRepoDir, "src");
            var project1Name  = "WebApp1.csproj";
            var project2Name  = "WebApp2.csproj";
            var webApp1Dir    = CreateDir(srcDir, "WebApp1");
            var webApp2Dir    = CreateDir(srcDir, "WebApp2");
            var projectFile1  = Path.Combine(webApp1Dir, project1Name);
            var projectFile2  = Path.Combine(webApp2Dir, project2Name);

            File.WriteAllText(projectFile1, NonWebSdkProjectFile);
            File.WriteAllText(projectFile2, NonWebSdkProjectFile);
            var expectedRelativeProjectPath = Path.Combine("src", "WebApp1", project1Name);
            var relativeProjectPath2        = Path.Combine("src", "WebApp2", project2Name);
            var sourceRepo = CreateSourceRepo(sourceRepoDir);
            var context    = GetContext(sourceRepo);

            context.Properties[DotNetCoreConstants.ProjectBuildPropertyKey] = expectedRelativeProjectPath;
            var options = new DotNetCoreScriptGeneratorOptions();

            options.Project = relativeProjectPath2;
            var provider = GetProjectFileProvider(options);

            // Act
            var actualFilePath = provider.GetRelativePathToProjectFile(context);

            // Assert
            Assert.Equal(expectedRelativeProjectPath, actualFilePath);
        }
Пример #7
0
        private DotNetCorePlatformDetector CreateDotNetCorePlatformDetector(
            Dictionary <string, string> supportedVersions,
            string defaultVersion,
            string projectFile,
            DotNetCoreScriptGeneratorOptions options)
        {
            options = options ?? new DotNetCoreScriptGeneratorOptions();

            return(new DotNetCorePlatformDetector(
                       new TestDotNetCoreVersionProvider(supportedVersions, defaultVersion),
                       Options.Create(options),
                       new TestProjectFileProvider(projectFile),
                       NullLogger <DotNetCorePlatformDetector> .Instance));
        }
        private DotNetCoreLanguageDetector CreateDotNetCoreLanguageDetector(
            string[] supportedVersions,
            string projectFile,
            IEnvironment environment)
        {
            var optionsSetup = new DotNetCoreScriptGeneratorOptionsSetup(environment);
            var options      = new DotNetCoreScriptGeneratorOptions();

            optionsSetup.Configure(options);

            return(new DotNetCoreLanguageDetector(
                       new TestVersionProvider(supportedVersions),
                       Options.Create(options),
                       new TestAspNetCoreWebAppProjectFileProvider(projectFile),
                       NullLogger <DotNetCoreLanguageDetector> .Instance));
        }
Пример #9
0
        private DotNetCoreLanguageDetector CreateDotNetCoreLanguageDetector(
            Dictionary <string, string> supportedVersions,
            string defaultVersion,
            string projectFile,
            IEnvironment environment)
        {
            var optionsSetup = new DotNetCoreScriptGeneratorOptionsSetup(environment);
            var options      = new DotNetCoreScriptGeneratorOptions();

            optionsSetup.Configure(options);

            return(new DotNetCoreLanguageDetector(
                       new TestDotNetCoreVersionProvider(supportedVersions, defaultVersion),
                       Options.Create(options),
                       new TestProjectFileProvider(projectFile),
                       NullLogger <DotNetCoreLanguageDetector> .Instance,
                       new DefaultStandardOutputWriter()));
        }
Пример #10
0
        protected DefaultProjectFileProvider GetProjectFileProvider(
            DotNetCoreScriptGeneratorOptions options = null)
        {
            if (options == null)
            {
                options = new DotNetCoreScriptGeneratorOptions();
            }

            var providers = new IProjectFileProvider[]
            {
                new ExplicitProjectFileProvider(
                    Options.Create(options),
                    NullLogger <ExplicitProjectFileProvider> .Instance),
                new RootDirectoryProjectFileProvider(NullLogger <RootDirectoryProjectFileProvider> .Instance),
                new ProbeAndFindProjectFileProvider(NullLogger <ProbeAndFindProjectFileProvider> .Instance),
            };

            return(new DefaultProjectFileProvider(providers));
        }
        public void GetRelativePathToProjectFile_ReturnsFile_IfProjEnvVariableIsSet_AndProjectFileIsNotAspNetCoreApp(
            string projectFileExtension)
        {
            // Arrange
            var sourceRepoDir = CreateSourceRepoDir();
            var srcDir        = CreateDir(sourceRepoDir, "src");
            var webApp1Dir    = CreateDir(srcDir, "WebApp1");
            var projectFile   = Path.Combine(webApp1Dir, $"WebApp1.{projectFileExtension}");

            File.WriteAllText(projectFile, NonWebSdkProjectFile);
            var sourceRepo          = CreateSourceRepo(sourceRepoDir);
            var relativeProjectPath = Path.Combine("src", "WebApp1", $"WebApp1.{projectFileExtension}");
            var options             = new DotNetCoreScriptGeneratorOptions();

            options.Project = relativeProjectPath;
            var provider = CreateProjectFileProvider(options);

            // Act
            var actualFilePath = provider.GetRelativePathToProjectFile(sourceRepo);

            // Assert
            Assert.Equal(relativeProjectPath, actualFilePath);
        }