#! /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; }