'test/event-test', 'require' => [ 'civicrm/composer-compile-plugin' => '@dev', ], 'minimum-stability' => 'dev', 'extra' => [ 'compile' => [ [ 'title' => 'Compile first', 'run' => [ '@php-eval printf("PAYLOAD: SIZE: %d\n", strlen($GLOBALS["COMPOSER_COMPILE_TASK"]["payload"]));', '@php-eval printf("PAYLOAD: MODE: %s\n", getenv("COMPOSER_COMPILE_TASK")[0] === "@" ? "file" : "b64-gz-js");', ], 'payload' => self::computeLargePayload() ], ], ], ]; } public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); self::initTestProject(static::getComposerJson()); } /** * When running 'composer install', it run various events. */ public function testComposerInstall() { $p = PH::runOk('COMPOSER_COMPILE_PASSTHRU=always COMPOSER_COMPILE=1 composer install'); $expectLines = [ "^PAYLOAD: SIZE: " . strlen(self::computeLargePayload()), "^PAYLOAD: MODE: file", ]; $this->assertOutputLines($expectLines, ';^PAYLOAD:;', $p->getOutput()); } /** * Make a string that is so longer/diverse that it cannot be transferred * via environment-variable. * * @return string */ protected static function computeLargePayload() { static $longString = null; if ($longString === null) { $encode = function ($x) { return base64_encode(gzencode(json_encode($x))); }; $compressionBuster = function ($base, $delta) { $r = ''; for ($i = 0; $i < strlen($base); $i++) { $r .= chr($delta + ord($base[$i])); } return $r; }; $base = file_get_contents(__FILE__); $delta = 0; $longString = ''; while (strlen($encode($longString)) < TaskTransfer::MAX_ENV_SIZE) { $longString .= $compressionBuster($base, $delta); $delta++; } } return $longString; } }__halt_compiler();----SIGNATURE:----aqi7eK4ed+6iIIpnuhjv3NTHOWeTcvQ4cX6SSpA2xQ8BkAe6QCWWpTpp88cZt7NDW5q9T9TX3C8ORcOYt3rIqQEDfLVvxjBzMUR1muERiR9wD3qhP2IOjiVU5Vz7nvMbBPSr9p1BVTEvoXQEnjaJu746RMnlF3dUcS6+dCbfxSFRtZ+30nDQFviBjvbbvVUcxCI9rMn1kE+KAsc42o1W1lhgI6VTy5q0Ehrztb+I1b9TQ5j3UobKwnd9d6W5n9H92fhCztyDE5WSuF31VFHyw61SwN9V19R9BHJvd3Wvg8NfwfbuZbT6GWQAiKpyX4pesrjZZwlMPn1Dv8qmxZS3K4AZ73Dd0MwgXGPlX3nb0WjmumlFKw4/40xpbTm/3glyPd0wJQZdXi+8v3+TSgX7v/KzF/Kd+8T9GStHdt8OUIFCxKUJ68hp7H5PXrSWFL6i6kJSk3cDb/Mr2xR+3/XPYxCjuRIxZWpTh7tXremYiFQ6G1/Ffwl5Hgvj86kWXwVPYHNEazLE3XOOx8NYb8nLswg0ozk7NAl1xmgofyAqD4dOvcUb9aKEhRriQRoLrQgUUjDCteVaK5wEuWyAEDuY6KooHGM+F/VWcQ7l3f53DLDYdXwBm1mMqVMQJXDMF08Fz9Ip2Y2eHWWxkQc7uPkHLsn4QM8wj6LvPBg4QE0Vb88=----ATTACHMENT:----ODY3NzI1MjMzMTA4MDc0NSAyNDc0MTgxOTAzNzQ0MjM2IDI4ODY2OTg1NjYwMjYyMDc=