Pádraig Brady wrote: > On 09/01/2011 07:33 PM, Philipp Thomas wrote: >> >> Cut from older coreutils (at least until 7.1) honoured --output-delimiter in >> combination with -c. Newer coreutils don't, i.e. with the older cut you get >> >> $ echo 12 | cut --output-delimiter=X -c1,2 >> 1X2 >> >> And with the newer ones >> >> $ echo 12 | cut --output-delimiter=X -c1,2 >> 12 >> >> Is this a regression or was this a deliberate change that wasn't documented? > > Looks like a regression introduced with the i18n patch, > so I'm closing this here. > > $ echo 12 | cut --output-delimiter=X -c1,2 > 12 > $ echo 12 | LANG=C cut --output-delimiter=X -c1,2 > 1X2
Wondering how that could happen, given our test suite, I realized that we take care to set LC_ALL=C for most tests. At least for cut, I'm changing that. Now we'll run each test with LC_ALL=C, and again (when possible) with e.g., LC_ALL=fr_FR.UTF-8. >From ea8295673ebe81b8b0a64bc35a497a44ea419934 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyer...@redhat.com> Date: Thu, 1 Sep 2011 21:30:10 +0200 Subject: [PATCH] tests: exercise distro-added multibyte code paths in cut * tests/misc/cut: Repeat each test using a multibyte locale, if the configure-time test found one. --- tests/misc/cut | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/tests/misc/cut b/tests/misc/cut index c905ba9..7c1450b 100755 --- a/tests/misc/cut +++ b/tests/misc/cut @@ -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,22 @@ 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; + push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}]; + } + push @Tests, @new; + } + + @Tests = triple_test \@Tests; my $save_temps = $ENV{DEBUG}; -- 1.7.7.rc0.362.g5a14