Skip to content

Commit 57271e9

Browse files
authored
Merge pull request #1098 from 20minutes/fix/artifacts-deps-only
Do not check the whole `package.json` for artifacts
2 parents 62763e6 + 4e29ec8 commit 57271e9

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

functions/classes/ArtifactsHandler.js

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,17 @@ export class ArtifactsHandler extends Handler {
4040
const file = files.data.find(({ filename }) => filename.includes('package.json'))
4141

4242
if (!file) {
43+
console.log('No package.json found in PR')
44+
4345
response = await this.updateStatus(body, payload.success)
4446

4547
return callback(null, response)
4648
}
4749

4850
const refMatch = file.contents_url.match(/ref=([a-z0-9]+)/)
4951
if (!refMatch?.[1]) {
52+
console.log('no ref in package.json diff url?')
53+
5054
response = await this.updateStatus(body, payload.success)
5155

5256
return callback(null, response)
@@ -59,13 +63,32 @@ export class ArtifactsHandler extends Handler {
5963
ref: refMatch[1],
6064
})
6165

62-
const match = Buffer.from(content.data.content.toString('utf8'), 'base64')
63-
.toString('ascii')
64-
.match(this.artifactsRegex)
66+
let packageJson = ''
67+
try {
68+
packageJson = JSON.parse(
69+
Buffer.from(content.data.content.toString('utf8'), 'base64').toString('ascii')
70+
)
71+
} catch (e) {
72+
response = await this.updateStatus(body, payload.success)
73+
console.log('Parsing package.json failed:', e)
74+
75+
return callback(null, response)
76+
}
77+
78+
const deps = {
79+
dependencies: packageJson.dependencies || {},
80+
devDependencies: packageJson.devDependencies || {},
81+
}
82+
83+
const match = JSON.stringify(deps).match(this.artifactsRegex)
6584

6685
if (match === null) {
86+
console.log('No match, success.')
87+
6788
response = await this.updateStatus(body, payload.success)
6889
} else {
90+
console.log('Match found, failure.')
91+
6992
response = await this.updateStatus(body, payload.failure)
7093
}
7194

tests/artifcats.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ describe('Artifacts check', () => {
349349
'https://raw.githubusercontent.com/20minutes/thundra/d85673bd0d81b4ecdc3c4c52936cbcdb778b7751/package.json?token=AAUILIMSMV5HAKKH4FRRQH3JBX7YI',
350350
type: 'file',
351351
content:
352-
'ewogICJuYW1lIjogIm15X3BhY2thZ2UiLAogICJkZXNjcmlwdGlvbiI6ICJtYWtlIHlvdXIgcGFja2FnZSBlYXNpZXIgdG8gZmluZCBvbiB0aGUgbnBtIHdlYnNpdGUiLAogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogImVjaG8gXCJFcnJvcjogbm8gdGVzdCBzcGVjaWZpZWRcIiAmJiBleGl0IDEiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tb25hdGhlb2N0b2NhdC9teV9wYWNrYWdlLmdpdCIKICB9LAogICJrZXl3b3JkcyI6IFtdLAogICJhdXRob3IiOiAiIiwKICAibGljZW5zZSI6ICJJU0MiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbW9uYXRoZW9jdG9jYXQvbXlfcGFja2FnZS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL21vbmF0aGVvY3RvY2F0L215X3BhY2thZ2UiCn0=',
352+
'ewogICJuYW1lIjogIm15X3BhY2thZ2UiLAogICJkZXNjcmlwdGlvbiI6ICJtYWtlIHlvdXIgcGFja2FnZSBlYXNpZXIgdG8gZmluZCBvbiB0aGUgbnBtIHdlYnNpdGUiLAogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogImVjaG8gXCJFcnJvcjogbm8gdGVzdCBzcGVjaWZpZWRcIiAmJiBleGl0IDEiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tb25hdGhlb2N0b2NhdC9teV9wYWNrYWdlLmdpdCIKICB9LAogICJrZXl3b3JkcyI6IFtdLAogICJhdXRob3IiOiAiIiwKICAibGljZW5zZSI6ICJJU0MiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbW9uYXRoZW9jdG9jYXQvbXlfcGFja2FnZS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL21vbmF0aGVvY3RvY2F0L215X3BhY2thZ2UiLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAic3VwZXIiOiAiaHR0cDovL2xvY2FsaG9zdDoxMjM0L3BhY2thZ2UuemlwIgogIH0KfQ==',
353353
encoding: 'base64',
354354
_links: {
355355
self: 'https://api.github.com/repos/20minutes/thundra/contents/package.json?ref=d85673bd0d81b4ecdc3c4c52936cbcdb778b7751',
@@ -385,7 +385,7 @@ describe('Artifacts check', () => {
385385
},
386386
}
387387

388-
const fixup = new ArtifactsHandler('GH_TOKEN', 'THE BRAND', '(monatheoctocat|super)')
388+
const fixup = new ArtifactsHandler('GH_TOKEN', 'THE BRAND', '(localhost:)')
389389
await fixup.handle(githubEvent, callback)
390390

391391
expect(callback).toHaveBeenCalledTimes(1)

0 commit comments

Comments
 (0)