On 9/1/21 3:20 PM, enh wrote:
> On Wed, Sep 1, 2021 at 1:04 PM Rob Landley <r...@landley.net
> <mailto:r...@landley.net>> wrote:
> 
>     On 8/31/21 6:23 PM, enh via Toybox wrote:
>     > PowerPC may be dead and gone, but arm64 is the new x86-64, and
>     > x86-64 the new PowerPC :-)
>     > ---
>     >  tests/file.test   |  4 ++++
>     >  toys/posix/file.c | 36 +++++++++++++++++++++++++++++++-----
> 
>     Grrr, clashes a lot with my tests/file.test local changes. (My tree 
> accumulating
>     unfinished changes is yet another tabsplosion-style accumulation of minor
>     technical debt.) Anyway, backed my changes out to apply yours, then 
> applied them
>     again.
> 
>     It's a pity you don't use bash to run the test suite, because 
> $'\x0a\xbc\xde' in
>     the "input" argument would be a more concise way of doing those tests. 
> (Yes, I
>     need to find time to work on toysh again...)
> 
> speaking of which... your use of fancy bash stuff upsets both Android and 
> macOS.
> here's the complaint from macOS, but iirc Android is similar:
> 
> ~/toybox$ make test_file
> scripts/test.sh file
> scripts/runtest.sh: line 217: syntax error near unexpected token `;'
> scripts/runtest.sh: line 217: `      R) LEN=0; B=1; ;&'
> 
> seems not to actually cause trouble in either case, though, so i'd been 
> ignoring
> it for now.

It's a terminator that falls through. Without a terminator it presumably won't
evaluate the next pattern as a jump target, and this is the one doesn't 
"continue".

I"m not sure how to do that otherwise? (I suppose I can if/else staircase it,
which is what I _usually_ do, but I thought I'd been "proper" and use
switch/case...)

>     Your TEST_HOST output didn't match my TEST_HOST output on devuan. Is this
>     version skew in the "file" command or did you not run TEST_HOST? I get:
> 
>       universal: Mach-O universal binary with 2 architectures: [x86_64] 
> [arm64]
> 
>     Which has [name] instead of commas, and uses x86_64 instead of x86-64.
> 
> oh, interesting. *my* host file wasn't giving output that useful. (and macOS
> file is different from linux file here.)

I'm not trying to match the macos TEST_HOST output. :)

> yeah, i'm not particularly wedded to the specific format i used, and macOS 
> used
> [] too, but included more info:
> 
> ~/toybox$ file /bin/sh
> /bin/sh: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit
> executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
> /bin/sh (for architecture x86_64): Mach-O 64-bit executable x86_64
> /bin/sh (for architecture arm64e): Mach-O 64-bit executable arm64e

Once upon a time the output of unix commands was designed to be consumed by
other programs.

I miss those days. Before the dark times. Before the <strike>empire</strike> gnu
project.

> (note that that's really three lines for one file, which seems quite a major
> script-breaker!)
> 
> anyway, my choice of x86-64 was just because that's what we've used for
> everything else; ELF, Windows, and even regular single-architecture Mach-O
> files. personally i tend towards internal consistency rather than outward
> consistency when they differ, but the opposite argument is obviously equally
> valid. you can't really win. but if we change mach-o universal binaries, we
> should probably change regular mach-o binaries too?

I can always do horrible regex things to make the test accept both. (egrep -o
"(one|two|three)" and check that I get "one two three" as output, for example.)

>     Hmmm, I have a big list of tests I need to add to file.test and some of 
> them
>     are...
> 
>       $ echo hello > test; chmod 000 test; file test
>       test: regular file, no read permission
>       $ toybox file test
>       file: test: Permission denied
>       test: unknown
> 
>     Eh, how much do we care about matching exactly in the corner cases? 
> Hmmm...
> 
> yeah, there's also fancy stuff like UTF-8 vs ASCII, and guessing the language 
> if
> it's UTF-8, but although they're kind of cool, they do cost time as well as
> code, and i haven't personally had a use for them yet, so i've been ignoring 
> all
> the fancy bits.

Whatever we do is going to be a subset of what the one driven by a config
database does, and I'm fine with that. The question is WHEN we have a test, how
closely should the output match?

And "perfect" seems to be off the table because version skew even WITHIN the
conventional Linux "file" implementation. Sigh. (This is using file-5.35 from
2018, I'm guessing you're using newer?)

> (the specific motivating case for adding mach-o universal binary support was a
> script that's just checking for "universal binary", so they'd be fine if you
> want to change the output format.)

I have a pending cleanup to go with the updated test file, but I've checked in
yours as is for the moment and don't intend to wander too far from it.

Rob
_______________________________________________
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to