forgejo/services/packages/container
patdyn df79ccf7d8 Move Container API processing logic to service (#11432)
As discussed here: https://codeberg.org/forgejo/discussions/issues/444 the container v2 API logic does need some refactoring for better maintainability.

This is a proposition on how to achieve that. My goal was to be able to write unit tests for functions like processImageManifest() which are currently only tested indirectly by TestPackageContainer() in tests/integration/api_packages_container_test.go.

A first unit test was implemented that targets ProcessManifest(). I think that test also shows what steps are needed to successfully execute the ProcessManifest() function and hopefully helps understanding that code better.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests for Go changes

(can be removed for JavaScript changes)

- I added test coverage for Go changes...
  - [x ] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I ran...
  - [x] `make pr-go` before pushing

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x ] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] This change will be noticed by a Forgejo user or admin (feature, bug fix, performance, etc.). I suggest to include a release note for this change.
- [ x] This change is not visible to a Forgejo user or admin (refactor, dependency upgrade, etc.). I think there is no need to add a release note for this change.

*The decision if the pull request will be shown in the release notes is up to the mergers / release team.*

The content of the `release-notes/<pull request number>.md` file will serve as the basis for the release notes. If the file does not exist, the title of the pull request will be used instead.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/11432
Reviewed-by: Andreas Ahlenstorf <aahlenst@noreply.codeberg.org>
Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org>
Co-authored-by: patdyn <patdyn@noreply.codeberg.org>
Co-committed-by: patdyn <patdyn@noreply.codeberg.org>
2026-03-06 18:56:49 +01:00
..
blob.go Move Container API processing logic to service (#11432) 2026-03-06 18:56:49 +01:00
blob_uploader.go chore: fix typos throughout the codebase (#10753) 2026-01-26 22:57:33 +01:00
cleanup.go fix: reduce runtime of container cleanup by relying on mass digest cleanup (#10297) 2025-12-05 15:45:47 +01:00
cleanup_sha256.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
cleanup_test.go fix: reduce runtime of container cleanup by relying on mass digest cleanup (#10297) 2025-12-05 15:45:47 +01:00
common.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
container.go Move Container API processing logic to service (#11432) 2026-03-06 18:56:49 +01:00
errors.go Move Container API processing logic to service (#11432) 2026-03-06 18:56:49 +01:00
main_test.go Move Container API processing logic to service (#11432) 2026-03-06 18:56:49 +01:00
manifest.go Move Container API processing logic to service (#11432) 2026-03-06 18:56:49 +01:00
manifest_test.go Move Container API processing logic to service (#11432) 2026-03-06 18:56:49 +01:00
tags.go Move Container API processing logic to service (#11432) 2026-03-06 18:56:49 +01:00