#!/usr/bin/env perl use strict; use warnings; use Test::More; if (-f glob("~/.a8rc")) { plan(skip_all => "you can't run a8it unit tests if a ~/.a8rc file exists"); } else { plan(tests => 26); } my $a8it = "$^X -Iblib -It/lib scripts/a8it %s 2>&1"; sub runcmd { my $cmd = sprintf($a8it, @_); return `$cmd`; } sub generate_tap { my $str; my $count = 0; foreach my $testcount (map { split(//, $_) } @_) { foreach my $linenum (1 .. $testcount) { $str .= sprintf("ok %d - fixture%d\n", ++$count, $linenum); } } return "1..$count\n$str"; } DashDash_help: { my $output; $output = runcmd("--help"); ok($output =~ /^Usage:/s, "--help usage"); } DashDash_version: { my $output; $output = runcmd("--version"); ok($output =~ /^a8it version /, "--version info"); } DashDash_file_root: { my $output; $output = runcmd("--file_root=t/testdata/empty"); is($?, 0, "check error code"); is($output, "", "expect empty output since no tests ran"); $output = runcmd("--file_root=t/testdata/cases"); is($?, 0, "check error code"); like($output, qr/^1\.\.\d+/, "expect TAP output preamble for each file"); is($output, generate_tap(4 x 6, 2 x 4), "check actual TAP output"); $output = runcmd("--file_root=t/testdata/cases t/testdata/cases/test1.tc"); is($?, 0, "single file: check error code"); is($output, generate_tap(4), "single file: check actual TAP output"); $output = runcmd("--file_root=t/testdata/cases t/testdata/cases/test1.tc t/testdata/cases/test_multiple.st"); is($?, 0, "multiple files: check error code"); is($output, generate_tap(4 x 4), "multiple files: check actual TAP output"); } DashDash_verbose: { my $output; $output = runcmd("--file_root=t/testdata/cases -v t/testdata/cases/test1.tc"); is($?, 0, "single verbose: check error code"); is($output, <&1`; is($?, 0, "check error code"); is($output, generate_tap(4 x 3), "expect one test file worth of TAP output"); } }