コード例 #1
0
 private static async void Run()
 {
     if (HttpListener.IsSupported)
     {
         await Task.Run(() =>
         {
             listener = new HttpListener();
             listener.Start();
             IsRunning = true;
             listener.Prefixes.Add($"http://*:{Port}/");
             onServerStart?.Invoke(new ServerEventData(null, null, null, $"Server started on port {Port}"));
             if (UsingHttps)
             {
                 listener.Prefixes.Add($"https://*:{HttpsPort}");
                 onServerStart?.Invoke(new ServerEventData(null, null, null, $"Https Server started on port {HttpsPort}"));
             }
             while (IsRunning)
             {
                 try
                 {
                     var context = listener.GetContext();
                     ContextRunner.RunWith(context);
                 }
                 catch (HttpListenerException)
                 {
                 }
             }
         }, cancellationToken.Token);
     }
     else
     {
         throw new ServerNotSupportedException($"HttpListener is not supported on {Environment.OSVersion.VersionString}");
     }
 }
コード例 #2
0
        public NSpecResultModel Run()
        {
            var reflector = new Reflector(this._dllFile);

            var finder = new SpecFinder(reflector);

            var builder = new ContextBuilder(finder, new Tags().Parse(_tags), new DefaultConventions());

            var runner = new ContextRunner(builder, _formatter, false);

            var contexts = builder.Contexts().Build();

            if (contexts.AnyTaggedWithFocus())
            {
                builder = new ContextBuilder(finder, new Tags().Parse(NSpec.Domain.Tags.Focus), new DefaultConventions());

                runner = new ContextRunner(builder, _formatter, true);
            }

            var contextCollection = runner.Run(contexts);

            var serializableContextCollection = new SerializableContextCollection();

            BuildResponse(serializableContextCollection, contextCollection);

            return(new NSpecResultModel {
                ContextCollection = serializableContextCollection, Output = _formatter.GetFormattedString
            });
        }
コード例 #3
0
        public void output_verification(Type output, Type [] testClasses, string tags)
        {
            var finder           = new SpecFinder(testClasses, "");
            var tagsFilter       = new Tags().Parse(tags);
            var builder          = new ContextBuilder(finder, tagsFilter, new DefaultConventions());
            var consoleFormatter = new ConsoleFormatter();

            var actual = new System.Collections.Generic.List <string>();

            consoleFormatter.WriteLineDelegate = actual.Add;

            var runner = new ContextRunner(tagsFilter, consoleFormatter, false);

            runner.Run(builder.Contexts().Build());

            var expectedString = GetExpectedOutput(output)
                                 .ScrubNewLines()
                                 .ScrubStackTrace()
                                 .ScrubTimes();

            var actualString = String.Join("\n", actual)
                               .ScrubStackTrace()
                               .Trim()
                               .ScrubTimes();

            actualString.Should().Be(expectedString);
        }
コード例 #4
0
        protected when_running_specs Run(params Type[] types)
        {
            this.types = types;

            var tagsFilter = new Tags().Parse(tags);

            builder = new ContextBuilder(new SpecFinder(types), tagsFilter, new DefaultConventions());

            contextCollection = builder.Contexts();

            contextCollection.Build();

            classContext = contextCollection
                           .AllContexts()
                           .Where(c => c is ClassContext)
                           .Cast <ClassContext>()
                           .FirstOrDefault(c => types.Contains(c.SpecType));

            methodContext = contextCollection.AllContexts().FirstOrDefault(c => c is MethodContext);

            runner = new ContextRunner(tagsFilter, formatter, failFast);

            runner.Run(contextCollection);

            return(this);
        }
コード例 #5
0
        public void RealizeSpec(ExampleContext ctx)
        {
            // If we haven't run the examples yet, do so now. TestSuite is null in case of setup failure. All
            // my attempts to run examples individually have failed (e.g. due to nested contexts or the use of
            // beforeAll), so run everything and use the individual test cases only for reporting.
            if (!_hasRun && ctx.TestSuite != null)
            {
                _hasRun = true;
                var runner = new ContextRunner(ctx.TagsFilter, new NoopFormatter(), false);
                runner.Run(ctx.TestSuite);
            }

            var example = ctx.Example;

            if (!example.HasRun)
            {
                throw new Exception("The example didn't run :-(");
            }
            if (example.Failed())
            {
                if (example.Exception != null)
                {
                    // Use ExceptionDispatchInfo to preserve the original stack trace
                    var edi = ExceptionDispatchInfo.Capture(example.Exception);
                    edi.Throw();
                }
                throw new Exception("The example failed, but I don't know why :-(");
            }
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: jason-gill/NSpec
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                ShowUsage();
                return;
            }
            try
            {
                var classFilter = args.Length > 1 ? args[1] : "";

                var specDLL = args[0];

                var domain = new NSpecDomain(specDLL + ".config");

                var console = new ConsoleFormatter();

                domain.Run(specDLL, classFilter, console, (dll, filter, formatter) =>
                {
                    var finder = new SpecFinder(dll, new Reflector(), filter);

                    var builder = new ContextBuilder(finder, new DefaultConventions());

                    var runner = new ContextRunner(builder, formatter);

                    runner.Run();
                });
            }
            catch (Exception e)
            {
                //hopefully this is handled before here, but if not, this is better than crashing the runner
                Console.WriteLine(e);
            }
        }
コード例 #7
0
    private static void Debug(SpecFinder finder)
    {
        var builder = new ContextBuilder(finder, new DefaultConventions());
        var runner  = new ContextRunner(new Tags(), new ConsoleFormatter(), false);
        var results = runner.Run(builder.Contexts().Build());

        // assert that there aren't any failures
        results.Failures().Count().Should().Be(0, "all examples passed");
    }
コード例 #8
0
ファイル: DebuggerShim.cs プロジェクト: sneal/garden-windows
    public void debug()
    {
        var currentSpec = this.GetType();
        var finder      = new SpecFinder(new[] { currentSpec });
        var builder     = new ContextBuilder(finder, new Tags().Parse(currentSpec.Name), new DefaultConventions());
        var runner      = new ContextRunner(builder, new ConsoleFormatter(), false);
        var results     = runner.Run(builder.Contexts().Build());

        results.Failures().Count().should_be(0);
    }
コード例 #9
0
        public void DebugServiceSpecs()
        {
            const string tagOrClassName = "ServiceSpecs";

            var types   = GetType().Assembly.GetTypes();
            var finder  = new SpecFinder(types, "");
            var builder = new ContextBuilder(finder, new Tags().Parse(tagOrClassName), new DefaultConventions());
            var runner  = new ContextRunner(builder, new ConsoleFormatter(), false);
            var results = runner.Run(builder.Contexts().Build());

            results.Failures().Count().should_be(0);
        }
コード例 #10
0
            public override bool Execute(RunnerOptions options)
            {
                var types      = Assembly.GetEntryAssembly().GetTypes();
                var finder     = new SpecFinder(types, options.TestClass);
                var tagsFilter = new Tags().Parse(options.TagsFlag);
                var builder    = new ContextBuilder(finder, tagsFilter, new DefaultConventions());
                var runner     = new ContextRunner(tagsFilter, GetFormatter(options), false);

                var results = runner.Run(builder.Contexts().Build());

                return(!results.Failures().Any());
            }
コード例 #11
0
ファイル: nspec.cs プロジェクト: corker/Tasks.AppVeyor.Build
        public void debug()
        {
            var currentSpec = GetType();
            var finder = new SpecFinder(new[] { currentSpec });
            var filter = new Tags().Parse(currentSpec.Name);
            var builder = new ContextBuilder(finder, filter, new DefaultConventions());
            var runner = new ContextRunner(filter, new ConsoleFormatter(), false);
            var result = runner.Run(builder.Contexts().Build());

            //assert that there aren't any failures
            result.Failures().Count().should_be(0);
        }
コード例 #12
0
        public static void Main(string[] args)
        {
            var tagOrClassName = string.Join(",", args);
            var types          = typeof(TestRunner).Assembly.GetTypes();
            var finder         = new SpecFinder(types, string.Empty);
            var tagsFilter     = new Tags().Parse(tagOrClassName);
            var builder        = new ContextBuilder(finder, tagsFilter, new DefaultConventions());
            var runner         = new ContextRunner(tagsFilter, new ConsoleFormatter(), false);

            var results = runner.Run(builder.Contexts().Build());

            Environment.Exit(results.Failures().Count());
        }
コード例 #13
0
        public static void Run <T>(this ITestOutputHelper helper) where T : NSpec.nspec
        {
            var spec      = typeof(T);
            var finder    = new SpecFinder(new[] { spec });
            var tags      = new Tags().Parse(spec.Name);
            var builder   = new ContextBuilder(finder, tags, new DefaultConventions());
            var formatter = new MyFormatter(helper);
            var runner    = new ContextRunner(tags, formatter, false);
            var contexts  = builder.Contexts().Build();
            var results   = runner.Run(contexts);

            //assert that there aren't any failures
            results.Failures().Count().Should().Be(0);
        }
コード例 #14
0
ファイル: Program.cs プロジェクト: johnhilts/content-viewer
        public static void Main(string[] args)
        {
            var types      = typeof(Program).Assembly.GetTypes();
            var finder     = new SpecFinder(types, "");
            var tagsFilter = new Tags().Parse("");
            var builder    = new ContextBuilder(finder, tagsFilter, new DefaultConventions());
            var runner     = new ContextRunner(tagsFilter, new ConsoleFormatter(), false);
            var results    = runner.Run(builder.Contexts().Build());

            if (results.Failures().Count() > 0)
            {
                Environment.Exit(1);
            }
        }
コード例 #15
0
    //[Test]
    public void debug()
    {
        var tagOrClassName = "class_or_tag_you_want_to_debug";

        var types = GetType().Assembly.GetTypes();
        // OR
        // var types = new Type[]{typeof(Some_Type_Containg_some_Specs)};
        var finder  = new SpecFinder(types, "");
        var builder = new ContextBuilder(finder, new Tags().Parse(tagOrClassName), new DefaultConventions());
        var runner  = new ContextRunner(builder, new ConsoleFormatter(), false);
        var results = runner.Run(builder.Contexts().Build());

        //assert that there aren't any failures
        results.Failures().Count().should_be(0);
    }
コード例 #16
0
        public static void Main()
        {
            var tagOrClassName = "";

            var types = typeof(Program).Assembly.GetTypes();
            // OR
            // var types = new Type[]{typeof(Some_Type_Containg_some_Specs)};
            var finder  = new SpecFinder(types, "");
            var builder = new ContextBuilder(finder, new Tags().Parse(tagOrClassName), new DefaultConventions());
            var runner  = new ContextRunner(builder, new ConsoleFormatter(), failFast: true);
            var results = runner.Run(builder.Contexts().Build());

            //assert that there aren't any failures
            results.Failures().Count().should_be(0);
        }
コード例 #17
0
ファイル: DebuggerShim.cs プロジェクト: kbochenina/Kraken
    public void debug()
    {
        var tagOrClassName = "class_or_tag_you_want_to_debug";

        var types = GetType().Assembly.GetTypes();

        // OR
        types = new System.Type[] { typeof(StatisticsCacheServiceTest.NSpecTests.garbage_collecting_test) };
        var finder  = new SpecFinder(types, "");
        var builder = new ContextBuilder(finder, new Tags().Parse(tagOrClassName), new DefaultConventions());
        var runner  = new ContextRunner(builder, new ConsoleFormatter(), false);
        var results = runner.Run(builder.Contexts().Build());

        //assert that there aren't any failures
        results.Failures().Count().should_be(0);
    }
コード例 #18
0
        public void run()
        {
            var currentSpec = GetType();
            var finder      = new SpecFinder(new[] { currentSpec });
            var builder     = new ContextBuilder(finder, new Tags().Parse(currentSpec.Name), new DefaultConventions());
            var runner      = new ContextRunner(builder, new ConsoleFormatter(), false);
            var collection  = builder.Contexts().Build();
            var results     = runner.Run(collection);

            //assert that there aren't any failures
            var failures = results.Failures();
            var count    = failures.Count();

            count.ShouldBe(0);

            // TODO: figure out how to programmatically skip, when there are pending
        }
コード例 #19
0
ファイル: Startup.cs プロジェクト: sbane/TSqlStrong
        static public int Main(string[] args)
        {
            var tagOrClassName = String.Empty;

            var types  = typeof(Startup).Assembly.GetTypes();
            var finder = new SpecFinder(types, "");

            var tagsFilter = new Tags().Parse(tagOrClassName);
            var builder    = new ContextBuilder(finder, tagsFilter, new DefaultConventions());

            var runner  = new ContextRunner(tagsFilter, new ConsoleFormatter(), false);
            var results = runner.Run(builder.Contexts().Build());

            System.Console.ReadLine();
            return((results.Failures().Count() > 0)
                ? -1
                : 0);
        }
コード例 #20
0
ファイル: nSpecTestHarness.cs プロジェクト: yozepi/Roku.Net
        protected internal void RunSpecs()
        {
            var types      = FindSpecTypes();
            var finder     = new SpecFinder(types, "");
            var tagsFilter = new Tags().Parse(Tags);
            var builder    = new ContextBuilder(finder, tagsFilter, new DefaultConventions());
            var runner     = new ContextRunner(tagsFilter, Formatter, FailFast);
            var contexts   = builder.Contexts().Build();

            bool hasFocusTags = contexts.AnyTaggedWithFocus();

            if (hasFocusTags)
            {
                tagsFilter = new Tags().Parse(NSpec.Domain.Tags.Focus);

                builder = new ContextBuilder(finder, tagsFilter, new DefaultConventions());

                runner = new ContextRunner(tagsFilter, Formatter, FailFast);

                contexts = builder.Contexts().Build();
            }


            var results = runner.Run(contexts);

            //assert that there aren't any failures
            Assert.AreEqual <int>(0, results.Failures().Count());

            var pending = results.Examples().Count(xmpl => xmpl.Pending);

            if (pending != 0)
            {
                Assert.Inconclusive("{0} spec(s) are marked as pending.", pending);
            }
            if (results.Examples().Count() == 0)
            {
                Assert.Inconclusive("Spec count is zero.");
            }
            if (hasFocusTags)
            {
                Assert.Inconclusive("One or more specs are tagged with focus.");
            }
        }
コード例 #21
0
ファイル: TestRunner.cs プロジェクト: xjpeter/Entitas-CSharp
        public static void Main(string[] args)
        {
            //format();
            //Tests.GenerateTestComponents.Generate();

            //var tagOrClassName = "focus";
            var tagOrClassName = string.Empty;

            var types = Assembly.GetAssembly(typeof(describe_Entity)).GetTypes();

            var finder     = new SpecFinder(types, "");
            var tagsFilter = new Tags().Parse(tagOrClassName);
            var builder    = new ContextBuilder(finder, tagsFilter, new DefaultConventions());
            var runner     = new ContextRunner(tagsFilter, new ConsoleFormatter(), false);

            var results = runner.Run(builder.Contexts().Build());

            Environment.Exit(results.Failures().Count());
        }
コード例 #22
0
        public void output_verification(Type output, Type [] testClasses, string tags)
        {
            var finder           = new SpecFinder(testClasses, "");
            var builder          = new ContextBuilder(finder, new Tags().Parse(tags), new DefaultConventions());
            var consoleFormatter = new ConsoleFormatter();

            var actual = new System.Collections.Generic.List <string>();

            consoleFormatter.WriteLineDelegate = actual.Add;

            var runner = new ContextRunner(builder, consoleFormatter, false);

            runner.Run(builder.Contexts().Build());

            var expectedString = ScrubStackTrace(ScrubNewLines(output.GetField("Output").GetValue(null) as string));
            var actualString   = ScrubStackTrace(String.Join("\n", actual)).Trim();

            actualString.should_be(expectedString);

            var guid = Guid.NewGuid();
        }
コード例 #23
0
        private ContextCollection RunContexts(string tags)
        {
            var reflector = new Reflector(this.dll);

            var finder = new SpecFinder(reflector);

            var builder = new ContextBuilder(finder, new Tags().Parse(tags), new DefaultConventions());

            var runner = new ContextRunner(builder, new ConsoleFormatter(), false);

            var contexts = builder.Contexts().Build();

            if (contexts.AnyTaggedWithFocus())
            {
                builder = new ContextBuilder(finder, new Tags().Parse(NSpec.Domain.Tags.Focus), new DefaultConventions());

                runner = new ContextRunner(builder, new ConsoleFormatter(), false);
            }

            return(runner.Run(builder.Contexts().Build()));
        }
コード例 #24
0
    //[Test]
    public void debug()
    {
        var tagOrClassName = "Board_tests";

        var types = GetType().GetTypeInfo().Assembly.GetTypes();
        // OR
        // var types = new Type[]{typeof(Some_Type_Containg_some_Specs)};

        var finder = new SpecFinder(types, "");

        var tagsFilter = new Tags().Parse(tagOrClassName);

        var builder = new ContextBuilder(finder, tagsFilter, new DefaultConventions());

        var runner = new ContextRunner(tagsFilter, new ConsoleFormatter(), false);

        var results = runner.Run(builder.Contexts().Build());

        //assert that there aren't any failures
        (results.Failures().Count() == 0).ShouldBeTrue();
    }
コード例 #25
0
ファイル: Program.cs プロジェクト: nspec/NSpec.VsAdapter
        static void Main(string[] args)
        {
            var assemblies = new Assembly[]
            {
                typeof(SampleSpecs.DummyPublicClass).Assembly,
                typeof(ConfigSampleSpecs.DummyPublicClass).Assembly,
                typeof(SampleAsyncSpecs.DummyPublicClass).Assembly,
            };

            //types that should be considered for testing
            var types = assemblies.SelectMany(asm => asm.GetTypes()).ToArray();

            //now that we have our types, set up a finder so that NSpec
            //can determine the inheritance hierarchy
            var finder = new SpecFinder(types);

            //create a dummy, pass-all, tags filter
            var transparentTagsFilter = new Tags();

            //we've got our inheritance hierarchy,
            //now we can build our test tree using default conventions
            var builder = new ContextBuilder(finder, new DefaultConventions());

            //create the nspec runner with a
            //live formatter so we get console output
            var runner = new ContextRunner(transparentTagsFilter, new ConsoleFormatter(), false);

            //create our final collection of concrete tests
            var testCollection = builder.Contexts().Build();

            //run the tests and get results (to do whatever you want with)
            var results = runner.Run(testCollection);

            //console write line to pause the exe
            Console.WriteLine(Environment.NewLine + "Press <enter> to quit...");
            Console.ReadLine();
        }
コード例 #26
0
        public void ValidateSpec()
        {
            var finder  = new SpecFinder(new[] { GetType() });
            var builder = new ContextBuilder(finder, new DefaultConventions());

            ContextCollection result = new ContextRunner(builder, new MyFormatter(), false).Run(builder.Contexts().Build());

            if (result.Failures() == null)
            {
                Assert.Fail("*****   Failed to execute some tests   *****");
            }

            var crashes = result.AllContexts().Where(context => context.Exception != null).ToList();

            if (crashes.Any())
            {
                throw new SpecificationException("unknown", crashes.First().Exception);
            }

            if (result.Failures().Any())
            {
                throw new SpecificationException("unknown", result.First().Exception);
            }
        }
コード例 #27
0
 /// <summary>
 /// Uses reflection to handle exceptions defined in a <see cref="SimpleServer.Attributes.ConfigAttribute" />
 /// decorator.
 /// </summary>
 /// <param name="exception">An instance of a thrown <see cref="SimpleServer.Exceptions.AbstractServerException" /></param>
 /// <typeparam name="T">The implied Type of the Exception that extends
 /// <see cref="SimpleServer.Exceptions.AbstractServerException" /></typeparam>
 public static void HandleException(AbstractServerException exception, HttpListenerContext currentContext)
 {
     HandleException(exception, out ResponseEntity response);
     onError?.Invoke(exception);
     ContextRunner.SendResponse(response, currentContext);
 }