From 58fd6569dbc7185e47bd2f18b6f5b6076e3900ff Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Tue, 4 Feb 2020 18:06:06 +0100 Subject: [PATCH] fix: Revert "feat: helm-values manager (#5134)" This reverts commit edf85d42bf9589c9ca1809fd84e14c28be56294d. --- docs/usage/configuration-options.md | 13 -- lib/config/definitions.ts | 12 -- lib/manager/common.ts | 1 - lib/manager/helm-values/extract.ts | 60 --------- lib/manager/helm-values/index.ts | 2 - lib/manager/helm-values/update.ts | 122 ------------------ lib/manager/helm-values/util.ts | 41 ------ renovate-schema.json | 9 -- .../__snapshots__/extract.spec.ts.snap | 8 +- .../__snapshots__/update.spec.ts.snap | 6 +- .../manager/helm-requirements/extract.spec.ts | 2 +- test/manager/helm-requirements/update.spec.ts | 2 +- .../__snapshots__/extract.spec.ts.snap | 39 ------ .../__snapshots__/update.spec.ts.snap | 44 ------- .../_fixtures/default_chart_init_values.yaml | 68 ---------- .../multi_and_nested_image_values.yaml | 21 --- test/manager/helm-values/extract.spec.ts | 41 ------ test/manager/helm-values/update.spec.ts | 100 -------------- 18 files changed, 9 insertions(+), 582 deletions(-) delete mode 100644 lib/manager/helm-values/extract.ts delete mode 100644 lib/manager/helm-values/index.ts delete mode 100644 lib/manager/helm-values/update.ts delete mode 100644 lib/manager/helm-values/util.ts delete mode 100644 test/manager/helm-values/__snapshots__/extract.spec.ts.snap delete mode 100644 test/manager/helm-values/__snapshots__/update.spec.ts.snap delete mode 100644 test/manager/helm-values/_fixtures/default_chart_init_values.yaml delete mode 100644 test/manager/helm-values/_fixtures/multi_and_nested_image_values.yaml delete mode 100644 test/manager/helm-values/extract.spec.ts delete mode 100644 test/manager/helm-values/update.spec.ts diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index 689a999d3efcf4..de9f0a94591a75 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -483,19 +483,6 @@ Note: you shouldn't usually need to configure this unless you really care about Renovate supports updating Helm Chart references within `requirements.yaml` files. If your Helm charts make use of Aliases then you will need to configure an `aliases` object in your config to tell Renovate where to look for them. -## helm-values - -Renovate supports updating of Docker dependencies within Helm Chart `values.yaml` files or other YAML -files that use the same format (via `fileMatch` configuration). Updates are performed if the files -follow the conventional format used in most of the `stable` Helm charts: - -```yaml -image: - repository: 'some-docker/dependency' - tag: v1.0.0 - registry: registry.example.com # optional key, will default to "docker.io" -``` - ## helmfile ## homebrew diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts index 9f2622cb13c59a..b46650e7fe58b2 100644 --- a/lib/config/definitions.ts +++ b/lib/config/definitions.ts @@ -1753,18 +1753,6 @@ const options: RenovateOptions[] = [ mergeable: true, cli: false, }, - { - name: 'helm-values', - description: 'Configuration object for helm values.yaml files.', - stage: 'package', - type: 'object', - default: { - commitMessageTopic: 'helm values {{depName}}', - fileMatch: ['(^|/)values.yaml$'], - }, - mergeable: true, - cli: false, - }, { name: 'helmfile', description: 'Configuration object for helmfile helmfile.yaml files.', diff --git a/lib/manager/common.ts b/lib/manager/common.ts index 7733e47fdb556a..2a18a1a927aa24 100644 --- a/lib/manager/common.ts +++ b/lib/manager/common.ts @@ -148,7 +148,6 @@ export interface Upgrade> checksumUrl?: string; currentVersion?: string; depGroup?: string; - dockerRepository?: string; downloadUrl?: string; localDir?: string; name?: string; diff --git a/lib/manager/helm-values/extract.ts b/lib/manager/helm-values/extract.ts deleted file mode 100644 index 84bd266d4f69dd..00000000000000 --- a/lib/manager/helm-values/extract.ts +++ /dev/null @@ -1,60 +0,0 @@ -import yaml from 'js-yaml'; -import { logger } from '../../logger'; -import { getDep } from '../dockerfile/extract'; - -import { PackageFile, PackageDependency } from '../common'; -import { - matchesHelmValuesDockerHeuristic, - HelmDockerImageDependency, -} from './util'; - -/** - * Recursively find all supported dependencies in the yaml object. - * - * @param parsedContent - */ -function findDependencies( - parsedContent: object | HelmDockerImageDependency, - packageDependencies: Array -): Array { - if (!parsedContent || typeof parsedContent !== 'object') { - return packageDependencies; - } - - Object.keys(parsedContent).forEach(key => { - if (matchesHelmValuesDockerHeuristic(key, parsedContent[key])) { - const currentItem = parsedContent[key]; - - const registry = currentItem.registry ? `${currentItem.registry}/` : ''; - packageDependencies.push( - getDep(`${registry}${currentItem.repository}:${currentItem.tag}`) - ); - } else { - findDependencies(parsedContent[key], packageDependencies); - } - }); - return packageDependencies; -} - -export function extractPackageFile(content: string): PackageFile { - try { - // a parser that allows extracting line numbers would be preferable, with - // the current approach we need to match anything we find again during the update - const parsedContent = yaml.safeLoad(content); - - logger.debug( - { parsedContent }, - 'Trying to find dependencies in helm-values' - ); - const deps = findDependencies(parsedContent, []); - - if (deps.length) { - logger.debug({ deps }, 'Found dependencies in helm-values'); - return { deps }; - } - } catch (err) { - logger.error({ err }, 'Failed to parse helm-values file'); - } - - return null; -} diff --git a/lib/manager/helm-values/index.ts b/lib/manager/helm-values/index.ts deleted file mode 100644 index 730b5b60ba42a3..00000000000000 --- a/lib/manager/helm-values/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { extractPackageFile } from './extract'; -export { updateDependency } from './update'; diff --git a/lib/manager/helm-values/update.ts b/lib/manager/helm-values/update.ts deleted file mode 100644 index 324253136fd76c..00000000000000 --- a/lib/manager/helm-values/update.ts +++ /dev/null @@ -1,122 +0,0 @@ -import YAWN from 'yawn-yaml/cjs'; -import { logger } from '../../logger'; -import { Upgrade } from '../common'; -import { - matchesHelmValuesDockerHeuristic, - HelmDockerImageDependency, -} from './util'; - -function shouldUpdate( - parentKey: string, - data: unknown | HelmDockerImageDependency, - dockerRepository: string, - currentValue: string, - originalRegistryValue: string -): boolean { - return ( - matchesHelmValuesDockerHeuristic(parentKey, data) && - data.repository === dockerRepository && - data.tag === currentValue && - ((!data.registry && !originalRegistryValue) || - data.registry === originalRegistryValue) - ); -} - -/** - * Extract the originally set registry value if it is included in the depName. - */ -function getOriginalRegistryValue( - depName: string, - dockerRepository: string -): string { - if (depName.length > dockerRepository.length) { - return depName.substring(0, depName.lastIndexOf(dockerRepository) - 1); - } - return ''; -} - -/** - * Recursive function that walks the yaml strucuture - * and updates the first match of an 'image' key it finds, - * if it adheres to the supported structure. - * - * @param parsedContent The part of the yaml tree we should look at. - * @param dockerRepository The docker repository that should be updated. - * @param currentValue The current version that should be updated. - * @param newValue The update version that should be set instead of currentValue. - * @returns True if the parsedContent was updated, false otherwise. - */ -function updateDoc( - parsedContent: object | HelmDockerImageDependency, - dockerRepository: string, - currentValue: string, - newValue: string, - originalRegistryValue: string -): boolean { - for (const key of Object.keys(parsedContent)) { - if ( - shouldUpdate( - key, - parsedContent[key], - dockerRepository, - currentValue, - originalRegistryValue - ) - ) { - // the next statement intentionally updates the passed in parameter - // with the updated dependency value - // eslint-disable-next-line no-param-reassign - parsedContent[key].tag = newValue; - - return true; - } - - if (typeof parsedContent[key] === 'object') { - const foundMatch = updateDoc( - parsedContent[key], - dockerRepository, - currentValue, - newValue, - originalRegistryValue - ); - if (foundMatch) { - return true; - } - } - } - return false; -} - -export function updateDependency( - fileContent: string, - upgrade: Upgrade -): string | null { - if ( - !upgrade || - !upgrade.depName || - !upgrade.newValue || - !upgrade.currentValue || - !upgrade.dockerRepository - ) { - logger.debug('Failed to update dependency, invalid upgrade'); - return fileContent; - } - - const yawn = new YAWN(fileContent); - const doc = yawn.json; - - const originalRegistryValue = getOriginalRegistryValue( - upgrade.depName, - upgrade.dockerRepository - ); - updateDoc( - doc, - upgrade.dockerRepository, - upgrade.currentValue, - upgrade.newValue, - originalRegistryValue - ); - yawn.json = doc; - - return yawn.yaml; -} diff --git a/lib/manager/helm-values/util.ts b/lib/manager/helm-values/util.ts deleted file mode 100644 index abbebbaa24a653..00000000000000 --- a/lib/manager/helm-values/util.ts +++ /dev/null @@ -1,41 +0,0 @@ -export type HelmDockerImageDependency = { - registry?: string; - repository: string; - tag: string; -}; - -/** - * This is a workaround helper to allow the usage of 'unknown' in - * a type-guard function while checking that keys exist. - * - * @see https://github.com/microsoft/TypeScript/issues/21732 - * @see https://stackoverflow.com/a/58630274 - */ -function hasKey(k: K, o: {}): o is { [_ in K]: {} } { - return typeof o === 'object' && k in o; -} - -/** - * Type guard to determine whether a given partial Helm values.yaml object potentially - * defines a Helm Docker dependency. - * - * There is no exact standard of how Docker dependencies are defined in Helm - * values.yaml files (as of January 1st 2020), this function defines a - * heuristic based on the most commonly used format in the stable Helm charts: - * - * image: - * repository: 'something' - * tag: v1.0.0 - */ -export function matchesHelmValuesDockerHeuristic( - parentKey: string, - data: unknown -): data is HelmDockerImageDependency { - return ( - parentKey === 'image' && - data && - typeof data === 'object' && - hasKey('repository', data) && - hasKey('tag', data) - ); -} diff --git a/renovate-schema.json b/renovate-schema.json index b3f795b5a91693..1bb82903a1ea74 100644 --- a/renovate-schema.json +++ b/renovate-schema.json @@ -1165,15 +1165,6 @@ }, "$ref": "#" }, - "helm-values": { - "description": "Configuration object for helm values.yaml files.", - "type": "object", - "default": { - "commitMessageTopic": "helm values {{depName}}", - "fileMatch": ["(^|/)values.yaml$"] - }, - "$ref": "#" - }, "helmfile": { "description": "Configuration object for helmfile helmfile.yaml files.", "type": "object", diff --git a/test/manager/helm-requirements/__snapshots__/extract.spec.ts.snap b/test/manager/helm-requirements/__snapshots__/extract.spec.ts.snap index d0924ea3f87559..07b0173fb45f58 100644 --- a/test/manager/helm-requirements/__snapshots__/extract.spec.ts.snap +++ b/test/manager/helm-requirements/__snapshots__/extract.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`lib/manager/helm-requirements/extract extractPackageFile() parses simple requirements.yaml correctly 1`] = ` +exports[`lib/manager/helm/extract extractPackageFile() parses simple requirements.yaml correctly 1`] = ` Object { "datasource": "helm", "deps": Array [ @@ -22,7 +22,7 @@ Object { } `; -exports[`lib/manager/helm-requirements/extract extractPackageFile() resolves aliased registry urls 1`] = ` +exports[`lib/manager/helm/extract extractPackageFile() resolves aliased registry urls 1`] = ` Object { "datasource": "helm", "deps": Array [ @@ -37,7 +37,7 @@ Object { } `; -exports[`lib/manager/helm-requirements/extract extractPackageFile() skips invalid registry urls 1`] = ` +exports[`lib/manager/helm/extract extractPackageFile() skips invalid registry urls 1`] = ` Object { "datasource": "helm", "deps": Array [ @@ -66,7 +66,7 @@ Object { } `; -exports[`lib/manager/helm-requirements/extract extractPackageFile() skips local dependencies 1`] = ` +exports[`lib/manager/helm/extract extractPackageFile() skips local dependencies 1`] = ` Object { "datasource": "helm", "deps": Array [ diff --git a/test/manager/helm-requirements/__snapshots__/update.spec.ts.snap b/test/manager/helm-requirements/__snapshots__/update.spec.ts.snap index 77cbbdef6e445a..dd97ba5f416e80 100644 --- a/test/manager/helm-requirements/__snapshots__/update.spec.ts.snap +++ b/test/manager/helm-requirements/__snapshots__/update.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`lib/manager/helm-requirements/update updateDependency() upgrades dependency if newValue version value is repeated 1`] = ` +exports[`lib/manager/helm/extract updateDependency() upgrades dependency if newValue version value is repeated 1`] = ` " dependencies: - version: 0.9.0 @@ -12,7 +12,7 @@ exports[`lib/manager/helm-requirements/update updateDependency() upgrades depend " `; -exports[`lib/manager/helm-requirements/update updateDependency() upgrades dependency if valid upgrade 1`] = ` +exports[`lib/manager/helm/extract updateDependency() upgrades dependency if valid upgrade 1`] = ` " dependencies: - name: redis @@ -24,7 +24,7 @@ exports[`lib/manager/helm-requirements/update updateDependency() upgrades depend " `; -exports[`lib/manager/helm-requirements/update updateDependency() upgrades dependency if version field comes before name field 1`] = ` +exports[`lib/manager/helm/extract updateDependency() upgrades dependency if version field comes before name field 1`] = ` " dependencies: - version: 0.11.0 diff --git a/test/manager/helm-requirements/extract.spec.ts b/test/manager/helm-requirements/extract.spec.ts index 4de42579ae282d..df1ec9f0e9e88b 100644 --- a/test/manager/helm-requirements/extract.spec.ts +++ b/test/manager/helm-requirements/extract.spec.ts @@ -3,7 +3,7 @@ import { platform as _platform } from '../../../lib/platform'; const platform: any = _platform; -describe('lib/manager/helm-requirements/extract', () => { +describe('lib/manager/helm/extract', () => { describe('extractPackageFile()', () => { beforeEach(() => { jest.resetAllMocks(); diff --git a/test/manager/helm-requirements/update.spec.ts b/test/manager/helm-requirements/update.spec.ts index 86d27adda77d0b..81c8139f4295cc 100644 --- a/test/manager/helm-requirements/update.spec.ts +++ b/test/manager/helm-requirements/update.spec.ts @@ -1,6 +1,6 @@ import { updateDependency } from '../../../lib/manager/helm-requirements/update'; -describe('lib/manager/helm-requirements/update', () => { +describe('lib/manager/helm/extract', () => { describe('updateDependency()', () => { it('returns the same fileContent for undefined upgrade', () => { const content = ` diff --git a/test/manager/helm-values/__snapshots__/extract.spec.ts.snap b/test/manager/helm-values/__snapshots__/extract.spec.ts.snap deleted file mode 100644 index 639a6cd8a38bfa..00000000000000 --- a/test/manager/helm-values/__snapshots__/extract.spec.ts.snap +++ /dev/null @@ -1,39 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`lib/manager/helm-values/extract extractPackageFile() extracts from complex values file correctly" 1`] = ` -Object { - "deps": Array [ - Object { - "currentDigest": undefined, - "currentValue": "11.6.0-debian-9-r0", - "datasource": "docker", - "depName": "bitnami/postgresql", - }, - Object { - "currentDigest": undefined, - "currentValue": "0.7.0-debian-9-r12", - "datasource": "docker", - "depName": "docker.io/bitnami/postgres-exporter", - }, - Object { - "currentDigest": undefined, - "currentValue": "11.5.0-debian-9-r0", - "datasource": "docker", - "depName": "docker.io/bitnami/postgresql", - }, - ], -} -`; - -exports[`lib/manager/helm-values/extract extractPackageFile() extracts from values.yaml correctly with same structure as "helm create" 1`] = ` -Object { - "deps": Array [ - Object { - "currentDigest": undefined, - "currentValue": "1.16.1", - "datasource": "docker", - "depName": "nginx", - }, - ], -} -`; diff --git a/test/manager/helm-values/__snapshots__/update.spec.ts.snap b/test/manager/helm-values/__snapshots__/update.spec.ts.snap deleted file mode 100644 index f142d094d42a2f..00000000000000 --- a/test/manager/helm-values/__snapshots__/update.spec.ts.snap +++ /dev/null @@ -1,44 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`lib/manager/helm-values/update updateDependency() upgrades correct dependency if registry included 1`] = ` -" - db: - image: - image: - repository: bitnami/postgresql - tag: 11.6.0-debian-9-r0 - some-non-image-related-key: 'with-some-value' - warehouse: - image: - registry: docker.io - repository: bitnami/postgresql - tag: 12.5.0 - some-non-image-related-key: 'with-some-value' -" -`; - -exports[`lib/manager/helm-values/update updateDependency() upgrades dependency if newValue version value is repeated 1`] = ` -" - db: - image: - image: - registry: docker.io - repository: bitnami/postgresql - tag: 12.5.0 - some-non-image-related-key: 'with-some-value' - warehouse: - image: - registry: docker.io - repository: bitnami/postgresql - tag: 11.6.0-debian-9-r0 - some-non-image-related-key: 'with-some-value' -" -`; - -exports[`lib/manager/helm-values/update updateDependency() upgrades dependency if valid upgrade 1`] = ` -" - image: - repository: bitnami/postgres-exporter - tag: 0.8.0 -" -`; diff --git a/test/manager/helm-values/_fixtures/default_chart_init_values.yaml b/test/manager/helm-values/_fixtures/default_chart_init_values.yaml deleted file mode 100644 index ea8ebe72dc7b7f..00000000000000 --- a/test/manager/helm-values/_fixtures/default_chart_init_values.yaml +++ /dev/null @@ -1,68 +0,0 @@ -# Default values for test-chart. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: nginx - tag: 1.16.1 - pullPolicy: IfNotPresent - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" - -serviceAccount: - # Specifies whether a service account should be created - create: true - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -service: - type: ClusterIP - port: 80 - -ingress: - enabled: false - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: [] - - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/test/manager/helm-values/_fixtures/multi_and_nested_image_values.yaml b/test/manager/helm-values/_fixtures/multi_and_nested_image_values.yaml deleted file mode 100644 index ca3582c5b3656a..00000000000000 --- a/test/manager/helm-values/_fixtures/multi_and_nested_image_values.yaml +++ /dev/null @@ -1,21 +0,0 @@ ---- -api: - image: - image: - repository: bitnami/postgresql - tag: 11.6.0-debian-9-r0 - some-non-image-related-key: 'with-some-value' - # https://github.com/helm/charts/blob/c5838636973a5546196db6e48ae46f99a55900c4/stable/postgresql/values.yaml#L426 - metrics: - image: - registry: docker.io - repository: bitnami/postgres-exporter - tag: 0.7.0-debian-9-r12 - pullPolicy: IfNotPresent - -someOtherKey: - - image: - registry: docker.io - repository: bitnami/postgresql - tag: 11.5.0-debian-9-r0 - some-non-image-related-key: 'with-some-value' diff --git a/test/manager/helm-values/extract.spec.ts b/test/manager/helm-values/extract.spec.ts deleted file mode 100644 index 22a56e767e0bef..00000000000000 --- a/test/manager/helm-values/extract.spec.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { readFileSync } from 'fs'; - -import { extractPackageFile } from '../../../lib/manager/helm-values/extract'; - -const helmDefaultChartInitValues = readFileSync( - 'test/manager/helm-values/_fixtures/default_chart_init_values.yaml', - 'utf8' -); - -const helmMultiAndNestedImageValues = readFileSync( - 'test/manager/helm-values/_fixtures/multi_and_nested_image_values.yaml', - 'utf8' -); - -describe('lib/manager/helm-values/extract', () => { - describe('extractPackageFile()', () => { - beforeEach(() => { - jest.resetAllMocks(); - }); - it('returns null for invalid yaml file content', () => { - const result = extractPackageFile('nothing here: ['); - expect(result).toBeNull(); - }); - it('returns null for empty yaml file content', () => { - const result = extractPackageFile(''); - expect(result).toBeNull(); - }); - it('returns null for no file content', () => { - const result = extractPackageFile(null); - expect(result).toBeNull(); - }); - it('extracts from values.yaml correctly with same structure as "helm create"', () => { - const result = extractPackageFile(helmDefaultChartInitValues); - expect(result).toMatchSnapshot(); - }); - it('extracts from complex values file correctly"', () => { - const result = extractPackageFile(helmMultiAndNestedImageValues); - expect(result).toMatchSnapshot(); - }); - }); -}); diff --git a/test/manager/helm-values/update.spec.ts b/test/manager/helm-values/update.spec.ts deleted file mode 100644 index dfba5419234fe9..00000000000000 --- a/test/manager/helm-values/update.spec.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { updateDependency } from '../../../lib/manager/helm-values/update'; - -describe('lib/manager/helm-values/update', () => { - describe('updateDependency()', () => { - it('returns the same fileContent for undefined upgrade', () => { - const content = 'someKey: "someValue"'; - const upgrade = undefined; - - expect(updateDependency(content, upgrade)).toBe(content); - }); - it('returns the same fileContent for invalid values.yaml file', () => { - const content = ` - Invalid values.yaml content. - `; - const upgrade = { - depName: 'bitnami/postgres-exporter', - currentValue: '0.7.0-debian-9-r12', - datasource: 'docker', - newValue: '0.8.0', - dockerRepository: 'bitnami/postgres-exporter', - }; - expect(updateDependency(content, upgrade)).toBe(content); - }); - it('returns the same fileContent for empty upgrade', () => { - const content = 'someKey: "someValue"'; - const upgrade = {}; - expect(updateDependency(content, upgrade)).toBe(content); - }); - it('returns the same fileContent for null content', () => { - const content = null; - const upgrade = {}; - expect(updateDependency(content, upgrade)).toBe(content); - }); - it('upgrades dependency if valid upgrade', () => { - const content = ` - image: - repository: bitnami/postgres-exporter - tag: 0.7.0-debian-9-r12 - `; - const upgrade = { - depName: 'bitnami/postgres-exporter', - currentValue: '0.7.0-debian-9-r12', - newValue: '0.8.0', - dockerRepository: 'bitnami/postgres-exporter', - }; - expect(updateDependency(content, upgrade)).not.toBe(content); - expect(updateDependency(content, upgrade)).toMatchSnapshot(); - }); - it('upgrades dependency if newValue version value is repeated', () => { - const content = ` - db: - image: - image: - registry: docker.io - repository: bitnami/postgresql - tag: 11.6.0-debian-9-r0 - some-non-image-related-key: 'with-some-value' - warehouse: - image: - registry: docker.io - repository: bitnami/postgresql - tag: 11.6.0-debian-9-r0 - some-non-image-related-key: 'with-some-value' - `; - const upgrade = { - depName: 'docker.io/bitnami/postgresql', - currentValue: '11.6.0-debian-9-r0', - newValue: '12.5.0', - dockerRepository: 'bitnami/postgresql', - }; - expect(updateDependency(content, upgrade)).not.toBe(content); - expect(updateDependency(content, upgrade)).toMatchSnapshot(); - }); - it('upgrades correct dependency if registry included', () => { - const content = ` - db: - image: - image: - repository: bitnami/postgresql - tag: 11.6.0-debian-9-r0 - some-non-image-related-key: 'with-some-value' - warehouse: - image: - registry: docker.io - repository: bitnami/postgresql - tag: 11.6.0-debian-9-r0 - some-non-image-related-key: 'with-some-value' - `; - const upgrade = { - depName: 'docker.io/bitnami/postgresql', - currentValue: '11.6.0-debian-9-r0', - newValue: '12.5.0', - dockerRepository: 'bitnami/postgresql', - }; - - expect(updateDependency(content, upgrade)).not.toBe(content); - expect(updateDependency(content, upgrade)).toMatchSnapshot(); - }); - }); -});