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 extensions = manager.GetExtensions(); // 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( manager, concreteType: typeof(GitHub.Runner.Worker.SetEnvCommandExtension)); } } private static void AssertContains(ExtensionManager manager, Type concreteType) where T : class, IExtension { // Act. List extensions = manager.GetExtensions(); // Assert. Assert.True( extensions.Any(x => x.GetType() == concreteType), $"Expected '{typeof(T).FullName}' extensions to contain concrete type '{concreteType.FullName}'."); } } }