mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-07-26 02:30:35 +02:00
tests: cut: exercise distro-added multibyte code paths
* tests/misc/cut: Repeat each test using a multibyte locale, if the configure-time test found such a locale. Adjust the tests so that they also accept a slightly different diagnostic that is specific to the MB-patched cut.
This commit is contained in:
@@ -23,6 +23,10 @@ use strict;
|
||||
# Turn off localization of executable's output.
|
||||
@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
|
||||
|
||||
my $mb_locale = $ENV{LOCALE_FR_UTF8};
|
||||
! defined $mb_locale || $mb_locale eq 'none'
|
||||
and $mb_locale = 'C';
|
||||
|
||||
my $prog = 'cut';
|
||||
my $try = "Try \`$prog --help' for more information.\n";
|
||||
my $from_1 = "$prog: fields and positions are numbered from 1\n$try";
|
||||
@@ -156,6 +160,35 @@ my @Tests =
|
||||
['big-unbounded-f', '--output-d=:', '-f1234567890-', {IN=>''}, {OUT=>''}],
|
||||
);
|
||||
|
||||
if ($mb_locale ne 'C')
|
||||
{
|
||||
# Duplicate each test vector, appending "-mb" to the test name and
|
||||
# inserting {ENV => "LC_ALL=$mb_locale"} in the copy, so that we
|
||||
# provide coverage for the distro-added multi-byte code paths.
|
||||
my @new;
|
||||
foreach my $t (@Tests)
|
||||
{
|
||||
my @new_t = @$t;
|
||||
my $test_name = shift @new_t;
|
||||
|
||||
# Depending on whether cut is multi-byte-patched,
|
||||
# it emits different diagnostics:
|
||||
# non-MB: invalid byte or field list
|
||||
# MB: invalid byte, character or field list
|
||||
# Adjust the expected error output accordingly.
|
||||
if (grep {ref $_ eq 'HASH' && exists $_->{ERR} && $_->{ERR} eq $inval}
|
||||
(@new_t))
|
||||
{
|
||||
my $sub = {ERR_SUBST => 's/, character//'};
|
||||
push @new_t, $sub;
|
||||
push @$t, $sub;
|
||||
}
|
||||
push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
|
||||
}
|
||||
push @Tests, @new;
|
||||
}
|
||||
|
||||
|
||||
@Tests = triple_test \@Tests;
|
||||
|
||||
my $save_temps = $ENV{DEBUG};
|
||||
|
||||
Reference in New Issue
Block a user