From 65c030d2d435857f26a4d2aed87dbc047dc5fec1 Mon Sep 17 00:00:00 2001 From: Samuel Bodin <1637651+bodinsamuel@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:38:10 +0200 Subject: [PATCH] tests: cover more edge cases --- src/rules/spec/nodejs/dependencies.test.ts | 17 ++++++++ src/rules/spec/terraform/dependencies.test.ts | 43 +++++++++++++++++++ src/rules/spec/terraform/lockfile.ts | 2 +- src/rules/spec/terraform/resource.ts | 2 +- 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/rules/spec/nodejs/dependencies.test.ts b/src/rules/spec/nodejs/dependencies.test.ts index 36a7369a..32f3b78d 100644 --- a/src/rules/spec/nodejs/dependencies.test.ts +++ b/src/rules/spec/nodejs/dependencies.test.ts @@ -93,4 +93,21 @@ describe('npm', () => { Array.from(flatten(res, { merge: true }).techs).sort() ).toStrictEqual(match); }); + + it('should match nothing', async () => { + const res = await analyser({ + provider: new FakeProvider({ + paths: { + '/': ['package.json'], + }, + files: { + '/package.json': JSON.stringify({ foo: 'bar' }), + }, + }), + }); + const match: AllowedKeys[] = ['nodejs']; + expect( + Array.from(flatten(res, { merge: true }).techs).sort() + ).toStrictEqual(match); + }); }); diff --git a/src/rules/spec/terraform/dependencies.test.ts b/src/rules/spec/terraform/dependencies.test.ts index 37d2f292..a85fb9d6 100644 --- a/src/rules/spec/terraform/dependencies.test.ts +++ b/src/rules/spec/terraform/dependencies.test.ts @@ -58,6 +58,24 @@ describe('terraform (lockfile)', () => { Array.from(flatten(res, { merge: true }).techs).sort() ).toStrictEqual(match); }); + + it('should match nothing', async () => { + const res = await analyser({ + provider: new FakeProvider({ + paths: { + '/': ['.terraform.lock.hcl'], + }, + files: { + '/.terraform.lock.hcl': '', + }, + }), + }); + + const match: AllowedKeys[] = ['terraform']; + expect( + Array.from(flatten(res, { merge: true }).techs).sort() + ).toStrictEqual(match); + }); }); describe('terraform (resource)', () => { @@ -101,4 +119,29 @@ describe('terraform (resource)', () => { Array.from(flatten(res, { merge: true }).techs).sort() ).toStrictEqual(match); }); + + it('should match nothing', async () => { + const resource: string[] = [ + ` + resource "unknown" "foobar" { + name = "hello" + }`, + ]; + + const res = await analyser({ + provider: new FakeProvider({ + paths: { + '/': ['main.tf'], + }, + files: { + '/main.tf': resource.join(''), + }, + }), + }); + + const match: AllowedKeys[] = ['terraform']; + expect( + Array.from(flatten(res, { merge: true }).techs).sort() + ).toStrictEqual(match); + }); }); diff --git a/src/rules/spec/terraform/lockfile.ts b/src/rules/spec/terraform/lockfile.ts index c56c57ec..f3b9429d 100644 --- a/src/rules/spec/terraform/lockfile.ts +++ b/src/rules/spec/terraform/lockfile.ts @@ -26,7 +26,7 @@ export const detectTerraformLockfile: ComponentMatcher = async ( let json: Record; try { json = await parse(file.fp, content); - } catch (err) /* istanbul ignore next */ { + } catch (err) { console.warn('Failed to parse HCL', err); return false; } diff --git a/src/rules/spec/terraform/resource.ts b/src/rules/spec/terraform/resource.ts index cc81c086..3b0b025f 100644 --- a/src/rules/spec/terraform/resource.ts +++ b/src/rules/spec/terraform/resource.ts @@ -27,7 +27,7 @@ export const detectTerraformResource: ComponentMatcher = async ( let json: Record; try { json = await parse(file.fp, content); - } catch (err) /* istanbul ignore next */ { + } catch (err) { console.warn('Failed to parse HCL', err); continue; }