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)); }
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); }
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); }
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)); }
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())); }
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); }