The test was failing intermittently because Go's map iteration order
is randomized (see `range repos` in `findChartUrl`).
When looking up the `baz` chart with repository URL http://example.com/helm,
two repositories match due to trailing slash equivalence:
- testing-relative (URL: http://example.com/helm) - contains baz chart GOOD
- testing-relative-trailing-slash (URL: http://example.com/helm/) - does not contain baz chart.. NOT GOOD
The urlutil.Equal() function treats these URLs as equivalent, but
depending on which repository the random map iterator encounters
first, the test would either pass or fail with "entry not found".
So I changed the third test case from baz to foo chart, since foo exists
in both matching repositories. This eliminates the race condition while
preserving all test expectations and logic.
`findChartURL()` iterates over a map without deterministic
ordering, causing the first-match-wins behavior to be non-deterministic
when multiple repositories match the same URL pattern.
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
Closes: https://github.com/helm/helm/pull/30907
To be able to upgrade to v6.0.2 for jsonschema lib we need to upgrade
this test.
I am wondering if it's related to this commit:
86cca28795
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
We’ve noticed that some users still include the URL scheme and full path
when logging into an OCI registry, for example:
```sh
helm registry login -u $OCI_REGISTRY_USER --password-stdin oci://ghcr.io/org/repo
```
This is no longer necessary and will not be supported in Helm v4.
To guide users toward the correct usage, we should show an example of
the ideal command.
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
- The newReference() function transforms version tags by replacing + with _ for OCI compatibility
- But the code was using the original ref (with +) for TagBytes()
- Then it tries to find the tagged reference using parsedRef.String() (with _)
- This mismatch causes the Resolve method to fail with "not found"
- By using parsedRef.String() consistently in both places, the references will match and the lookup will succeed.
I extracted the TagBytes function to improve testability.
Push() includes several external calls that are hard to mock,
so isolating this logic makes testing more manageable.
Close: #30881
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
This reverts #13533
This change has caused issues with numerous charts around things
unrelated to toml. This is because of functions like typeIs/typeOf
being used and acted upon.
The change caused a significant regression.
Note: This kind of change can be put into v3 charts, that are in
active development, without causing a regression.
Closes#30880
Signed-off-by: Matt Farina <matt@mattfarina.com>
There used to be two implemenations for concatenating the repo URL with
the chart URI / URL. In case the chart specified an absolute URI, one of
the implementations performed an incorrect concatenation between the
two, resulting in a URL which looks like <repo-URL><absolute-chart-URI>.
This commit removes the faulty implementation and uses the other correct
one instead.
Signed-off-by: Omri Steiner <omri@steiners.co.il>