public static IObservable <StartUnitTest> GetTargets(string testSyntax, string[] args, Func <ITestArena[]> forCompete, IServiceCommandFactory parseTestSyntax, IObservable <UnitTestResult> forParallelExection) { return(testSyntax.IsNullOrWhitespace() ? Rxn.Empty <StartUnitTest>() : Rxn.DfrCreate <StartUnitTest>(() => { if (!(testSyntax.Contains(".dll", StringComparison.InvariantCultureIgnoreCase) || testSyntax.Contains(".csproj", StringComparison.InvariantCultureIgnoreCase) || testSyntax.Contains(".bfc", StringComparison.InvariantCultureIgnoreCase))) { "Target must be either .dll or .csproj or .bfc".LogDebug(); return Rxn.Empty <StartUnitTest>(); } if (testSyntax.Contains(".bfc")) { return GetTargetsFromBfc(testSyntax, parseTestSyntax, forParallelExection); } if (!testSyntax.Contains("*")) { return GetTargetsFromDll(args, testSyntax, forCompete); } else { return GetTargetsFromPath(args, testSyntax, forCompete); } }) .Select(e => { e.Dll = e.Dll.AsCrossPlatformPath(); if (!FocusedTest.IsNullOrWhitespace()) { e.RunThisTest = FocusedTest; } return e; })); }