Example #1
0
        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));
        }
Example #2
0
        // 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);
        }
Example #3
0
        // 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);
        }