1
0
Fork 0

COMPOSER_DISABLE_NETWORK aware `diagnose` checks; SKIP output (#11597)

Make `diagnose` checks aware of COMPOSER_DISABLE_NETWORK (true) and skip
Composer network operations that would otherwise spill stack traces into
diagnostic messages and taint the result as error while the check itself
is not applicable/useful within the environment.

`COMPOSER_DISABLE_NETWORK` was released with [2.0.0-alpha1] and intro-
duced in fc03ab9bb (Add COMPOSER_DISABLE_NETWORK env var for debugging,
2019-01-14).

The previous behaviour was to exit with a status of two (2), denoting an
error.

The new behaviour is to exit with a status of zero (0), showing the
successful skipping of diagnostics that can only be run when Composer
network is enabled - not disabled.

SKIP output is updated and streamlined.

NOTE: The "prime" Value

It is irrelevant for diagnose checks, as all diagnostic checks that
spilled were with the HTTP Downloader and the check is aligned (both
"1" or "prime" values disable):

    (bool) Platform::getEnv('COMPOSER_DISABLE_NETWORK')

NOTE: Not Affected

 * The `allow_url_fopen` diagnostic check, platform related
 * The `disable-tls` setting related HTTP Downloader creation warning

[2.0.0-alpha1]: <https://getcomposer.org/changelog/2.0.0-alpha1> "released 2020-06-03"
pull/11920/head
Tom Klingenberg 2023-08-30 21:35:59 +02:00 committed by Jordi Boggiano
parent 90f8d01614
commit b29be2f56b
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
1 changed files with 38 additions and 6 deletions

View File

@ -250,7 +250,7 @@ EOT
*/
private function checkHttp($proto, Config $config)
{
$result = $this->checkConnectivity();
$result = $this->checkConnectivityAndComposerNetworkHttpEnablement();
if ($result !== true) {
return $result;
}
@ -288,7 +288,7 @@ EOT
*/
private function checkHttpProxy()
{
$result = $this->checkConnectivity();
$result = $this->checkConnectivityAndComposerNetworkHttpEnablement();
if ($result !== true) {
return $result;
}
@ -319,7 +319,7 @@ EOT
*/
private function checkGithubOauth($domain, $token)
{
$result = $this->checkConnectivity();
$result = $this->checkConnectivityAndComposerNetworkHttpEnablement();
if ($result !== true) {
return $result;
}
@ -350,7 +350,7 @@ EOT
*/
private function getGithubRateLimit($domain, $token = null)
{
$result = $this->checkConnectivity();
$result = $this->checkConnectivityAndComposerNetworkHttpEnablement();
if ($result !== true) {
return $result;
}
@ -421,7 +421,7 @@ EOT
*/
private function checkVersion(Config $config)
{
$result = $this->checkConnectivity();
$result = $this->checkConnectivityAndComposerNetworkHttpEnablement();
if ($result !== true) {
return $result;
}
@ -749,7 +749,39 @@ EOT
private function checkConnectivity()
{
if (!ini_get('allow_url_fopen')) {
return '<info>Skipped because allow_url_fopen is missing.</info>';
return '<info>SKIP</> <comment>Because allow_url_fopen is missing.</>';
}
return true;
}
/**
* @return string|true
*/
private function checkConnectivityAndComposerNetworkHttpEnablement()
{
$result = $this->checkConnectivity();
if ($result !== true) {
return $result;
}
$result = $this->checkComposerNetworkHttpEnablement();
if ($result !== true) {
return $result;
}
return true;
}
/**
* Check if Composer network is enabled for HTTP/S
*
* @return string|true
*/
private function checkComposerNetworkHttpEnablement()
{
if ((bool) Platform::getEnv('COMPOSER_DISABLE_NETWORK')) {
return '<info>SKIP</> <comment>Network is disabled by COMPOSER_DISABLE_NETWORK.</>';
}
return true;