Add proper tests
This commit is contained in:
parent
31bab456b0
commit
d35611b813
5 changed files with 47 additions and 19 deletions
3
Makefile
Normal file
3
Makefile
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
.PHONY: test
|
||||||
|
test:
|
||||||
|
@prove -e $(PWD)/tool/test-runner.pl -v $(PWD)/t/
|
1
t/bool.t
Normal file
1
t/bool.t
Normal file
|
@ -0,0 +1 @@
|
||||||
|
(expect "True is true" t)
|
2
t/comments.t
Normal file
2
t/comments.t
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
;; This is a comment
|
||||||
|
(expect "Comment does not influence code" t)
|
19
test.pl
19
test.pl
|
@ -1,19 +0,0 @@
|
||||||
use lib "./lib";
|
|
||||||
|
|
||||||
use Minilisp;
|
|
||||||
use Data::Dumper;
|
|
||||||
|
|
||||||
my $term = <<EOF;
|
|
||||||
(defun fact (n) (if (> n 1) (* n (fact (- n 1))) 1))
|
|
||||||
|
|
||||||
(write-line (fact 5))
|
|
||||||
EOF
|
|
||||||
|
|
||||||
my $parsed = Minilisp::compile($term);
|
|
||||||
|
|
||||||
my $ctx = {
|
|
||||||
'a' => "bar",
|
|
||||||
};
|
|
||||||
|
|
||||||
print "$term\n";
|
|
||||||
print ":= " . $parsed->($ctx) . "\n";
|
|
41
tool/test-runner.pl
Executable file
41
tool/test-runner.pl
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use FindBin;
|
||||||
|
|
||||||
|
use lib "$FindBin::Bin/../lib";
|
||||||
|
|
||||||
|
use Minilisp;
|
||||||
|
|
||||||
|
my $scriptfile = shift;
|
||||||
|
|
||||||
|
die "No script file provided." unless defined $scriptfile && -f $scriptfile;
|
||||||
|
|
||||||
|
open(my $fh, "<", $scriptfile) or die "Could not open $scriptfile: $!";
|
||||||
|
my $script = do { local $/; <$fh> };
|
||||||
|
close($fh);
|
||||||
|
|
||||||
|
# Remove shebang
|
||||||
|
$script =~ s/^#!.*\n//;
|
||||||
|
|
||||||
|
my $parsed = Minilisp::compile($script);
|
||||||
|
|
||||||
|
my $plan = 0;
|
||||||
|
|
||||||
|
my $ctx = {
|
||||||
|
'expect' => sub {
|
||||||
|
my ($desc, $success) = @_;
|
||||||
|
print "not " unless $success;
|
||||||
|
print "ok - $desc\n";
|
||||||
|
$plan++;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
print "TAP Version 13\n";
|
||||||
|
$parsed->($ctx);
|
||||||
|
|
||||||
|
print "1..$plan\n";
|
||||||
|
|
||||||
|
exit 0;
|
Loading…
Reference in a new issue