2017-03-03 05:04:03 +00:00
|
|
|
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
|
2016-10-11 00:13:46 +00:00
|
|
|
using System;
|
|
|
|
using System.IO;
|
|
|
|
using System.Linq;
|
2018-10-29 18:26:53 +00:00
|
|
|
using System.Runtime.InteropServices;
|
2017-03-17 03:26:26 +00:00
|
|
|
using System.Xml.Linq;
|
2018-11-30 05:07:50 +00:00
|
|
|
using FluentAssertions;
|
2016-10-16 01:34:03 +00:00
|
|
|
using Microsoft.DotNet.PlatformAbstractions;
|
2016-10-11 00:13:46 +00:00
|
|
|
|
|
|
|
namespace Microsoft.DotNet.Tools.Test.Utilities
|
|
|
|
{
|
|
|
|
public class RepoDirectoriesProvider
|
|
|
|
{
|
2018-10-29 18:26:53 +00:00
|
|
|
public readonly static string RepoRoot;
|
|
|
|
|
|
|
|
public readonly static string TestWorkingFolder;
|
|
|
|
public readonly static string DotnetUnderTest;
|
2018-11-30 05:07:50 +00:00
|
|
|
public readonly static string DotnetRidUnderTest;
|
2018-12-26 03:08:40 +00:00
|
|
|
public readonly static string Stage2AspNetCore;
|
2016-10-11 00:13:46 +00:00
|
|
|
|
2018-10-29 18:26:53 +00:00
|
|
|
static RepoDirectoriesProvider()
|
2016-10-11 00:13:46 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
#if NET451
|
2018-10-29 18:26:53 +00:00
|
|
|
string directory = AppDomain.CurrentDomain.BaseDirectory;
|
2016-10-11 00:13:46 +00:00
|
|
|
#else
|
2018-10-29 18:26:53 +00:00
|
|
|
string directory = AppContext.BaseDirectory;
|
2016-10-11 00:13:46 +00:00
|
|
|
#endif
|
|
|
|
|
2018-10-29 18:26:53 +00:00
|
|
|
while (directory != null)
|
|
|
|
{
|
|
|
|
var gitDirOrFile = Path.Combine(directory, ".git");
|
|
|
|
if (Directory.Exists(gitDirOrFile) || File.Exists(gitDirOrFile))
|
2016-10-11 00:13:46 +00:00
|
|
|
{
|
2018-10-29 18:26:53 +00:00
|
|
|
break;
|
2016-10-11 00:13:46 +00:00
|
|
|
}
|
2018-10-29 18:26:53 +00:00
|
|
|
directory = Directory.GetParent(directory)?.FullName;
|
|
|
|
}
|
2016-10-11 00:13:46 +00:00
|
|
|
|
2018-10-29 18:26:53 +00:00
|
|
|
RepoRoot = directory;
|
2016-10-11 00:13:46 +00:00
|
|
|
|
2018-10-29 18:26:53 +00:00
|
|
|
TestWorkingFolder = Environment.GetEnvironmentVariable("CORESDK_TEST_FOLDER");
|
|
|
|
if (string.IsNullOrEmpty(TestWorkingFolder))
|
|
|
|
{
|
|
|
|
TestWorkingFolder = Path.Combine(AppContext.BaseDirectory, "Tests");
|
2016-10-11 00:13:46 +00:00
|
|
|
}
|
|
|
|
|
2018-10-29 18:26:53 +00:00
|
|
|
DotnetUnderTest = Environment.GetEnvironmentVariable("DOTNET_UNDER_TEST");
|
|
|
|
string dotnetExtension = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : "";
|
|
|
|
if (string.IsNullOrEmpty(DotnetUnderTest))
|
2017-03-17 03:26:26 +00:00
|
|
|
{
|
2018-10-29 18:26:53 +00:00
|
|
|
if (RepoRoot == null)
|
2017-03-17 03:26:26 +00:00
|
|
|
{
|
2018-10-29 18:26:53 +00:00
|
|
|
DotnetUnderTest = "dotnet" + dotnetExtension;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
string configuration = new DirectoryInfo(AppContext.BaseDirectory).Parent.Name;
|
2018-10-29 19:26:31 +00:00
|
|
|
DotnetUnderTest = Path.Combine(RepoRoot, "artifacts", "bin", "redist", configuration, "dotnet", "dotnet" + dotnetExtension);
|
2017-03-17 03:26:26 +00:00
|
|
|
}
|
|
|
|
}
|
2018-11-30 05:07:50 +00:00
|
|
|
|
2018-12-26 03:08:40 +00:00
|
|
|
string AspNetCoreDir = Path.Combine(
|
|
|
|
Path.GetDirectoryName(DotnetUnderTest),
|
|
|
|
"shared",
|
|
|
|
"Microsoft.AspNetCore.App");
|
2017-06-21 05:05:44 +00:00
|
|
|
|
2018-12-15 04:08:38 +00:00
|
|
|
if (Directory.Exists(AspNetCoreDir))
|
|
|
|
{
|
2018-12-26 03:08:40 +00:00
|
|
|
Stage2AspNetCore =
|
|
|
|
Directory.EnumerateDirectories(AspNetCoreDir).First();
|
2018-12-15 04:08:38 +00:00
|
|
|
}
|
|
|
|
|
2018-11-30 05:07:50 +00:00
|
|
|
// TODO: Resolve dotnet folder even if DotnetUnderTest doesn't have full path
|
|
|
|
var sdkFolders = Directory.GetDirectories(Path.Combine(Path.GetDirectoryName(DotnetUnderTest), "sdk"));
|
|
|
|
sdkFolders.Length.Should().Be(1, "Only one SDK folder is expected in the layout");
|
|
|
|
|
|
|
|
var sdkFolder = sdkFolders.Single();
|
|
|
|
var versionFile = Path.Combine(sdkFolder, ".version");
|
|
|
|
|
|
|
|
var lines = File.ReadAllLines(versionFile);
|
|
|
|
DotnetRidUnderTest = lines[2].Trim();
|
2017-03-17 03:26:26 +00:00
|
|
|
}
|
|
|
|
|
2016-10-11 00:13:46 +00:00
|
|
|
}
|
2017-03-03 04:35:20 +00:00
|
|
|
}
|