[Toybox] avoiding testing shell builtins

Rob Landley rob at landley.net
Thu Jun 27 00:13:08 PDT 2019


On 6/27/19 12:33 AM, enh wrote:
>> (Well I say it's not a regression. Why are two sed host tests failing now? Is
>> this an ubuntu->devuan thing? Sigh...)
> 
> the sed loop test hangs with TEST_HOST=1 for you too now? haven't we
> had this before where i reported that when google switched from ubuntu
> to debian?

It's not a hang, two of the tests are failing because the host sed produces
different results.

FAIL: sed 'y/a\bc/de\f/'
echo -ne 'abc' | sed 'y/a\bc/de\f/'
--- expected	2019-06-27 01:57:26.620004181 -0500
+++ actual	2019-06-27 01:57:26.620004181 -0500
@@ -1 +1 @@
-db

\ No newline at end of file
+de

\ No newline at end of file
FAIL: sed skip start of range
echo -ne 'a\nb\n' | sed -e n -e '1,2s/b/c/'
--- expected	2019-06-27 01:57:26.632004181 -0500
+++ actual	2019-06-27 01:57:26.632004181 -0500
@@ -1,2 +1,2 @@
 a
-b
+c

All of 'em passed under ubuntu. Weird.

The first one says escapes aren't being processed inside y ranges. (\b is
backspace, not b, \f is form feed, those are the standard printf escapes.) But...

$ echo hello | sed 'y/l/\n/'
he

o

Debian is parsing them in the "to" part of the range, just not "from"...

$ echo hebbo | sed 'y/\b/\f/'
he

  o

Except it _has_ to be parsing it a little, or \ would become \ (NOP) and b would
become f not \f... No wait, the ranges would be different sizes and that's an
error...

$ echo hebbo | sed 'y/\b/xf/'
sed: -e expression #1, char 8: strings for `y' command are different lengths

Nope, it's parsing it, but parsing it as a single literal b. I think that's a
bug in the debain sed? (Is this some crazy posix reading? It's not _useful_
whatever it is...)

The second test is more dubious, if you skip the start of a range the range
doesn't trigger, but the reason that makes sense is the start could be a regex
rather than a line: you can mix regex and line number freely and they're treated
the same way:

$ echo -ne 'a\nb\n' | sed -e n -e '1,2s/b/c/'
a
c
$ echo -ne 'a\nb\n' | sed -e n -e '/a/,2s/b/c/'
a
b

I don't know which behavior is "correct" here, but what ubuntu did was
consistent. I made toybox do what Ubuntu did (produce ab for both). Now debian's
doing it differently.

*jazzhands*

Rob

(Is this gnu/dammit version skew, or do ubuntu/debian have patches to alter this
behavior, or...?)



More information about the Toybox mailing list