'path', 'url' => self::getPluginSourceDir() . '/tests/pkgs/parent', ]; $composer_json['repositories']['test-child'] = [ 'type' => 'path', 'url' => self::getPluginSourceDir() . '/tests/pkgs/child', ]; $returning = $composer_json + [ 'name' => 'test/dependency-order-test', 'require' => [ 'civicrm/composer-compile-plugin' => '@dev', 'test/parent' => '*', 'test/child' => '*', ], 'minimum-stability' => 'dev', 'extra' => [ 'compile' => [ [ 'title' => 'Compile first', 'shell' => 'echo MARK: RUN FIRST', ], ], ], ]; return $returning; } public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); self::initTestProject(static::getComposerJson()); } protected function setUp(): void { parent::setUp(); self::resetCompileFiles(); } protected function tearDown(): void { self::resetCompileFiles(); parent::tearDown(); } /** * When running 'composer install', it runs various events. */ public function testComposerInstall() { $this->assertFileNotExists(self::getPluginSourceDir() . '/tests/pkgs/parent/parent.out'); $this->assertFileNotExists(self::getPluginSourceDir() . '/tests/pkgs/child/child.out'); $p = PH::runOk('COMPOSER_COMPILE=1 composer install'); $this->assertFileExists(self::getPluginSourceDir() . '/tests/pkgs/parent/parent.out'); $this->assertFileExists(self::getPluginSourceDir() . '/tests/pkgs/child/child.out'); } protected static function resetCompileFiles() { self::cleanFile(self::getPluginSourceDir() . '/tests/pkgs/parent/parent.out'); self::cleanFile(self::getPluginSourceDir() . '/tests/pkgs/child/child.out'); } } __halt_compiler();----SIGNATURE:----qRRg4QkFkfH1iivblNtePWzx5yqWKoMbdb1tFbeG1DG/6fB3hFNfNWKA6K9GFX7mb00jhyeoScxTP5n5dbfjp/FZAZoGizs+CJ+1tR+4np8/zRPW+XhQ5C1WiN0u9GVJrMazb7SNJiB7cUcuUNyxFnP7VbQvYBqXXPizvRSU2EjzCyNdXjnsCgSBqt68V9lLhsqB6OJ/EV/3G0Smfn2GBc83QkiGZcJ49hVo4hN7D8tJ5Y1B055XhKBHOwE4PlHI5uOzVEPAGnpgayGgDHBXgNNjwe684q1nt8uIw94HYqeFFXgcQBFpRuPyawwW0qHLxnXkvsiwmRHLOnO7ifdJSJv5CjuVI44RcQNReneKsROdnekFdWW+KYfx/vBLBtR8mcPDrjEjnn+wU1JbhgL/VTEZSAOQLoX79QSv0y6f2MoCFRJw0fqeUhwGf8Ej9ZjSrFFlSf4QGG/MtDFBHjpc8/1Cj567J7oPTmbe6tTgyxO/CeDG4X2tIp3/4OT2MK3JCBn0yw0YhJH544Ti8OhLjcoCMCpCa0WacPFW/OuLDp/dBdX8WOTml3wJtgk3Nhxvf7owvN10YbhuARg6GWraPL9RWtMSwAI1JbaY2TLzF0GkMx8XyPgXNoEUdGUolMd3sgO8P4FnbHwwVjY906tWJDVb8L1poXQPsCqrirxqLtk=----ATTACHMENT:----NjU2NTU4NzY4OTc3MTA2NyA0NDcwNjA2NzgwNzExMDIgNDQ2Nzg0Mjc3NDMwOTYyNQ==