string ObtainSDK(string rootDir, string repoDir) { int ret; string dotnetDirName = ".dotnet"; string dotnetDir = Path.Combine(rootDir, dotnetDirName); if (Directory.Exists(dotnetDir)) { return(GetDotnetToolPath(dotnetDir)); } string dotnetInstall = Path.Combine(Path.GetFullPath(repoDir), "dotnet-install"); if (TestContext.RuntimeIdentifier.Contains("win")) { dotnetInstall += ".ps1"; } else { dotnetInstall += ".sh"; } if (!File.Exists(dotnetInstall)) { LogMessage($"missing dotnet-install script at {dotnetInstall}"); Assert.True(false); } if (TestContext.RuntimeIdentifier.Contains("win")) { ret = CommandHelper.RunCommand("powershell", $"{dotnetInstall} -SharedRuntime -InstallDir {dotnetDirName} -Channel master -Architecture x64 -Version {runtimeVersion}", rootDir); if (ret != 0) { LogMessage("failed to retrieve shared runtime"); Assert.True(false); } ret = CommandHelper.RunCommand("powershell", $"{dotnetInstall} -InstallDir {dotnetDirName} -Channel master -Architecture x64 -Version {sdkVersion}", rootDir); if (ret != 0) { LogMessage("failed to retrieve sdk"); Assert.True(false); } } else { ret = CommandHelper.RunCommand(dotnetInstall, $"-sharedruntime -runtimeid {TestContext.RuntimeIdentifier} -installdir {dotnetDirName} -channel master -architecture x64 -version {runtimeVersion}", rootDir); if (ret != 0) { LogMessage("failed to retrieve shared runtime"); Assert.True(false); } ret = CommandHelper.RunCommand(dotnetInstall, $"-installdir {dotnetDirName} -channel master -architecture x64 -version {sdkVersion}", rootDir); if (ret != 0) { LogMessage("failed to retrieve sdk"); Assert.True(false); } } return(GetDotnetToolPath(dotnetDir)); }
// returns path to .csproj project file string SetupProject() { int ret; string repoName = CreateTestFolder("MusicStore"); string demoRoot = Path.Combine(repoName, Path.Combine("src", "MusicStore")); string csproj = Path.Combine(demoRoot, "MusicStore.csproj"); if (File.Exists(csproj)) { LogMessage($"using existing project {csproj}"); return(csproj); } if (Directory.Exists(repoName)) { Directory.Delete(repoName, true); } ret = CommandHelper.RunCommand("git", $"clone {gitRepo} {repoName}"); if (ret != 0) { LogMessage("git failed"); Assert.True(false); } if (!Directory.Exists(demoRoot)) { LogMessage($"{demoRoot} does not exist"); Assert.True(false); } ret = CommandHelper.RunCommand("git", $"checkout {gitRevision}", demoRoot); if (ret != 0) { LogMessage($"problem checking out revision {gitRevision}"); Assert.True(false); } // Write root files into the project directory foreach (var rf in rootFiles) { WriteEmbeddedResource(rf, Path.Combine(demoRoot, rf)); } // This is necessary because JitBench comes with a // NuGet.Config that has a <clear /> line, preventing // NuGet.Config sources defined in outer directories from // applying. string nugetConfig = Path.Combine(repoName, "NuGet.config"); AddLocalNugetFeedAfterClear(nugetConfig); AddLinkerReference(csproj); // We no longer need a custom global.json, because we are // using the same SDK used in the repo. // AddGlobalJson(repoName); return(csproj); }
// returns path to .csproj project file string SetupProject() { int ret; string repoName = CreateTestFolder("MusicStore"); string demoRoot = Path.Combine(repoName, Path.Combine("src", "MusicStore")); string csproj = Path.Combine(demoRoot, "MusicStore.csproj"); if (File.Exists(csproj)) { LogMessage($"using existing project {csproj}"); return(csproj); } if (Directory.Exists(repoName)) { Directory.Delete(repoName, true); } ret = CommandHelper.RunCommand("git", $"clone {gitRepo} {repoName}"); if (ret != 0) { LogMessage("git failed"); Assert.True(false); } if (!Directory.Exists(demoRoot)) { LogMessage($"{demoRoot} does not exist"); Assert.True(false); } ret = CommandHelper.RunCommand("git", $"checkout {gitRevision}", demoRoot); if (ret != 0) { LogMessage($"problem checking out revision {gitRevision}"); Assert.True(false); } // Write root files into the project directory foreach (var rf in rootFiles) { WriteEmbeddedResource(rf, Path.Combine(demoRoot, rf)); } AddLinkerReference(csproj); // We no longer need a custom global.json, because we are // using the same SDK used in the repo. // AddGlobalJson(repoName); return(csproj); }
public int RunApp(string target, out string processOutput, int timeout = Int32.MaxValue, string terminatingOutput = null, bool selfContained = false) { Assert.True(File.Exists(target)); int ret; if (selfContained) { ret = CommandHelper.RunCommand( target, null, Directory.GetParent(target).FullName, null, out processOutput, timeout, terminatingOutput); } else { ret = CommandHelper.RunCommand( Path.GetFullPath(TestContext.DotnetToolPath), Path.GetFullPath(target), Directory.GetParent(target).FullName, null, out processOutput, timeout, terminatingOutput); } return(ret); }