Files
velopack/test/PathHelper.cs
2023-12-30 15:39:45 +00:00

42 lines
1.5 KiB
C#

using System.Diagnostics;
public static class PathHelper
{
public static string GetFixturesDir()
=> Path.Combine(GetTestRoot(), "fixtures");
public static string GetProjectDir()
=> Path.Combine(GetTestRoot(), "..");
public static string GetVendorLibDir()
=> Path.Combine(GetProjectDir(), "vendor");
public static string GetFixture(params string[] names)
=> Path.Combine(new string[] { GetTestRoot(), "fixtures" }.Concat(names).ToArray());
public static string GetRustSrcDir()
=> Path.Combine(GetProjectDir(), "src", "Rust");
#if DEBUG
public static string GetRustBuildOutputDir()
=> Path.Combine(GetRustSrcDir(), "target", "debug");
#else
public static string GetRustBuildOutputDir()
=> Path.Combine(GetRustSrcDir(), "target", "release");
#endif
public static string GetRustAsset(params string[] names)
=> Path.Combine(new string[] { GetRustBuildOutputDir() }.Concat(names).ToArray());
public static string GetTestRoot()
{
// XXX: This is an evil hack, but it's okay for a unit test
// We can't use Assembly.Location because unit test runners love
// to move stuff to temp directories
var st = new StackFrame(true);
#pragma warning disable CS8604 // Possible null reference argument.
var di = new DirectoryInfo(Path.Combine(Path.GetDirectoryName(st.GetFileName())));
#pragma warning restore CS8604 // Possible null reference argument.
return di.FullName;
}
}