Add gpg key generation from rfc822 template file.
[monkeysphere-validation-agent.git] / unit-tests / run-tests.pl
1 #!/usr/bin/perl
2 use strict;
3
4 use TAP::Harness;
5 use File::Find;
6 use FindBin;
7 use GnuPG::Interface;
8 use GnuPG::Handles;
9 use File::Temp qw(tempdir);
10
11 my $BINDIR;
12 BEGIN { $BINDIR = $FindBin::Bin; }
13
14
15
16 # Generate Keys from template file
17
18   my $tempdir = tempdir("/tmp/test-gnupgXXXXX", CLEANUP=> 1);
19   my $gnupg = new GnuPG::Interface();
20   $gnupg->options->hash_init(homedir=>$tempdir,batch=>1);
21
22   my $GPGQR='';
23   if (system qw(gpg --quick-random --version) ==0) {
24     $GPGQR='--quick-random';
25   } elsif (system qw(gpg --debug-quick-random --version) ==0) {
26     $GPGQR='--debug-quick-random';
27   }
28
29   print STDERR "WARNING: no quick random option found. Tests may hang!\n" 
30     unless(scalar $GPGQR);
31
32   my $pid = $gnupg->wrap_call( commands=>[qw(--gen-key --batch),$GPGQR],
33                                command_args=>[$BINDIR.'/keys.txt'],
34                                handles=>new GnuPG::Handles() );
35   waitpid $pid,0;
36
37   $ENV{GNUPGHOME}=$tempdir;
38 }
39
40 my @dirs = scalar(@ARGV) > 0 ? @ARGV : ($BINDIR);
41
42 my @tests;
43
44 sub wanted {
45   push (@tests,$File::Find::name) if -f && m/.*\.t$/;
46 }
47
48 find(\&wanted, @dirs);
49
50 @tests=sort @tests;
51
52 print STDERR "found ",scalar(@tests)," tests\n";
53
54 my $harness = TAP::Harness->new( { verbosity => 1,
55                                   lib => [ $BINDIR.'/..'] });
56
57 $harness->runtests(@tests);
58
59 1;