Пример #1
0
        public void ParsesAsyncStream()
        {
            var tapContent = "TAP version 13\r\n" +
                             "1..4\r\n" +
                             "ok 1 - Input file opened\r\n" +
                             "not ok 2 - First line of the input valid\r\n" +
                             "  ---\r\n" +
                             "  message: \'First line invalid\'\r\n" +
                             "  severity: fail\r\n" +
                             "  data:\r\n" +
                             "    got: \'Flirble\'\r\n" +
                             "    expect: \'Fnible\'\r\n" +
                             "  ...\r\n" +
                             "ok 3 - Read the rest of the file\r\n" +
                             "not ok 4 - Summarized correctly # TODO Not written yet\r\n" +
                             "  ---\r\n" +
                             "  message: \"Can\'t make summary yet\"\r\n" +
                             "  severity: todo\r\n" +
                             "  ...";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent)).Tests.ToList();

            Assert.True(results.Count == 4, "Expected count is 4");

            var fourthResult = results[3];

            Assert.Equal("Summarized correctly", fourthResult.Description);
            Assert.Equal("Not written yet", fourthResult.Directive);
            Assert.False(String.IsNullOrEmpty(fourthResult.YAML["message"]), "Expected to contain YAML content.");
            Assert.Equal(fourthResult.YAML["message"], "Can't make summary yet");
        }
Пример #2
0
        public void RecievesParserBailOutAction()
        {
            var tapContent = "TAP version 13\r\n" +
                             "1..4\r\n" +
                             "ok 1 - Input file opened\r\n" +
                             "not ok 2 - First line of the input valid\r\n" +
                             "BAIL OUT! SUNE LEFT THE BUILDING!";

            var    parser         = new TAPParser();
            var    ev             = new ManualResetEvent(false);
            string bailoutMessage = String.Empty;

            parser.OnBailout += s =>
            {
                bailoutMessage = s;
                ev.Set();
            };

            var t = parser.ParseAsync(CreateMemoryStream(tapContent));

            Assert.True(ev.WaitOne());
            Assert.Equal("SUNE LEFT THE BUILDING!", bailoutMessage);
            var res = t.Result;

            Assert.True(res.BailedOut);
        }
Пример #3
0
        public void ParseUTF8()
        {
            var tapContent = "TAP version 13\r\n" +
                             "1..4\r\n" +
                             "ok 1 - Input file opened ê 📰 📝\r\n" +
                             "not ok 2 - First line of the input valid\r\n" +
                             "  ---\r\n" +
                             "  message: \'First line 🔥 invalid\'\r\n" +
                             "  severity: fail\r\n" +
                             "  data:\r\n" +
                             "    got: \'🔈\'\r\n" +
                             "    expect: \'🔇\'\r\n" +
                             "  ...\r\n" +
                             "ok 3 - Read the rest of the file\r\n" +
                             "not ok 4 - Summarized correctly # TODO 🐛 Not written yet\r\n" +
                             "  ---\r\n" +
                             "  message: \"Can\'t make 🐧 yet\"\r\n" +
                             "  severity: todo\r\n" +
                             "  ...";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent)).Tests.ToList();

            Assert.Equal(4, results.Count);

            var firstTest = results.First();

            Assert.True(firstTest.Description == "Input file opened ê 📰 📝");
        }
Пример #4
0
        public void RecievesParserDiagnosticAction()
        {
            var tapContent = "TAP version 13\n" +
                             "# Some diagnostics\n" +
                             "# Some more diagnostics\n" +
                             "ok # TODO Sune\n" +
                             "# Some test diagnostic\n" +
                             "not ok # Skip Sune\n";

            var diagnosticMessages = new List <string>();

            var ev     = new CountdownEvent(2);
            var parser = new TAPParser();

            parser.OnDiagnostic += message =>
            {
                diagnosticMessages.Add(message);
                ev.Signal();
            };

            var t = parser.ParseAsync(CreateMemoryStream(tapContent));

            ev.Wait();
            Assert.Equal(2, diagnosticMessages.Count);
            Assert.Equal("Some diagnostics", diagnosticMessages[0]);
            Assert.Equal("Some more diagnostics", diagnosticMessages[1]);
            t.Wait();
        }
Пример #5
0
        public void RecievesParserTestLineDiagnosticAction()
        {
            var tapContent = "TAP version 13\n" +
                             "# Some diagnostics\n" +
                             "# Some more diagnostics\n" +
                             "ok # TODO Sune\n" +
                             "# Some test diagnostic\n";

            string   diagnosticsMessage = string.Empty;
            int      recievedCount      = 0;
            TestLine testLine           = null;

            var ev     = new ManualResetEvent(false);
            var parser = new TAPParser();

            parser.OnTestResultDiagnostic += (tl, message) =>
            {
                recievedCount++;
                diagnosticsMessage = message;
                testLine           = tl;
                ev.Set();
            };

            var t = parser.ParseAsync(CreateMemoryStream(tapContent));

            Assert.True(ev.WaitOne());
            Assert.Equal(1, recievedCount);
            Assert.Equal("Some test diagnostic", diagnosticsMessage);
            Assert.Equal("Sune", testLine.Directive);
            t.Wait();
        }
Пример #6
0
        public void RecievesParserYamlAction()
        {
            var tapContent = "TAP version 13\r\n" +
                             "1..4\r\n" +
                             "ok 1 - Input file opened\r\n" +
                             "not ok 2 - First line of the input valid\r\n" +
                             "  ---\r\n" +
                             "  message: \'First line invalid\'\r\n" +
                             "  ...\r\n" +
                             "ok 3 - Read the rest of the file\r\n";

            TestLine line = null;
            dynamic  yaml = null;

            var parser = new TAPParser();
            var ev     = new ManualResetEvent(false);

            parser.OnYaml += (tl, o) =>
            {
                line = tl;
                yaml = o;
                ev.Set();
            };

            var t = parser.ParseAsync(CreateMemoryStream(tapContent));

            Assert.True(ev.WaitOne());
            Assert.NotNull(yaml);
            Assert.NotNull(line);
            Assert.Equal(yaml, line.YAML);
            Assert.Equal("First line invalid", yaml["message"]);
            Assert.Equal("First line of the input valid", line.Description);
            t.Wait();
        }
Пример #7
0
        public void RecievesParserTestLineAction()
        {
            var tapContent = "TAP version 13\n" +
                             "1..3\n" +
                             "ok - Sune\n" +
                             "not ok 2 - Bune\n" +
                             "not ok - Lune\n";

            var      ev       = new CountdownEvent(3);
            var      parser   = new TAPParser();
            TestLine testLine = null;

            parser.OnTestResult += line =>
            {
                testLine = line;
                ev.Signal();
            };

            var t = parser.ParseAsync(CreateMemoryStream(tapContent));

            ev.Wait();

            Assert.Equal(0, ev.CurrentCount);
            Assert.NotNull(testLine);
            Assert.Equal("Lune", testLine.Description);
            t.Wait();
        }
Пример #8
0
        public void ParsesTestPlanPostTests()
        {
            var tapContent = "TAP version 13\n" +
                             "ok - Sayan! # TODO Sune\n" +
                             "not ok - ÄÅÖ # Skip Sune\n" +
                             "1..3\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent)).Tests.ToList();

            Assert.Equal(3, results.Count);

            Assert.Equal(1u, results[0].Index);
            Assert.Equal(2u, results[1].Index);
            Assert.Equal(3u, results[2].Index);

            Assert.True(results[0].Todo);
            Assert.Equal("Sayan!", results[0].Description);

            Assert.True(results[1].Skipped);
            Assert.Equal("ÄÅÖ", results[1].Description);

            Assert.Equal(TestResult.NotOk, results[2].Status);
            Assert.Equal("", results[2].Description);
        }
Пример #9
0
        public void RecievesParserTestPlanAction()
        {
            var tapContent = "TAP version 13\n" +
                             "1..5\n";

            uint firstIndex = 0;
            uint lastIndex  = 0;

            var ev     = new ManualResetEvent(false);
            var parser = new TAPParser();

            parser.OnTestPlan += u =>
            {
                firstIndex = u.FirstTestIndex;
                lastIndex  = u.LastTestIndex;
                ev.Set();
            };

            var t = parser.ParseAsync(CreateMemoryStream(tapContent));

            Assert.True(ev.WaitOne());
            Assert.Equal(1u, firstIndex);
            Assert.Equal(5u, lastIndex);
            t.Wait();
        }
Пример #10
0
        public void ParsesTooHighTAPVersion()
        {
            var tapContent = "TAP version 100\n" +
                             "ok # TODO Sune\n" +
                             "not ok # Skip Sune\n";

            var parser = new TAPParser();

            Assert.Throws <TAPParserException>(() => parser.Parse(CreateMemoryStream(tapContent)));
        }
Пример #11
0
        public void ParsesTAPVersion()
        {
            var tapContent = "TAP version 11\n" +
                             "ok # TODO Sune\n" +
                             "not ok # Skip Sune\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent));

            Assert.Equal(11u, results.TAPVersion);
        }
Пример #12
0
        public void ParsesSkippedTestPlan()
        {
            var tapContent = "1..0 # Skipped: WWW::Wok not installed";
            var parser     = new TAPParser();
            var results    = parser.Parse(CreateMemoryStream(tapContent));
            var tests      = results.Tests.ToList();

            Assert.Empty(tests);
            Assert.Equal(0u, results.TestPlan.LastTestIndex);
            Assert.Equal(1u, results.TestPlan.FirstTestIndex);
            Assert.Equal("WWW::Wok not installed", results.TestPlan.Directive);
            Assert.True(results.TestPlan.Skipped);
        }
Пример #13
0
        public void ParsesBailOut()
        {
            var tapContent = "TAP version 13\n" +
                             "ok # TODO Sune\n" +
                             "# Some test diagnostic\n" +
                             "# Some Sune\n" +
                             "Bail Out! Det ballar ur!\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent));

            Assert.True(results.BailedOut);
            Assert.Equal("Det ballar ur!", results.BailOutMessage);
        }
Пример #14
0
        public void ParsesMissingIndex()
        {
            var tapContent = "TAP version 13\n" +
                             "1..3\n" +
                             "ok - Sune\n" +
                             "not ok 2\n" +
                             "not ok\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent)).Tests.ToList();

            Assert.Equal(1u, results[0].Index);
            Assert.Equal(3u, results[2].Index);
        }
Пример #15
0
        public void ParsesMissingTest()
        {
            var tapContent = "TAP version 13\n" +
                             "1..3\n" +
                             "ok 1\n" +
                             "not ok 2\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent)).Tests.ToList();

            Assert.True(results.Count == 3, "Expected count to be 3 even though only two tests were reported");
            var thirdResult = results[2];

            Assert.True(thirdResult.Status == TestResult.NotOk);
        }
Пример #16
0
        public void ParseTestSessionDiagnostics()
        {
            var tapContent = "TAP version 13\n" +
                             "# Some diagnostics\n" +
                             "# Some more diagnostics\n" +
                             "ok # TODO Sune\n" +
                             "# Some test diagnostic\n" +
                             "not ok # Skip Sune\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent));

            Assert.Equal(2, results.DiagnosticMessages.Count);
            Assert.Equal("Some diagnostics", results.DiagnosticMessages[0]);
            Assert.Equal("Some more diagnostics", results.DiagnosticMessages[1]);
        }
Пример #17
0
        public void ParseYamlContentWithDotsAndDashes()
        {
            var tapContent = "TAP version 13\r\n" +
                             "1..4\r\n" +
                             "ok 1 - Input file opened\r\n" +
                             "not ok 2 - First line of the input valid\r\n" +
                             "  ---\r\n" +
                             "  got: \'some unexpected dots ...\'\r\n" +
                             "  expect: \'some unexpected dashes\'\r\n" +
                             "  ...\r\n" +
                             "ok 3 - Read the rest of the file\r\n" +
                             "not ok 4 - Summarized correctly # TODO Not written yet\r\n" +
                             "  ---\r\n" +
                             "  message: \"Can\'t make --- yet\"\r\n" +
                             "  severity: ...\r\n" +
                             "  ...";

            var errored   = false;
            var bailedOut = false;
            var parser    = new TAPParser();

            parser.OnError += exception =>
            {
                errored = true;
            };

            parser.OnBailout += message =>
            {
                bailedOut = true;
            };

            var results = parser.Parse(CreateMemoryStream(tapContent)).Tests.ToList();

            Assert.False(errored, "Expected nettap to successfully parse content.");
            Assert.False(bailedOut, "Expected nettap to successfully parse content.");

            Assert.True(results.Count == 4, "Expected count is 4");

            var secondResult = results[1];

            Assert.Equal(secondResult.YAML["got"], "some unexpected dots ...");

            var fourthResult = results[3];

            Assert.Equal(fourthResult.YAML["message"], "Can\'t make --- yet");
            Assert.Equal(fourthResult.YAML["severity"], "...");
        }
Пример #18
0
        public void RecievesParserErrorAction()
        {
            var tapContent = "asdsdagsfad #¤)=/=!(¤=!¤9";

            var ev     = new ManualResetEvent(false);
            var parser = new TAPParser();

            parser.OnError += exception =>
            {
                ev.Set();
            };

            var t = parser.ParseAsync(CreateMemoryStream(tapContent));

            Assert.True(ev.WaitOne());
            t.Wait();
        }
Пример #19
0
        public void ParseTodoDirective()
        {
            var tapContent = "TAP version 13\n" +
                             "1..2\n" +
                             "ok 1\n" +
                             "not ok 2 # TODO sune must fix\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent)).Tests.ToList();

            var result = results[1];

            Assert.True(result.Todo);
            Assert.Equal(TestResult.NotOk, result.Status);
            Assert.Empty(result.Description);
            Assert.Equal("sune must fix", result.Directive);
        }
Пример #20
0
        public void ParsesTestsNoPlan()
        {
            var tapContent = "TAP version 13\n" +
                             "ok # TODO Sune\n" +
                             "not ok # Skip Sune\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent)).Tests.ToList();

            Assert.Equal(1u, results[0].Index);
            Assert.Equal(2u, results[1].Index);

            Assert.True(results[0].Todo);
            Assert.Equal("Sune", results[0].Directive);

            Assert.True(results[1].Skipped);
            Assert.Equal("Sune", results[1].Directive);
        }
Пример #21
0
        public void RecievesParsedStreamCopy()
        {
            var tapContent = "TAP version 13\r\n" +
                             "1..4\r\n" +
                             "ok 1 - Input file opened\r\n" +
                             "not ok 2 - First line of the input valid\r\n" +
                             "BAIL OUT! SUNE LEFT THE BUILDING!\r\n";

            var parser = new TAPParser();

            var    result = parser.Parse(CreateMemoryStream(tapContent), true);
            string resultTAPContent;

            using (var reader = new StreamReader(result.TAPContent, Encoding.UTF8))
                resultTAPContent = reader.ReadToEnd();

            Assert.Equal(tapContent, resultTAPContent);
        }
Пример #22
0
        public void RecievesParserVersionAction()
        {
            var  tapContent = "TAP version 13\n";
            uint version    = 0;
            var  ev         = new ManualResetEvent(false);
            var  parser     = new TAPParser();

            parser.OnVersion += u =>
            {
                version = u;
                ev.Set();
            };

            var t = parser.ParseAsync(CreateMemoryStream(tapContent));

            Assert.True(ev.WaitOne());
            Assert.Equal(13u, version);
            t.Wait();
        }
Пример #23
0
        public void ParseTestDiagnostics()
        {
            var tapContent = "TAP version 13\n" +
                             "ok # TODO Sune\n" +
                             "# Some test diagnostic\n" +
                             "# Some Sune\n" +
                             "not ok # Skip Sune\n";

            var parser  = new TAPParser();
            var results = parser.Parse(CreateMemoryStream(tapContent));
            var tests   = results.Tests.ToList();

            Assert.Empty(results.DiagnosticMessages);
            Assert.Equal(2, tests[0].DiagnosticMessages.Count);
            Assert.Equal("Some test diagnostic", tests[0].DiagnosticMessages[0]);
            Assert.Equal("Some Sune", tests[0].DiagnosticMessages[1]);

            Assert.Empty(tests[1].DiagnosticMessages);
        }
Пример #24
0
        public void ParseAsyncCancellation()
        {
            var tapContent = "TAP version 13\r\n" +
                             "1..4\r\n" +
                             "ok 1 - Input file opened\r\n" +
                             "not ok 2 - First line of the input valid\r\n" +
                             "  ---\r\n" +
                             "  message: \'First line invalid\'\r\n" +
                             "  severity: fail\r\n" +
                             "  data:\r\n" +
                             "    got: \'Flirble\'\r\n" +
                             "    expect: \'Fnible\'\r\n" +
                             "  ...\r\n" +
                             "ok 3 - Read the rest of the file\r\n" +
                             "not ok 4 - Summarized correctly # TODO Not written yet\r\n" +
                             "  ---\r\n" +
                             "  message: \"Can\'t make summary yet\"\r\n" +
                             "  severity: todo\r\n" +
                             "  ...";

            var parser      = new TAPParser();
            var tokenSource = new CancellationTokenSource();
            var token       = tokenSource.Token;

            tokenSource.Cancel();
            bool recievedCancelledException = false;

            try
            {
                var res = parser.ParseAsync(CreateMemoryStream(tapContent), false, token).Result;
            }
            catch (AggregateException e)
            {
                if (e?.InnerException.GetType() == typeof(TaskCanceledException))
                {
                    recievedCancelledException = true;
                }
            }

            Assert.True(recievedCancelledException, "Failed to catch task cancelled exception.");
        }
Пример #25
0
 internal void ShowTotals()
 {
     TAPParser.ShowTotals(TAPApp.Paths);
 }