Dotnet publish tests
This commit is contained in:
parent
cd357cb273
commit
07eb7ef28f
43 changed files with 1826 additions and 129 deletions
|
@ -0,0 +1,94 @@
|
|||
// 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.
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
|
||||
namespace Microsoft.DotNet.Tools.Test.Utilities
|
||||
{
|
||||
public class TempDirectory
|
||||
{
|
||||
private readonly string _path;
|
||||
private readonly TempRoot _root;
|
||||
|
||||
protected TempDirectory(TempRoot root)
|
||||
: this(CreateUniqueDirectory(TempRoot.Root), root)
|
||||
{
|
||||
}
|
||||
|
||||
private TempDirectory(string path, TempRoot root)
|
||||
{
|
||||
Debug.Assert(path != null);
|
||||
Debug.Assert(root != null);
|
||||
|
||||
_path = path;
|
||||
_root = root;
|
||||
}
|
||||
|
||||
private static string CreateUniqueDirectory(string basePath)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
string dir = System.IO.Path.Combine(basePath, Guid.NewGuid().ToString());
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
return dir;
|
||||
}
|
||||
catch (IOException)
|
||||
{
|
||||
// retry
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string Path
|
||||
{
|
||||
get { return _path; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a file in this directory.
|
||||
/// </summary>
|
||||
/// <param name="name">File name.</param>
|
||||
public TempFile CreateFile(string name)
|
||||
{
|
||||
string filePath = System.IO.Path.Combine(_path, name);
|
||||
TempRoot.CreateStream(filePath);
|
||||
return _root.AddFile(new DisposableFile(filePath));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a file in this directory that is a copy of the specified file.
|
||||
/// </summary>
|
||||
public TempFile CopyFile(string originalPath)
|
||||
{
|
||||
string name = System.IO.Path.GetFileName(originalPath);
|
||||
string filePath = System.IO.Path.Combine(_path, name);
|
||||
File.Copy(originalPath, filePath);
|
||||
return _root.AddFile(new DisposableFile(filePath));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a subdirectory in this directory.
|
||||
/// </summary>
|
||||
/// <param name="name">Directory name or unrooted directory path.</param>
|
||||
public TempDirectory CreateDirectory(string name)
|
||||
{
|
||||
string dirPath = System.IO.Path.Combine(_path, name);
|
||||
Directory.CreateDirectory(dirPath);
|
||||
return new TempDirectory(dirPath, _root);
|
||||
}
|
||||
|
||||
public void SetCurrentDirectory()
|
||||
{
|
||||
Directory.SetCurrentDirectory(_path);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return _path;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue