aboutsummaryrefslogtreecommitdiff
path: root/tap/tests/todo
diff options
context:
space:
mode:
Diffstat (limited to 'tap/tests/todo')
-rw-r--r--tap/tests/todo/Makefile.am13
-rw-r--r--tap/tests/todo/test.c68
-rw-r--r--tap/tests/todo/test.pl41
-rw-r--r--tap/tests/todo/test.t29
4 files changed, 151 insertions, 0 deletions
diff --git a/tap/tests/todo/Makefile.am b/tap/tests/todo/Makefile.am
new file mode 100644
index 00000000..c1ccb751
--- /dev/null
+++ b/tap/tests/todo/Makefile.am
@@ -0,0 +1,13 @@
+
+TESTS = test.t
+TESTS_ENVIRONMENT = $(SHELL)
+
+EXTRA_DIST = $(TESTS) test.pl
+
+check_PROGRAMS = test
+
+test_CFLAGS = -g -I../../src
+test_LDFLAGS = -L../../src
+test_LDADD = -ltap
+
+CLEANFILES = test.o test.c.out test.pl.out
diff --git a/tap/tests/todo/test.c b/tap/tests/todo/test.c
new file mode 100644
index 00000000..ac6339a7
--- /dev/null
+++ b/tap/tests/todo/test.c
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2004 Nik Clayton
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+
+#include "tap.h"
+
+int
+main(int argc, char *argv[])
+{
+ unsigned int rc = 0;
+ unsigned int side_effect = 0;
+
+ rc = plan_tests(5);
+ diag("Returned: %d", rc);
+
+ rc = ok(1 == 1, "1 equals 1"); /* Should always work */
+ diag("Returned: %d", rc);
+
+ todo_start("For testing purposes");
+
+ side_effect++;
+
+ /* This test should fail */
+ rc = ok(side_effect == 0, "side_effect checked out");
+ diag("Returned: %d", rc);
+
+ /* This test should unexpectedly succeed */
+ rc = ok(side_effect == 1, "side_effect checked out");
+ diag("Returned: %d", rc);
+
+ todo_end();
+
+ todo_start("Testing printf() %s in todo_start()", "expansion");
+
+ rc = ok(0, "dummy test");
+ diag("Returned: %d", rc);
+
+ todo_end();
+
+ rc = ok(side_effect == 1, "side_effect is %d", side_effect);
+ diag("Returned: %d", rc);
+
+ return exit_status();
+}
diff --git a/tap/tests/todo/test.pl b/tap/tests/todo/test.pl
new file mode 100644
index 00000000..2621e12f
--- /dev/null
+++ b/tap/tests/todo/test.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use Test::More;
+
+my $rc = 0;
+
+$rc = plan tests => 5;
+diag("Returned: " . sprintf("%d", $rc));
+
+my $side_effect = 0; # Check whether TODO has side effects
+
+$rc = ok(1 == 1, '1 equals 1'); # Test ok() passes when it should
+diag("Returned: $rc");
+
+# Start TODO tests
+TODO: {
+ local $TODO = 'For testing purposes';
+
+ $side_effect++;
+
+ # This test should fail
+ $rc = ok($side_effect == 0, 'side_effect checked out');
+ diag("Returned: $rc");
+
+ # This test should unexpectedly succeed
+ $rc = ok($side_effect == 1, 'side_effect checked out');
+ diag("Returned: $rc");
+}
+
+TODO: {
+ local $TODO = 'Testing printf() expansion in todo_start()';
+
+ $rc = ok(0, 'dummy test');
+ diag("Returned: $rc");
+}
+
+$rc = ok($side_effect == 1, "side_effect is $side_effect");
+diag("Returned: $rc");
diff --git a/tap/tests/todo/test.t b/tap/tests/todo/test.t
new file mode 100644
index 00000000..7dbb17b6
--- /dev/null
+++ b/tap/tests/todo/test.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+cd `dirname $0`
+
+echo '1..2'
+
+make 2>&1 > /dev/null
+
+perl ./test.pl 2>&1 | sed -e 's/# Failed (TODO) test \(.*\)/# Failed (TODO) test ()/' > test.pl.out
+perlstatus=$?
+
+./test 2>&1 | sed -e 's/# Failed (TODO) test \(.*\)/# Failed (TODO) test ()/' > test.c.out
+cstatus=$?
+
+diff -u test.pl.out test.c.out
+
+if [ $? -eq 0 ]; then
+ echo 'ok 1 - output is identical'
+else
+ echo 'not ok 1 - output is identical'
+fi
+
+if [ $perlstatus -eq $cstatus ]; then
+ echo 'ok 2 - status code'
+else
+ echo 'not ok 2 - status code'
+ echo "# perlstatus = $perlstatus"
+ echo "# cstatus = $cstatus"
+fi