1#!/usr/bin/perl 2# Exercise dd's conv=unblock mode 3 4# Copyright (C) 2009-2023 Free Software Foundation, Inc. 5 6# This program is free software: you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation, either version 3 of the License, or 9# (at your option) any later version. 10 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15 16# You should have received a copy of the GNU General Public License 17# along with this program. If not, see <https://www.gnu.org/licenses/>. 18 19use strict; 20 21(my $program_name = $0) =~ s|.*/||; 22 23# Turn off localization of executable's output. 24@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; 25my $out = 'out'; 26 27my @t = 28 ( 29 # An empty test name signals that these are the arguments to use for the 30 # following tests. 31 ['', [qw (cbs=3 conv=unblock status=noxfer < )]], 32 ['0', '', ''], 33 ['1', "a\n ", "a\n\n\n"], 34 ['2', "a\n ", "a\n\n"], 35 ['3', "a ", "a\n"], 36 ['4', "a \n ", "a \n\n\n"], 37 ['5', "a \n", "a \n\n"], 38 ['6', "a ", "a\n\n"], 39 ['7', "a \n", "a\n\n\n"], 40 ); 41 42my @Tests; 43my $args; 44foreach my $t (@t) 45 { 46 $t->[0] eq '' 47 and $args = $t->[1], next; 48 49 push @Tests, [$t->[0], @$args, {IN=>$t->[1]}, {OUT=>$t->[2]}, 50 {ERR_SUBST=>'s/^\d+\+\d+ records (?:in|out)$//'}, 51 {ERR=>"\n\n"}]; 52 } 53 54my $save_temps = $ENV{DEBUG}; 55my $verbose = $ENV{VERBOSE}; 56 57my $prog = 'dd'; 58my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose); 59exit $fail; 60