| #! /usr/bin/env perl |
| # Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License 2.0 (the "License"). You may not use |
| # this file except in compliance with the License. You can obtain a copy |
| # in the file LICENSE in the source distribution or at |
| # https://www.openssl.org/source/license.html |
| |
| use strict; |
| use warnings; |
| |
| use OpenSSL::Test qw(:DEFAULT data_file); |
| use File::Compare qw(compare_text); |
| |
| setup('test_bio_prefix'); |
| |
| my %input_result = ( |
| 'in1.txt' => [ 'args1.pl', 'out1.txt' ], |
| 'in2.txt' => [ 'args2.pl', 'out2.txt' ], |
| ); |
| |
| plan tests => 2 * scalar(keys %input_result); |
| |
| foreach (sort keys %input_result) { |
| SKIP: { |
| my $input_path = data_file($_); |
| my $args_path = data_file($input_result{$_}->[0]); |
| my $expected_path = data_file($input_result{$_}->[1]); |
| my $result_path = "test_bio_prefix-$_-stdout"; |
| my @args = do $args_path; |
| |
| skip "Problem prefixing $_", 1 |
| unless ok(run(test([ 'bio_prefix_text', @args ], |
| stdin => $input_path, stdout => $result_path)), |
| "prefixing $_ with args " . join(' ', @args)); |
| is(compare_text($result_path, $expected_path, \&cmp_line), 0, |
| "comparing the dump of $_ with $expected_path"); |
| } |
| } |
| |
| sub cmp_line { |
| return 0 if scalar @_ == 0; |
| |
| if (scalar @_ != 2) { |
| diag "Lines to compare less than 2: ", scalar @_; |
| return -1; |
| } |
| |
| $_[0] =~ s|\R$||; |
| $_[1] =~ s|\R$||; |
| my $r = $_[0] cmp $_[1]; |
| |
| diag "Lines differ:\n<: $_[0]\n>: $_[1]\n" unless $r == 0; |
| return $r; |
| } |