extensions: parse all declared extensions before applying
Metadata
Current evaluation
Merged to resolve LP: #1797638 by parsing all declared extensions before applying them, fixing conflicts when multiple apps share an extension. Approved, passed CI, and achieved 100% diff coverage.
Suggested action: —
No scores available.
Issue body
- [x] Have you followed the [guidelines for contributing](https://github.com/snapcore/snapcraft/blob/master/CONTRIBUTING.md)?
- [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [x] If this is a bugfix. Have you checked that there is a bug report open for the issue you are trying to fix on [bug reports](https://bugs.launchpad.net/snapcraft)?
- [x] If this is a new feature. Have you discussed the design on the [forum](https://forum.snapcraft.io)?
- [x] Have you successfully run `./runtests.sh static`?
- [x] Have you successfully run `./runtests.sh tests/unit`?
-----
Currently extensions are naively applied as they're discovered, which causes problems when multiple apps use the same extension. This PR fixes [LP: #1797638](https://bugs.launchpad.net/snapcraft/+bug/1797638) by parsing all declared extensions before applying any.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged to resolve LP: #1797638 by parsing all declared extensions before applying them, fixing conflicts when multiple apps share an extension. Approved, passed CI, and achieved 100% diff coverage. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged a fix for LP: #1797638 that parses all declared extensions before applying them. This resolves conflicts when multiple apps use the same extension. Authored by kyrofa, the change passed unit tests and achieved 100% diff coverage. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged. Resolves LP: #1797638 by parsing all declared extensions before application, preventing conflicts when multiple apps share an extension. Changes achieved 100% diff coverage. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2355 extensions: cleanup and generic tests | snapcraft | merged | Resolved LP: #1791172 by ensuring extensions are properly installable and adding generic smoke tests for future extensions. Merged after approval and passing CI, modifying 10 files (+133/-17). | |
| #4110 extensions: parse snapcraft.yaml before expanding extensions | snapcraft | merged | Merged fix for the expand-extensions command to parse snapcraft.yaml before expanding extensions. Resolves core22 parsing issues with parse-info and advanced grammar keywords. Approved, passed CI, and merged into main. | |
| #3781 extensions: refactor | snapcraft | merged | Merged refactoring of extensions to prevent future cyclic import issues. Approved by reviewer, passed CI, and integrated into main. Reduced code by 163 lines across six files with a minor coverage decrease. | |
| #2705 extensions: rename extension classes to known names | snapcraft | merged | Merged changes renaming extension classes to known names, simplifying logic by removing string parsing for Extension class implementation. Approved, passed CI, and increased coverage by 0.01% across five files. | |
| #2348 extensions: remove root extensions | snapcraft | merged | Merged removal of root extension declarations from snapcraft.yaml. Resolves LP #1797631 by deferring application scope decisions until usage patterns clarify. Approved by maintainer, passed CI, and modified two files. |