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