public ValueTask <TestExecutionResult> Execute(TestCase test, CancellationToken token = default(CancellationToken)) { using ( _tracer.MeasureTrace($"Executing {test.Name}", executed => $"{test.Name} finished, took {executed.TotalSeconds:0.000}s")) { var testExecutor = _executors.GetOrAdd(test.GetType(), GenerateExecutor); token.ThrowIfCancellationRequested(); return(testExecutor(test)); } }
private Task DiscoverTestsAsync(IEnumerable <string> sources, ITestCaseDiscoverySink discoverySink) { return(Task.WhenAll(sources.Select(async source => { using (_tracer.MeasureTrace($"Processing {source}", ts => $"Processing {source} took {ts}")) { try { var asm = Assembly.Load(new AssemblyName(Path.GetFileNameWithoutExtension(source))); await DiscoverAssembly(discoverySink, asm, source); } catch (FileLoadException flex) { _tracer.Error($"Unable to load {source}: {flex.Message} 0x{flex.HResult:X8}"); } } }))); }