File: T.pm

package info (click to toggle)
libapache-asp-perl 2.62-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 4,108 kB
  • ctags: 830
  • sloc: perl: 6,033; php: 417; sh: 65; lisp: 22; makefile: 10
file content (91 lines) | stat: -rw-r--r-- 1,376 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!perl -w

package T;
use Carp qw(cluck);
no strict 'vars';

sub new {
    my($class, $data, $input) = @_;
    $class ||= 'T';
    bless {
	   'data' => $data, 
	   'input' => $input,
	   't' => 0
	}, $class;
}    

sub skip {
    my $self = shift;
    $self->{t}++;
    $self->{buffer} .= "ok $self->{t} # skip\n";
}

sub ok {
    $_[0]->{t}++;
    $_[0]->{buffer} .= "ok\n";
}

*not = *not_ok;
sub not_ok {
    my($self, $warn) = @_;

    if($warn) {
	warn "[failure] $warn";
    }
    
    $self->{t}++;
    $self->{buffer} .= "not ok\n";
}

sub add {
    $_[0]->{buffer} .= "$_[1]\n";
}

sub test {
    my($self) = @_;
    my($k, $v);

    while(($k, $v) = each %{$self->{data}}) {
	$test = "$k=$v";
	if($self->{input} =~ /\[\[$test\]\]/) {
	    $self->ok();
	} else {
	    $self->not_ok();
	    print "$test data not found\n";
	}
    }
}

sub done {
    my $self = shift;
    return if $self->{done}++;
    print "1..$self->{t}\n";
    print $self->{buffer};
}

sub do {
    my($class, $data, $input) = @_;

    my $self = new($class, $data, $input);
    $self->test();
    $self->done();

    1;
}

*eok = *eval_ok;
sub eval_ok {
    my($self, $test, $error) = @_;

    my $result = (ref($test) =~ /CODE/) ? eval { &$test } : eval { $test };
    if($result) {
	$self->ok();
    } else {
	my $tail = $@ ? ", $@" : '';
	$self->not($error.$tail);
    }

    $result;
}

1;