Skip to content

Commit ab5833e

Browse files
committed
test(docker-build-image): improve assertions
Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
1 parent 692f9d3 commit ab5833e

2 files changed

Lines changed: 48 additions & 29 deletions

File tree

.github/workflows/__test-action-docker-build-image.yml

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -46,59 +46,69 @@ jobs:
4646
script: |
4747
const assert = require("assert");
4848
49-
const builtImageOutput = ${{ steps.build-image.outputs.built-image }};
49+
const builtImageOutput = ${{ toJSON(steps.build-image.outputs.built-image) }};
5050
assert(builtImageOutput, `"built-image" output is empty`);
51-
assert.equal(builtImageOutput.name, "application-test", `"name" output is not valid`);
52-
assert.equal(builtImageOutput.registry, "ghcr.io", `"registry" output is not valid`);
51+
52+
let builtImage;
53+
try {
54+
builtImage = JSON.parse(builtImageOutput);
55+
} catch (error) {
56+
assert.fail(`Failed to parse built image output: ${error}`);
57+
}
58+
59+
assert(builtImage, `"built-image" output is empty`);
60+
61+
assert.equal(builtImage.name, "application-test", `"name" output is not valid`);
62+
assert.equal(builtImage.registry, "ghcr.io", `"registry" output is not valid`);
5363
assert.equal(
54-
builtImageOutput.repository,
64+
builtImage.repository,
5565
"hoverkraft-tech/ci-github-container/application-test",
5666
`"repository" output is not valid`
5767
);
5868
assert.equal(
59-
builtImageOutput.digests.length,
69+
builtImage.digests.length,
6070
1,
6171
`"digests" output is not valid`
6272
);
6373
assert.match(
64-
builtImageOutput.digests[0],
74+
builtImage.digests[0],
6575
/^ghcr\.io\/hoverkraft-tech\/ci-github-container\/application-test@sha256:[a-f0-9]{64}$/,
6676
`"digests" output is not valid`
6777
);
6878
6979
// Annotations
7080
assert.match(
71-
builtImageOutput.annotations["org.opencontainers.image.created"],
81+
builtImage.annotations["org.opencontainers.image.created"],
7282
/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z/,
7383
`"annotations.org.opencontainers.image.created" output is not valid`
7484
);
7585
assert.equal(
76-
builtImageOutput.annotations["org.opencontainers.image.description"],
86+
builtImage.annotations["org.opencontainers.image.description"],
7787
"Opinionated GitHub Actions and workflows for continuous integration in container (OCI) context",
7888
`"annotations.org.opencontainers.image.authors" output is not valid`
7989
);
8090
assert.equal(
81-
builtImageOutput.annotations["org.opencontainers.image.licenses"],
91+
builtImage.annotations["org.opencontainers.image.licenses"],
8292
"MIT",
8393
`"annotations.org.opencontainers.image.licenses" output is not valid`
8494
);
8595
assert.match(
86-
builtImageOutput.annotations["org.opencontainers.image.revision"],
96+
builtImage.annotations["org.opencontainers.image.revision"],
8797
/^[a-f0-9]{40}$/,
8898
`"annotations.org.opencontainers.image.revision" output is not valid`
8999
);
90100
assert.equal(
91-
builtImageOutput.annotations["org.opencontainers.image.source"],
101+
builtImage.annotations["org.opencontainers.image.source"],
92102
"https://github.com/hoverkraft-tech/ci-github-container",
93103
`"annotations.org.opencontainers.image.source" output is not valid`
94104
);
95105
assert.equal(
96-
builtImageOutput.annotations["org.opencontainers.image.title"],
106+
builtImage.annotations["org.opencontainers.image.title"],
97107
"ci-github-container",
98108
`"annotations.org.opencontainers.image.title" output is not valid`
99109
);
100110
assert.equal(
101-
builtImageOutput.annotations["org.opencontainers.image.url"],
111+
builtImage.annotations["org.opencontainers.image.url"],
102112
"https://github.com/hoverkraft-tech/ci-github-container",
103113
`"annotations.org.opencontainers.image.url" output is not valid`
104114
);
@@ -108,47 +118,47 @@ jobs:
108118
const prShaTag = `pr-${{ github.event.pull_request.number }}-${shortSha}`;
109119
const prTag = `pr-${{ github.event.pull_request.number }}`;
110120
111-
assert.equal(builtImageOutput.tags.length, 2, `"tags" output is not valid`);
121+
assert.equal(builtImage.tags.length, 2, `"tags" output is not valid`);
112122
113-
assert.equal(builtImageOutput.tags[0], prShaTag, `"tags" output is not valid`);
114-
assert.equal(builtImageOutput.tags[1], prTag, `"tags" output is not valid`);
123+
assert.equal(builtImage.tags[0], prShaTag, `"tags" output is not valid`);
124+
assert.equal(builtImage.tags[1], prTag, `"tags" output is not valid`);
115125
116126
assert.equal(
117-
builtImageOutput.images.length,
127+
builtImage.images.length,
118128
2,
119129
`"images" output is not valid`
120130
);
121131
assert.equal(
122-
builtImageOutput.images[0],
132+
builtImage.images[0],
123133
`ghcr.io/hoverkraft-tech/ci-github-container/application-test:${prShaTag}`,
124134
`"images" output is not valid`
125135
);
126136
assert.equal(
127-
builtImageOutput.images[1],
137+
builtImage.images[1],
128138
`ghcr.io/hoverkraft-tech/ci-github-container/application-test:${prTag}`,
129139
`"images" output is not valid`
130140
);
131141
assert.equal(
132-
builtImageOutput.annotations["org.opencontainers.image.version"],
142+
builtImage.annotations["org.opencontainers.image.version"],
133143
prTag,
134144
`"annotations.org.opencontainers.image.version" output is not valid`
135145
);
136146
137147
} else {
138148
const refTag = `${{ github.ref_name }}`;
139149
140-
assert.equal(builtImageOutput.tags.length, 1, `"tags" output is not valid`);
141-
assert.equal(builtImageOutput.tags[0], refTag, `"tags" output is not valid`);
150+
assert.equal(builtImage.tags.length, 1, `"tags" output is not valid`);
151+
assert.equal(builtImage.tags[0], refTag, `"tags" output is not valid`);
142152
143-
assert.equal(builtImageOutput.images.length, 1, `"images" output is not valid`);
153+
assert.equal(builtImage.images.length, 1, `"images" output is not valid`);
144154
assert.equal(
145-
builtImageOutput.images[0],
155+
builtImage.images[0],
146156
`ghcr.io/hoverkraft-tech/ci-github-container/application-test:${refTag}`,
147157
`"images" output is not valid`
148158
);
149159
150160
assert.equal(
151-
builtImageOutput.annotations["org.opencontainers.image.version"],
161+
builtImage.annotations["org.opencontainers.image.version"],
152162
refTag,
153163
`"annotations.org.opencontainers.image.version" output is not valid`
154164
);
@@ -211,11 +221,20 @@ jobs:
211221
script: |
212222
const assert = require("assert");
213223
214-
const builtImageOutput = ${{ steps.build-image.outputs.built-image }};
224+
const builtImageOutput = ${{ toJSON(steps.build-image.outputs.built-image) }};
215225
assert(builtImageOutput, `"built-image" output is empty`);
216226
217-
assert.equal(builtImageOutput.tags.length, 1, `"tags" output is not valid`);
218-
assert.equal(builtImageOutput.tags[0], '0.1.0', `"tags" output is not valid`);
227+
let builtImage;
228+
try {
229+
builtImage = JSON.parse(builtImageOutput);
230+
} catch (error) {
231+
assert.fail(`Failed to parse built image output: ${error}`);
232+
}
233+
234+
assert(builtImage, `"built-image" output is empty`);
235+
236+
assert.equal(builtImage.tags.length, 1, `"tags" output is not valid`);
237+
assert.equal(builtImage.tags[0], '0.1.0', `"tags" output is not valid`);
219238
220239
- uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
221240
with:

actions/helm/parse-chart-uri/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ This action does not requires any permissions.
4444
4545
| **Input** | **Description** | **Default** | **Required** |
4646
| ---------------- | ------------------ | ----------- | ------------ |
47-
| <code>uri</code> | Chart URI to parse | | **true** |
47+
| <code>URI</code> | Chart URI to parse | | **true** |
4848
4949
<!-- end inputs -->
5050
<!-- start outputs -->

0 commit comments

Comments
 (0)