Re: Small annoyances of PHP: Simple fixes would make tests fail

From: Date: Mon, 22 Feb 2021 10:14:15 +0000
Subject: Re: Small annoyances of PHP: Simple fixes would make tests fail
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-113214@lists.php.net to get a copy of this message
Am 19.02.2021 um 16:21 schrieb Sara Golemon <pollita@php.net>:
> On Fri, Feb 19, 2021 at 8:04 AM Christian Schneider <cschneid@cschneid.com <mailto:cschneid@cschneid.com>> wrote:
> Stack traces:
> ==========
> 
> What version are you testing with. I know Niki killed some unnecessary frames in 8.0's
> stacktrace output. (A whole repro script is more useful than a snippet wherein $e comes into being
> seemingly from nowhere).

I was testing with PHP 8.0.3 but it is the same with master.
You can see the difference at https://3v4l.org/0Pgfo <https://3v4l.org/0Pgfo> where the first line
	try { $a[(object)null] = 1; } catch (Throwable $e) { print_r($e->getTrace()); }
does not create a stack trace. That's what I'd like to change.

What do you think? Should I create a PR for this?
It does break a lot of tests in PHP. Probably less so for other projects but still...

> Indentation in var_export:
> ====================
> The indentation for
>         var_export((object)[(object)[]]);
> is off by one for nested structures:
>         (object) array(
>            '0' =>                       # <-- extra space before index
>           (object) array(
> and the fix would be to change
>         buffer_append_spaces(buf, level + 2)
> to
>         buffer_append_spaces(buf, level + 1)
> in ext/standard/var.c
> 
> This breaks about 60 PHP tests relying on the var_export format.
> 
> 
> I think shifting the indentation in var_export() could probably be done without a major BC
> break.

An example script is at https://3v4l.org/V8r5k <https://3v4l.org/V8r5k>
It does break tests though. And my guess it that is would also break tests in quite some projects.

What version would you aim this for? 8.1? 9.0?

> Trimming trailing whitespace would also resolve one of my long-time annoyances with the
> function.
> Feel free to propose that as a PR and/or an RFC.

I see your point as it means there have to be trailing white-spaces in tests which can be confusing
when editing/creating tests.
I can have a look at how hard this would be to fix...

Side-note: Maybe we should recommend a function to be used for tests. At my work we used to use
var_export(), some of our newer tests are using json_encode() but neither is really guaranteed to be
stable, right?

- Chris



Thread (7 messages)

« previous php.internals (#113214) next »