1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-12-28 08:20:56 +01:00
No description
Find a file
Valerio Bozzolan b996b4799b phutil_nonempty_scalar(): don't throw when receiving a boolean scalar
Summary:
Note that booleans are scalars. Full stop.

| is_scalar($v)    | Result |
|------------------|--------|
| `"foo"`          | true   |
| `""`             | true   |
| `null`           | true   |
| `0`              | true   |
| `0.5`            | true   |
| `true`           | true   |
| `false`          | true   |
| `new stdclass()` | false  |
| `array()`        | false  |

Note that phutil_nonempty_scalar() was designed just to tell
whenever a scalar is "empty" or not. So it must not explode
when receiving a valid scalar.

So the question is not whenever a boolean is a scalar or not,
but whenever is empty or not. But also this is a clear fact:

| `$v`    | `is_scalar($v)` | `!is_empty($v)` | `if(strlen($v))`|
|---------|-----------------|-----------------|-----------------|
| `true`  | `true`          | `true`          | `true`          |
| `false` | `true`          | `false`         | `false`         |

In short, now the function does not explode anymore with bool
values. Instead, it says whenever are empty or not.

In bold the exact changes:

| Value             |`phutil_nonempty_scalar($v)`|
|-------------------|----------------------------|
| `"foo"`           | true                       |
| `""`              | false                      |
| `null`            | false                      |
| `0`               | true                       |
| `0.5`             | true                       |
|`obj` with tostring| true                       |
|`obj` withno tostr.| Exception                  |
| `array()`         | Exception                  |
| `true`            | ~~Exception~~ **true**     |
| `false`           | ~~Exception~~ **false**    |

Closes T15239

Test Plan:
- check if it makes sense to you
- check the few usages

Reviewers: O1 Blessed Committers, avivey

Reviewed By: O1 Blessed Committers, avivey

Subscribers: speck, tobiaswiese, Matthew, Cigaryno

Maniphest Tasks: T15239

Differential Revision: https://we.phorge.it/D25117
2023-07-18 12:41:43 +02:00
bin When "ArcanistRuntime" exits with a nonzero exit code, emit that exit code 2020-02-27 06:17:02 -08:00
externals Fix PHP 8.1 null exceptions which block rendering tab panels on dashboards 2023-06-02 18:30:58 +02:00
resources Add resources/ssl/custom.pem to .gitignore 2023-06-21 19:56:55 +01:00
scripts Remove all product name literals in "pht()" in Arcanist 2022-04-25 12:21:31 -07:00
src phutil_nonempty_scalar(): don't throw when receiving a boolean scalar 2023-07-18 12:41:43 +02:00
support Update the arc-hg.py extension to work with mercurial 6.4 2023-05-17 20:44:37 -04:00
.arcconfig Arcanist Update .arcconfig to point to we.phorge.it 2021-06-19 18:10:39 +00:00
.arclint Add new "Hardpoint" classes to support request parallelization 2020-04-08 09:23:50 -07:00
.arcunit Rough version of configuration driven unit test engine 2015-08-11 06:54:16 +10:00
.editorconfig Test XHPAST linter rules in isolation 2015-11-19 08:57:23 +11:00
.gitignore Add resources/ssl/custom.pem to .gitignore 2023-06-21 19:56:55 +01:00
LICENSE Fix text lint issues 2015-04-07 18:09:27 +10:00
NOTICE Remove duplicate newline 2014-07-17 08:25:22 +10:00
README.md Update arcanist readme to reference Phorge 2021-06-20 15:20:47 -06:00

Arcanist is the command-line tool for Phorge. It allows you to interact with Phorge installs to send code for review, download patches, transfer files, view status, make API calls, and various other things. You can read more in the User Guide

For more information about Phorge, see https://phorge.it/.

LICENSE

Arcanist is released under the Apache 2.0 license except as otherwise noted.