mirror of
https://github.com/actions/runner.git
synced 2025-12-10 12:36:23 +00:00
94 lines
2.7 KiB
C#
94 lines
2.7 KiB
C#
using GitHub.Runner.Common.Util;
|
|
using GitHub.Runner.Sdk;
|
|
using System;
|
|
using System.IO;
|
|
using Xunit;
|
|
|
|
namespace GitHub.Runner.Common.Tests.Util
|
|
{
|
|
public sealed class WhichUtilL0
|
|
{
|
|
[Fact]
|
|
[Trait("Level", "L0")]
|
|
[Trait("Category", "Common")]
|
|
public void UseWhichFindGit()
|
|
{
|
|
using (TestHostContext hc = new TestHostContext(this))
|
|
{
|
|
//Arrange
|
|
Tracing trace = hc.GetTrace();
|
|
|
|
// Act.
|
|
string gitPath = WhichUtil.Which("git", trace: trace);
|
|
|
|
trace.Info($"Which(\"git\") returns: {gitPath ?? string.Empty}");
|
|
|
|
// Assert.
|
|
Assert.True(!string.IsNullOrEmpty(gitPath) && File.Exists(gitPath), $"Unable to find Git through: {nameof(WhichUtil.Which)}");
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Trait("Level", "L0")]
|
|
[Trait("Category", "Common")]
|
|
public void WhichReturnsNullWhenNotFound()
|
|
{
|
|
using (TestHostContext hc = new TestHostContext(this))
|
|
{
|
|
//Arrange
|
|
Tracing trace = hc.GetTrace();
|
|
|
|
// Act.
|
|
string nosuch = WhichUtil.Which("no-such-file-cf7e351f", trace: trace);
|
|
|
|
trace.Info($"result: {nosuch ?? string.Empty}");
|
|
|
|
// Assert.
|
|
Assert.True(string.IsNullOrEmpty(nosuch), "Path should not be resolved");
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Trait("Level", "L0")]
|
|
[Trait("Category", "Common")]
|
|
public void WhichThrowsWhenRequireAndNotFound()
|
|
{
|
|
using (TestHostContext hc = new TestHostContext(this))
|
|
{
|
|
//Arrange
|
|
Tracing trace = hc.GetTrace();
|
|
|
|
// Act.
|
|
try
|
|
{
|
|
WhichUtil.Which("no-such-file-cf7e351f", require: true, trace: trace);
|
|
throw new Exception("which should have thrown");
|
|
}
|
|
catch (FileNotFoundException ex)
|
|
{
|
|
Assert.Equal("no-such-file-cf7e351f", ex.FileName);
|
|
}
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Trait("Level", "L0")]
|
|
[Trait("Category", "Common")]
|
|
public void WhichHandleFullyQualifiedPath()
|
|
{
|
|
using (TestHostContext hc = new TestHostContext(this))
|
|
{
|
|
//Arrange
|
|
Tracing trace = hc.GetTrace();
|
|
|
|
// Act.
|
|
var gitPath = WhichUtil.Which("git", require: true, trace: trace);
|
|
var gitPath2 = WhichUtil.Which(gitPath, require: true, trace: trace);
|
|
|
|
// Assert.
|
|
Assert.Equal(gitPath, gitPath2);
|
|
}
|
|
}
|
|
}
|
|
}
|