Files
runner/src/Test/L0/ExtensionManagerL0.cs
Tingluo Huang f5f14d4811 Runner register labels during configuration (#130)
* Runners will add os and architecture labels during registration

* support github.localhost for dev.
2019-10-17 16:33:43 -04:00

62 lines
1.9 KiB
C#

using GitHub.Runner.Worker;
using System;
using System.Collections.Generic;
using System.Linq;
using Xunit;
namespace GitHub.Runner.Common.Tests
{
public sealed class ExtensionManagerL0
{
[Fact]
[Trait("Level", "L0")]
[Trait("Category", "Common")]
public void LoadsTypeFromString()
{
using (TestHostContext tc = new TestHostContext(this))
{
// Arrange.
var manager = new ExtensionManager();
manager.Initialize(tc);
// Act.
List<IActionCommandExtension> extensions = manager.GetExtensions<IActionCommandExtension>();
// Assert.
Assert.True(
extensions.Any(x => x is SetEnvCommandExtension),
$"Expected {nameof(SetEnvCommandExtension)} extension to be returned as a job extension.");
}
}
[Fact]
[Trait("Level", "L0")]
[Trait("Category", "Common")]
public void LoadsTypes()
{
using (TestHostContext tc = new TestHostContext(this))
{
// Arrange.
var manager = new ExtensionManager();
manager.Initialize(tc);
// Act/Assert.
AssertContains<GitHub.Runner.Worker.IActionCommandExtension>(
manager,
concreteType: typeof(GitHub.Runner.Worker.SetEnvCommandExtension));
}
}
private static void AssertContains<T>(ExtensionManager manager, Type concreteType) where T : class, IExtension
{
// Act.
List<T> extensions = manager.GetExtensions<T>();
// Assert.
Assert.True(
extensions.Any(x => x.GetType() == concreteType),
$"Expected '{typeof(T).FullName}' extensions to contain concrete type '{concreteType.FullName}'.");
}
}
}