Assert keeps going after failure, but require immediately fails
the tests, making it easier to find the output related to the test
failure, rather than having to comb through a bunch of subsequent
assertion failures. For equality tests, we may or may not want to
continue, but for error checks we almost always want to immediately
fail the test. Exceptions can be changed as-needed.
This reverts commit b692e49b1e.
The json-patch bump in k/k was reverted, so the corresponding bump in
kustomize should be reverted too.
Signed-off-by: Stephen Kitt <skitt@redhat.com>
This PR is an effort towards reducing the public surface
of APIs. It move image/ to internal/image
Signed-off-by: Varsha Prasad Narsing <varshaprasad96@gmail.com>
(cherry picked from commit 1f5890709fdc17de6f44f42b5138dd0f7e64bc74)
When a patch appends a new node, it should honor the key style from the
patch. Prior to this commit, no style was applied, leading to problems
when the key value could be interpreted as a different type based on its
content. For example, "9110" needs quoting to ensure it is seen as a
string in yaml.
* Ahead-of-time wildcard path expansion solution
* Wrapped PathGetter solution
This approach doesn't work when multiple existing sequence elements
should match, i.e. because the sequence contains maps and we're
searching on a key they all contain (target all containers with a certain
image would be one use case for this). PathGetter just takes the first
match in that case, which is not what we want.
* Add creation support to PathMatcher
* Regression test for existing bug when creation is enabled and sequence query should match multiple elements
* PathMatcher Create tests and support for sequence appending
* revert hyphen append support
PathGetter treats it as meaning 'last' not 'append' and does not have test coverage for its handling of this when create is set. Semantics are dubious given that multiple Replacement fieldPaths may be specified, which would cause successive appends.
* This also provides a solution to issue 1493
* Review feedback
* replacements: demonstrate broken behavior when using 'create: true' with an already existing field
* replacements: fix issue with 'create: true' option when there is an existing field
* Suggestion for PR 4667
* code review
* lint error
Co-authored-by: Katrina Verey <katrina.verey@shopify.com>
* add tagsuffix to take image tag suffix
* add comments to warn about specifications
* add test and error handle
* fix indent
* update comment
* fix merge errors and return updates
* update image update and fix example
* fix yamls formats
remove tabs in yamls
fix space in image name
tag error in name
* fix spacing issue
format of yaml
set example as above
* spacing of spec in testing templates
* change to switch case
* check tag values for double quoting
* reuse setentry
* don't override single quotes in merge and fix cm generator immutable val
* get rid of comment
* starlark annotation tests
* don't commit test image changes
* set network to bool
* isSet bool
* updating e2e config tool
* leave createtag
* fn command failing unmarshal test
* fn command test
* don't set style in run-fs
* use setentry to set tag
* remove e2e test changes and make IsStringValue an RNode method
Erasing the scalar type tag leads to unfortunate circumstances, in that
the resulting yaml code is valid yaml, but will not meet the object
spec.
For example, using the replacement transformer to take a port number as
a string from a ConfigMap and set a Pod port would previously end up
with:
- containerPort: "8080"
when the spec requires that this is not a string:
- containerPort: 8080
Added unit tests for conversion to and from integers and booleans, plus
creation from string and creation from integer.
The creation behavior needs some refinement in a future PR.
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
* Fix image name parsing with name and digest
Image names may contain both tag name and digest. For example
`nginx:1.21.5@sha256:7826426c9d8d310c62fc68bcd5e8dde70cb39d4fbbd30eda3b1bd03e35fbde29`. Kustomizations with image transforms will not match
these image because the image parser assumes either a tag or digest, but not
both.
For a real life example of kuberenetes deployments that might need to perform
these types of transforms is from the [tekton-pipelines](https://github.com/tektoncd/pipeline) project (see the release.yaml).
* Return digest property from image name parser
image.Split now returns 3 fields: name, tag, and digest. The tag and digest
fields no longer include their respective delimiters (`:` and `@`).
* Fix merge file indentation
* Refactor imagetag updater string builder
This change updates the suffix filter to implement the TrackableFilter
interface. This provides the functionality for the user to track which
fields were updated by the suffix filter.
This change updates the replicacount filter to implement the
TrackableFilter interface. This provides the functionality for the
user to track which fields were updated by the replicacount filter.
This change updates the prefix filter to implement the TrackableFilter
interface. This provides the functionality for the user to track which
fields were updated by the prefix filter.
This change updates the namespace filter to implement the TrackableFilter
interface. This provides the functionality for the user to track which
fields were updated by the namespace filter.
This change provides a common test util for a mutation tracker stub.
This is intended to reduce the duplicated boilerplate as additional
filters implement the TrackableFilter interface.
The FieldPath was not being set for nodes underneath a SequenceNode
during fieldspec's traversal. This is in part because handleSequence
uses VisitElements in contrast to a PathGetter as is done by handleMap.
The accuracy of FieldPath is more relevant now with the recently added
support of mutation trackers in filtersutil. This change fixes the
case where a mutation tracker callback is called on a SequenceNode
element and the node does not have an accurate FieldPath value.
This change updates the imagetag filter to implement the TrackableFilter
interface. This provides the functionality for the user to track which
fields were updated by the imagetag filter.
This change refactors imagetag to reuse the abstraction provided by
filtersutil. This change is intended to make imagetag more consistent
with other filters by using the same layer of abstraction (filtersutil),
and to prepare for upcoming changes which are planned to be implemented
at the filtersutil layer.
* add kio filter interface
This interface is an extension of the Filter interface which can be used
for filters which are capable of tracking which fields they mutate.
* add TrackableSetter struct to filtersutil
This struct provides an abstraction to help Filters implement the
TrackableFilter interface
* implement TrackableFilter with annotations
This updates the annotations filter to implement the TrackableFilter
interface by reusing the TrackableSetter abstraction provided by
filtersutil.
This is done to provide a generic and consistent experience across the
filters
* implement TrackableFilter with labels
This updates the labels filter to implement the TrackableFilter
interface by reusing the TrackableSetter abstraction provided by
filtersutil.
This is done to provide a generic and consistent experience across the
filters