'test/patch-test', 'require' => [ 'civicrm/composer-compile-plugin' => '@dev', 'test/cherry-jam' => '@dev', 'cweagans/composer-patches' => '*', ], 'minimum-stability' => 'dev', 'extra' => [ 'patches' => [ 'test/cherry-jam' => [ 'Some hackery' => 'cherry-jam-hackery.diff' ], ], ], ]; // For this test, we'll need to patch. We want a copy (not symlink) so we can hack at it. if (!is_array($r['repositories']['test-cherry-jam'])) { throw new \RuntimeException("Inconsistency in composer.json"); } $r['repositories']['test-cherry-jam']['options'] = [ 'symlink' => false, ]; $r['config']['allow-plugins']['cweagans/composer-patches'] = true; return $r; } public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); self::initTestProject(static::getComposerJson()); file_put_contents( self::getTestDir() . '/cherry-jam-hackery.diff', file_get_contents(self::getPluginSourceDir() . '/tests/pkgs/cherry-jam-hackery.diff') ); } /** * When running 'composer install', it should generate 'jam.out' with suitable patches in place. */ public function testComposerInstall() { $this->assertFileNotExists('vendor/test/cherry-jam/jam.out'); PH::runOk('COMPOSER_COMPILE=1 composer install -v'); $this->assertFileContent('vendor/test/cherry-jam/jam.out', "patches in the house\n"); } } __halt_compiler();----SIGNATURE:----TAARBkm91zZ0CEEwR8bNSQIyEXONtlDvRct9RggW16yGLjtsIRL68sRtq71IIJi0s4jqgQwQEM1+fMlN9DAUmIhY8IFspB6/V1UXiy8gsSa/agnyYulVrnBbxNsOtBsSq4SdAz96ai/6UfGCv4pD+muDk2EsfTM3+GEsRP2HptP1r5JCQ0OFvfaOqtPDmN9gZIVS/8szxs/DPj3ngio7cw/A3uDP4oBeXdLO3laDd9c7FNV0rauew6TLo4O2voENlCYNv/WyJFKhf1s4YcLg9t0ZOFMUQ58Qo3WaGUvsAr02tFnoe/VQDVojE4Q/s46TS6EOBxONpNBMKguOj2G0a9We6h48PiPF4OKSeR/ymrDj+0iHjtRkS3/B2X8YlN5Tr11XCZGrFgr+nNj5O8oQGLDwvxA1tcltalzXJn9Y5CGqt2eM7KKc7LGSuwvDVI4Ha6SadEr6RE41Ke9fO9d24meMH9g8r+WRabppO/XVwBFBv1CAAUGBP8cL1lNH2GLbmoR6BdW9ZMeHKekHLz3eiTsDQ23TYAfI94MVcfIhMuBmuDLcJ4H7DqyRE/gT5KFYpMa3NNM3uv41Ec2RZdSCcF/wBvidGaCdyOHgfn9MQLReK8sqNxmGprnrWIVJCqkMmFX8w3dwvxU0N91BwBHaue+4DOXhvcuXA8txHfHqNFo=----ATTACHMENT:----NDA1MzQ4MTIzOTMyODQ4OSA2NDYyNzAzOTkyOTcyNTY4IDc1NDUzMDU5NTk1MTg5OTk=