]> git.saurik.com Git - apple/security.git/blame - SecurityTests/regressions/t/security.pl
Security-57337.40.85.tar.gz
[apple/security.git] / SecurityTests / regressions / t / security.pl
CommitLineData
427c49bc 1#!/usr/bin/perl -w
427c49bc
A
2
3my $pid = $$;
4
5END {
6 return unless $$ == $pid;
7 rm_test($_) for @TOCLEAN;
8}
9
10use strict;
11use Test::More;
d8f41ccd 12use lib 't';
427c49bc
A
13use IPC::Run3;
14
15sub plan_security {
16
17 unless (1) {
18 plan skip_all => "security not installed";
19 exit;
20 };
21 plan @_;
22}
23
24use Carp;
25our @TOCLEAN;
26END {
27 return unless $$ == $pid;
28 $SIG{__WARN__} = sub { 1 };
29 cleanup_test($_) for @TOCLEAN;
30}
31
32our $output = '';
33
34sub build_test {
35 my $xd = "/tmp/test-$pid";
36 my $security = 'security';
37 $ENV{HOME} = $xd;
38 push @TOCLEAN, [$xd, $security];
39 return ($xd, $security);
40}
41
42sub rm_test {
43 my ($xd, $security) = @{+shift};
44 #rmtree [$xd];
45}
46
47sub cleanup_test {
48 return unless $ENV{TEST_VERBOSE};
49 my ($xd, $security) = @{+shift};
50}
51
52sub is_output {
53 my ($security, $cmd, $arg, $expected, $test) = @_;
54 $output = '';
55 run3([$security, $cmd, @$arg], \undef, \$output, \$output);
56# open(STDOUT, ">&STDERR") || die "couldn't dup strerr: $!";
57# open(my $out, '-|', $security, $cmd, @$arg);
58# while (<$out>) { $output .= $_; }
59
60 my $cmp = (grep {ref ($_) eq 'Regexp'} @$expected)
61 ? \&is_deeply_like : \&is_deeply;
62 @_ = ([sort split (/\r?\n/, $output)], [sort @$expected], $test || join(' ', $cmd, @$arg));
63 goto &$cmp;
64}
65
661;