coding-standards-php icon indicating copy to clipboard operation
coding-standards-php copied to clipboard

Add test for composer.json in sub-extensions

Open TravisCarden opened this issue 5 years ago • 2 comments

The Drupal.org Composer service handles sub-extensions and their dependencies separately such that drupal/example_submodule can have different dependencies from drupal/example. Indeed, if a submodule requires packages that are not technically required to use the base extension, Acquia considers this a best practice so as not to require users to deploy unused code. Thus, since the Drupal.org Composer service dynamically creates an implicit composer.json for them anyway, sub-extensions should take ownership of their metadata and dependencies and create their own physical composer.json. Create a test for this.

  • [ ] Add a warning for sub-extensions that don't have their own composer.json.
  • [ ] Document the feature.
  • [ ] Link to the documentation in the warning message.

TravisCarden avatar Jan 02 '20 14:01 TravisCarden

Pro tip: if you are the maintainer of such a module, and you want to be able to install all of the dependencies (including submodule dependencies) for testing purposes, the best way I've found is to declare the submodule as a Composer path repository in the root-level composer.json, and then declare the submodule as a dev dependency.

As a reference, this is what I did for Acquia Connector, which ships with the Acquia Search submodule: https://git.drupalcode.org/project/acquia_connector/commit/a657b8523566177f065ba2ff167c9b596822aa8c#3957b91a0d8450cea0115cfd5af69eac90d75897

danepowell avatar Jan 02 '20 19:01 danepowell

I had similar problems with the Drupal.org Testbot and created an issue and a workaround based on your implementation here. https://www.drupal.org/project/drupalci_testbot/issues/3250126

Thank you very much for giving that idea! :)

JPustkuchen avatar Nov 18 '21 13:11 JPustkuchen