adjust nuget.config paths
This commit is contained in:
parent
f77c5d76cb
commit
dbd278e65e
2 changed files with 65 additions and 99 deletions
|
@ -6,13 +6,6 @@ using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.DotNet.Cli.Utils;
|
|
||||||
using Microsoft.DotNet.PlatformAbstractions;
|
|
||||||
using NuGet.Common;
|
|
||||||
using PathUtility = Microsoft.DotNet.Tools.Common.PathUtility;
|
|
||||||
using System.Xml.Linq;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.TestFramework
|
namespace Microsoft.DotNet.TestFramework
|
||||||
{
|
{
|
||||||
|
@ -57,8 +50,6 @@ namespace Microsoft.DotNet.TestFramework
|
||||||
DotnetExeFile = dotnetExeFile;
|
DotnetExeFile = dotnetExeFile;
|
||||||
|
|
||||||
ProjectFilePattern = projectFilePattern;
|
ProjectFilePattern = projectFilePattern;
|
||||||
|
|
||||||
//throw new Exception($"root = {_root}\nassetName = {_assetName}\ndotnetExeFile = {_dotnetExeFile}\nprojectFilePattern = {_projectFilePattern}\ndataDir = {_dataDirectory}\ndirectoriesToExclude = {string.Join<DirectoryInfo>(";",_directoriesToExclude)}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TestAssetInstance CreateInstance([CallerMemberName] string callingMethod = "", string identifier = "")
|
public TestAssetInstance CreateInstance([CallerMemberName] string callingMethod = "", string identifier = "")
|
||||||
|
@ -88,87 +79,6 @@ namespace Microsoft.DotNet.TestFramework
|
||||||
return new DirectoryInfo(Path.Combine(baseDirectory, callingMethod + identifier, AssetName));
|
return new DirectoryInfo(Path.Combine(baseDirectory, callingMethod + identifier, AssetName));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string RebasePath(string path, string oldBaseDirectory, string newBaseDirectory)
|
|
||||||
{
|
|
||||||
path = Path.IsPathRooted(path) ? PathUtility.GetRelativePath(PathUtility.EnsureTrailingSlash(oldBaseDirectory), path) : path;
|
|
||||||
return Path.Combine(newBaseDirectory, path);
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsAncestor(FileInfo file, DirectoryInfo maybeAncestor)
|
|
||||||
{
|
|
||||||
var dir = file.Directory;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if (string.Equals(maybeAncestor.FullName, dir.FullName, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
dir = dir.Parent;
|
|
||||||
}
|
|
||||||
while (dir != null);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//private void DoCopyFiles()
|
|
||||||
//{
|
|
||||||
// Console.WriteLine($"TestAsset CopyFiles '{AssetName}'");
|
|
||||||
|
|
||||||
// _operationDirectory.Refresh();
|
|
||||||
// if (!_operationDirectory.Exists)
|
|
||||||
// {
|
|
||||||
// _operationDirectory.Create();
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// if (_operationDirectory.GetFiles().Any())
|
|
||||||
// {
|
|
||||||
// throw new Exception("operation files folder not empty");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// foreach (var f in GetOriginalFileList())
|
|
||||||
// {
|
|
||||||
// string destinationPath = RebasePath(f.FullName, Root.FullName, _operationDirectory.FullName);
|
|
||||||
// var destinationDir = new FileInfo(destinationPath).Directory;
|
|
||||||
// if (!destinationDir.Exists)
|
|
||||||
// {
|
|
||||||
// destinationDir.Create();
|
|
||||||
// }
|
|
||||||
// if (string.Equals(f.Name, "nuget.config", StringComparison.OrdinalIgnoreCase))
|
|
||||||
// {
|
|
||||||
// var doc = XDocument.Load(f.FullName, LoadOptions.PreserveWhitespace);
|
|
||||||
// foreach (var v in doc.Root.Element("packageSources").Elements("add").Attributes("value"))
|
|
||||||
// {
|
|
||||||
// if (!Path.IsPathRooted(v.Value))
|
|
||||||
// {
|
|
||||||
// string fullPath = Path.GetFullPath(Path.Combine(f.Directory.FullName, v.Value));
|
|
||||||
// if (!IsAncestor(new FileInfo(fullPath), Root))
|
|
||||||
// {
|
|
||||||
// v.Value = fullPath;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //throw new Exception($"\nvalue = {v.Value}\n" +
|
|
||||||
// // $"f.dir = {f.Directory.FullName}\n" +
|
|
||||||
// // $"fullPath = {fullPath}");
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
// using (var file = new FileStream(destinationPath, FileMode.CreateNew, FileAccess.ReadWrite))
|
|
||||||
// {
|
|
||||||
// doc.Save(file, SaveOptions.None);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// f.CopyTo(destinationPath);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
private void ThrowIfTestAssetDoesNotExist()
|
private void ThrowIfTestAssetDoesNotExist()
|
||||||
{
|
{
|
||||||
if (!Root.Exists)
|
if (!Root.Exists)
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace Microsoft.DotNet.TestFramework
|
||||||
{
|
{
|
||||||
throw new ArgumentException(nameof(testAssetInfo));
|
throw new ArgumentException(nameof(testAssetInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (root == null)
|
if (root == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentException(nameof(root));
|
throw new ArgumentException(nameof(root));
|
||||||
|
@ -64,9 +64,7 @@ namespace Microsoft.DotNet.TestFramework
|
||||||
{
|
{
|
||||||
if (!_filesCopied)
|
if (!_filesCopied)
|
||||||
{
|
{
|
||||||
var filesToCopy = TestAssetInfo.GetSourceFiles();
|
CopySourceFiles();
|
||||||
|
|
||||||
CopyFiles(filesToCopy);
|
|
||||||
|
|
||||||
_filesCopied = true;
|
_filesCopied = true;
|
||||||
}
|
}
|
||||||
|
@ -176,19 +174,77 @@ namespace Microsoft.DotNet.TestFramework
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CopyFiles(IEnumerable<FileInfo> filesToCopy)
|
private static string RebasePath(string path, string oldBaseDirectory, string newBaseDirectory)
|
||||||
{
|
{
|
||||||
|
path = Path.IsPathRooted(path) ? PathUtility.GetRelativePath(PathUtility.EnsureTrailingSlash(oldBaseDirectory), path) : path;
|
||||||
|
return Path.Combine(newBaseDirectory, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopySourceFiles()
|
||||||
|
{
|
||||||
|
var filesToCopy = TestAssetInfo.GetSourceFiles();
|
||||||
foreach (var file in filesToCopy)
|
foreach (var file in filesToCopy)
|
||||||
{
|
{
|
||||||
var relativePath = file.FullName.Substring(TestAssetInfo.Root.FullName.Length + 1);
|
var newPath = RebasePath(file.FullName, TestAssetInfo.Root.FullName, Root.FullName);
|
||||||
|
|
||||||
var newPath = Path.Combine(Root.FullName, relativePath);
|
|
||||||
|
|
||||||
var newFile = new FileInfo(newPath);
|
var newFile = new FileInfo(newPath);
|
||||||
|
|
||||||
PathUtility.EnsureDirectoryExists(newFile.Directory.FullName);
|
PathUtility.EnsureDirectoryExists(newFile.Directory.FullName);
|
||||||
|
|
||||||
file.CopyTo(newPath);
|
CopyFileAdjustingPaths(file, newFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsAncestor(FileInfo file, DirectoryInfo maybeAncestor)
|
||||||
|
{
|
||||||
|
var dir = file.Directory;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (string.Equals(maybeAncestor.FullName, dir.FullName, StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
dir = dir.Parent;
|
||||||
|
}
|
||||||
|
while (dir != null);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopyFileAdjustingPaths(FileInfo source, FileInfo destination)
|
||||||
|
{
|
||||||
|
if (string.Equals(source.Name, "nuget.config", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
CopyNugetConfigAdjustingPath(source, destination);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
source.CopyTo(destination.FullName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopyNugetConfigAdjustingPath(FileInfo source, FileInfo destination)
|
||||||
|
{
|
||||||
|
var doc = XDocument.Load(source.FullName, LoadOptions.PreserveWhitespace);
|
||||||
|
foreach (var packageSource in doc.Root.Element("packageSources").Elements("add").Attributes("value"))
|
||||||
|
{
|
||||||
|
if (!Path.IsPathRooted(packageSource.Value))
|
||||||
|
{
|
||||||
|
string fullPathAtSource = Path.GetFullPath(Path.Combine(source.Directory.FullName, packageSource.Value));
|
||||||
|
if (!IsAncestor(new FileInfo(fullPathAtSource), TestAssetInfo.Root))
|
||||||
|
{
|
||||||
|
packageSource.Value = fullPathAtSource;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
using (var file = new FileStream(
|
||||||
|
destination.FullName,
|
||||||
|
FileMode.CreateNew,
|
||||||
|
FileAccess.ReadWrite))
|
||||||
|
{
|
||||||
|
doc.Save(file, SaveOptions.None);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue