Example #1
0
        public void CreateMissingSpecFolder()
        {
            var specFolder = HierarchyLoader.SelectSpecPath(Path.ToFullPath());

            if (!Directory.Exists(specFolder))
            {
                Console.WriteLine("Creating /Specs folder at " + specFolder);
                Directory.CreateDirectory(specFolder);
            }
        }
Example #2
0
        public static string GuessSpecDirectory()
        {
            var path = AppContext.BaseDirectory;

            while (Path.GetFileName(path).EqualsIgnoreCase("bin") || Path.GetFileName(path).EqualsIgnoreCase("debug") ||
                   Path.GetFileName(path).EqualsIgnoreCase("release"))
            {
                path = path.ParentDirectory();
            }

            return(HierarchyLoader.SelectSpecPath(path));
        }
        public static string GuessSpecDirectory(ISystem system)
        {
#if NET46
            var path = AppDomain.CurrentDomain.BaseDirectory;
#else
            var path = AppContext.BaseDirectory;
#endif

            var projectName = system.GetType().GetTypeInfo().Assembly.GetName().Name;


            var fileName = Path.GetFileName(path);
            while (fileName != projectName && !Directory.Exists(path.AppendPath("Specs")))
            {
                path     = path.ParentDirectory();
                fileName = Path.GetFileName(path);
            }

            return(HierarchyLoader.SelectSpecPath(path));
        }
Example #4
0
        public override bool Execute(RunInput input)
        {
            try
            {
                var specFolder = HierarchyLoader.SelectSpecPath(input.Path);
                var top        = HierarchyLoader.ReadHierarchy(specFolder);
                var specs      = input.GetBatchRunRequest().Filter(top);

                if (!specs.Any())
                {
                    ConsoleWriter.Write(ConsoleColor.Yellow, "Warning: No specs found!");
                }
            }
            catch (SuiteNotFoundException ex)
            {
                ConsoleWriter.Write(ConsoleColor.Red, ex.Message);
                return(false);
            }

            var controller = input.BuildRemoteController();
            var task       = controller.Start(EngineMode.Batch).ContinueWith(t =>
            {
                var systemRecycled = t.Result;
                if (!systemRecycled.success)
                {
                    systemRecycled.WriteSystemUsage();
                    return(false);
                }

                writeSystemUsage(systemRecycled);
                var execution = input.StartBatch(controller);

                // TODO -- put a command level timeout on this thing
                execution.Wait();

                var results = execution.Result;

                var regression = results.Summarize(Lifecycle.Regression);
                var acceptance = results.Summarize(Lifecycle.Acceptance);

                if (input.LifecycleFlag != Lifecycle.Regression)
                {
                    Console.WriteLine(acceptance);
                }

                if (input.LifecycleFlag != Lifecycle.Acceptance)
                {
                    Console.WriteLine(regression);
                }

                var success = regression.Failed == 0;

                results.suite    = input.WorkspaceFlag;
                results.system   = systemRecycled.system_name;
                results.time     = DateTime.Now.ToString();
                results.fixtures = systemRecycled.fixtures;

                var document = BatchResultsWriter.BuildResults(results);
                Console.WriteLine("Writing results to " + input.ResultsPathFlag);
                document.WriteToFile(input.ResultsPathFlag);

                if (input.DumpFlag.IsNotEmpty())
                {
                    dumpJson(input, results);
                }

                if (input.CsvFlag.IsNotEmpty())
                {
                    writePerformanceData(input, results);
                }

                if (input.JsonFlag.IsNotEmpty())
                {
                    Console.WriteLine("Writing the raw result information to " + input.JsonFlag);
                    PerformanceDataWriter.WriteJSON(results, input.JsonFlag);
                }

                if (input.OpenFlag)
                {
                    Process.Start(input.ResultsPathFlag);
                }

                if (success)
                {
                    ConsoleWriter.Write(ConsoleColor.Green, "Success!");
                }
                else
                {
                    ConsoleWriter.Write(ConsoleColor.Red, "Failed with Regression Failures!");
                }

                return(success);
            });

            task.Wait();

            controller.SafeDispose();

            return(task.Result);
        }