Пример #1
0
        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;
            }));
        }