예제 #1
0
        public override void HandleMessage(OpenInEditor message, IApplication app)
        {
            if (!app.Persistence.Hierarchy.Specifications.Has(message.id))
            {
                return;
            }

            var spec = app.Persistence.Hierarchy.Specifications[message.id];
            var file = spec.Filename;

            ProcessLauncher.OpenFile(file);
        }
예제 #2
0
        public override bool Execute(ExportInput input)
        {
            var top = HierarchyLoader.ReadHierarchy(input.SpecPath);

            using (var controller = input.BuildEngine())
            {
                var fixtures = DumpFixturesCommand.BuildCombinedFixtureLibrary(input, controller);

                var doc = ExportWriter.Build(top, fixtures, input.TitleFlag);

                Console.WriteLine("Exporting the specifications to " + input.FileFlag);
                doc.WriteToFile(input.FileFlag);
            }

            if (input.OpenFlag)
            {
                Console.WriteLine("Trying to open the file " + input.FileFlag);
                ProcessLauncher.OpenFile(input.FileFlag);
            }

            return(true);
        }
예제 #3
0
        private async Task <bool> execute(RunInput input)
        {
            var specFetching = input.ReadSpecs();
            var running      = RunningSystem.Create(input.System);

            using (running.System)
            {
                if (!running.RecycledMessage.success)
                {
                    throw new Exception("System startup failed.");
                }

                await running.System.Warmup();

                var specs = await specFetching;

                var runner = buildRunner(input, specs, running, out var executionObserver);

                buildExecutionQueue(runner, executionObserver);

                var requests = createExecutionPlans(specs, running);

                var finished = Task.WhenAll(requests.Select(x => x.Completion));
                var timeout  = Task.Delay(input.GlobalTimeoutFlag.Minutes());

                await Task.WhenAny(timeout, finished);

                if (timeout.IsCompleted)
                {
                    showTimeoutMessage(input, requests);
                }

                var records = requests.Select(x => new BatchRecord
                {
                    results       = x.Completion.Result,
                    specification = x.Specification
                }).ToArray();

                var results = new BatchRunResponse
                {
                    fixtures = running.Fixtures.Models.ToArray(),

                    suite   = "Interactive Execution",
                    system  = running.System.GetType().FullName,
                    records = records
                };

                var success = determineSuccess(input, results);

                writeResults(input, running.RecycledMessage, results);

                writeData(input, results);


                if (input.OpenFlag)
                {
                    ProcessLauncher.OpenFile(input.ResultsPathFlag);
                }

                writeSuccessOrFailure(success);

                return(success);
            }
        }