chore(remote-build): migrate LaunchpadClient and WorkTree
Metadata
Current evaluation
Merged into main after two approvals and passing CI. Migrates LaunchpadClient and WorkTree classes and tests from snapcraft_legacy, modernizing conventions, updating to pytest, and refactoring GitRepo. Resolves #4323.
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] Have you successfully run `make lint`?
- [x] Have you successfully run `pytest tests/unit`?
-----
Migrate `WorkTree`, `LaunchpadClient`, and their tests from `snapcraft_legacy`. Reviewing by commit is the "easiest" (this is still a large code migration to review).
Scope:
- Add extra errors and utilities
- Tweak the `GitRepo` class
- Migrate `WorkTree`, `LaunchpadClient`, and their unit tests
- Modernize to current code conventions and style
- Replace snapcraft-specific code with generic code
- Update tests from `unit.TestCase` to `pytest`
Note that the WorkTree class is pretty empty now. It will get populated more as part of #4324.
Fixes #4323
(CRAFT-1978)
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged into main after two approvals and passing CI. Migrates LaunchpadClient and WorkTree classes and tests from snapcraft_legacy, modernizing conventions, updating to pytest, and refactoring GitRepo. Resolves #4323. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged migration of WorkTree, LaunchpadClient, and tests from snapcraft_legacy. Code modernized, updated to pytest, and snapcraft-specific logic replaced with generic utilities. Fixes #4323. Unrelated test failure noted. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged migration of WorkTree, LaunchpadClient, and unit tests from snapcraft_legacy. Modernized code conventions, updated tests to pytest, and replaced snapcraft-specific logic with generic utilities. Passed lint and test checks. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #4389 feat(remote-build): add LaunchpadClient | snapcraft | closed | Closed after migrating LaunchpadClient and WorkTree from snapcraft_legacy, modernizing code conventions and updating tests to pytest. Resolves issue #4323. | |
| #4323 remote-build: rework WorkTree and LaunchpadClient classes | snapcraft | closed | The remote-build refactoring was closed without implementation. Migration to snapcraft/remote_build/ and WorkTree simplifications were abandoned or superseded by subsequent project updates. | |
| #5390 chore(remotebuild): use new build planner | snapcraft | merged | Merged remote build updates to adopt the new get_launchpad_build_plan() and remove unit test xfails. Approved by two reviewers, passed CI checks, and integrated. | |
| #221 chore(merge): 2.6.2 into main | craft-store | merged | Merged into main after passing CI and receiving two approvals. Backports a fix from craft-store PR #175 to resolve snapcraft issue #5077, addressing a regression from the craft-store 3.0 upgrade. A follow-up craft-store release is planned. |