From f494936c01a462bcd70586ba77de5d551a97e044 Mon Sep 17 00:00:00 2001 From: Choro Abdymanapov Date: Mon, 26 Oct 2020 20:22:07 +0300 Subject: [PATCH 1/6] feat: added getter --- src/main/ts/getter.ts | 11 +++++++++++ src/main/ts/index.ts | 1 + src/test/ts/getter.ts | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 src/main/ts/getter.ts create mode 100644 src/test/ts/getter.ts diff --git a/src/main/ts/getter.ts b/src/main/ts/getter.ts new file mode 100644 index 0000000..9a9906a --- /dev/null +++ b/src/main/ts/getter.ts @@ -0,0 +1,11 @@ +import { readFileToString } from './utils' +import { TStamp } from './interfaces' + +export const getBuildstamp = (stampPath: string): TStamp | undefined => { + try { + return JSON.parse(readFileToString(stampPath)) + } catch (e) { + console.error('Buildstamp getting error:', e.message) + } + return undefined +} diff --git a/src/main/ts/index.ts b/src/main/ts/index.ts index f402e0c..4d11eac 100644 --- a/src/main/ts/index.ts +++ b/src/main/ts/index.ts @@ -2,3 +2,4 @@ import { execute } from './executor' export * from './interfaces' export { execute } +export { getBuildstamp } from './getter' diff --git a/src/test/ts/getter.ts b/src/test/ts/getter.ts new file mode 100644 index 0000000..cb23a8c --- /dev/null +++ b/src/test/ts/getter.ts @@ -0,0 +1,34 @@ +import { getBuildstamp, TStamp } from '../../main/ts' +import * as utils from '../../main/ts/utils' + +const stamp: TStamp = { + git: { + commitId: 'foo', + repoName: 'bar', + repoUrl: 'baz', + commitMessage: 'qux', + }, + date: 0, + docker: { + imageTag: 'bat', + }, +} + +describe('getBuildstamp', () => { + it('reads and parses file', () => { + jest.spyOn(utils, 'readFileToString') + .mockImplementation(() => JSON.stringify(stamp)) + expect(getBuildstamp('some/path')).toEqual(stamp) + }) + + it('logs an error', () => { + jest.spyOn(utils, 'readFileToString') + .mockImplementation(() => { + throw new Error('foo') + }) + const errorSpy = jest.spyOn(console, 'error') + .mockImplementation(() => { /* noop */ }) + expect(getBuildstamp('some/path')).toBeUndefined() + expect(errorSpy).toHaveBeenCalled() + }) +}) From d384c3cc6d266f5ec8ba7563c8e688b90019dc14 Mon Sep 17 00:00:00 2001 From: Choro Abdymanapov Date: Mon, 26 Oct 2020 20:23:54 +0300 Subject: [PATCH 2/6] fix: removed extra field from test mock --- src/test/ts/getter.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/ts/getter.ts b/src/test/ts/getter.ts index cb23a8c..60d8234 100644 --- a/src/test/ts/getter.ts +++ b/src/test/ts/getter.ts @@ -6,7 +6,6 @@ const stamp: TStamp = { commitId: 'foo', repoName: 'bar', repoUrl: 'baz', - commitMessage: 'qux', }, date: 0, docker: { From 0d6e140a565b7ea6e9f40670af0b3907eaa22e25 Mon Sep 17 00:00:00 2001 From: Choro Abdymanapov Date: Mon, 26 Oct 2020 20:31:38 +0300 Subject: [PATCH 3/6] docs: added getBuildstamp --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 9b6a6b8..068528f 100644 --- a/README.md +++ b/README.md @@ -88,3 +88,19 @@ Output in `some/path/stamp.json`: "date": "2020-09-04T19:53:03.790Z" } ``` +### getBuildstamp(path) +Safely parses and returns buildstamp by given path. Returns `undefined` on error. +```javascript +import { getBuildstamp } from 'buildstamp' + +const stamp = getBuildstamp('some/path') +/* +{ + git: { + commitId: 'fc6e78b11ef4c7db1c8b89fa6b0d9b3ad4ad481d', + repoName: 'qiwi/buildstamp.git' + }, + docker: { imageTag: 'foo', bar: 'bar' }, + date: '2020-08-27T20:47:41.958Z' +} +``` From e47c1bb16aba83eed4d72a0adf914eb6bdb446a9 Mon Sep 17 00:00:00 2001 From: Choro Abdymanapov Date: Mon, 26 Oct 2020 20:35:50 +0300 Subject: [PATCH 4/6] refactor: requested changes --- README.md | 5 +++-- src/main/ts/getter.ts | 4 ++-- src/main/ts/index.ts | 2 +- src/test/ts/getter.ts | 8 ++++---- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 068528f..6c51464 100644 --- a/README.md +++ b/README.md @@ -88,10 +88,10 @@ Output in `some/path/stamp.json`: "date": "2020-09-04T19:53:03.790Z" } ``` -### getBuildstamp(path) +### readBuildstamp(path) Safely parses and returns buildstamp by given path. Returns `undefined` on error. ```javascript -import { getBuildstamp } from 'buildstamp' +import { readBuildstamp } from 'buildstamp' const stamp = getBuildstamp('some/path') /* @@ -103,4 +103,5 @@ const stamp = getBuildstamp('some/path') docker: { imageTag: 'foo', bar: 'bar' }, date: '2020-08-27T20:47:41.958Z' } +*/ ``` diff --git a/src/main/ts/getter.ts b/src/main/ts/getter.ts index 9a9906a..d2438c0 100644 --- a/src/main/ts/getter.ts +++ b/src/main/ts/getter.ts @@ -1,11 +1,11 @@ import { readFileToString } from './utils' import { TStamp } from './interfaces' -export const getBuildstamp = (stampPath: string): TStamp | undefined => { +export const readBuildstamp = (stampPath: string): TStamp | undefined => { try { return JSON.parse(readFileToString(stampPath)) } catch (e) { - console.error('Buildstamp getting error:', e.message) + console.error('Buildstamp reading error:', e.message) } return undefined } diff --git a/src/main/ts/index.ts b/src/main/ts/index.ts index 4d11eac..0d82723 100644 --- a/src/main/ts/index.ts +++ b/src/main/ts/index.ts @@ -2,4 +2,4 @@ import { execute } from './executor' export * from './interfaces' export { execute } -export { getBuildstamp } from './getter' +export { readBuildstamp } from './getter' diff --git a/src/test/ts/getter.ts b/src/test/ts/getter.ts index 60d8234..937ea64 100644 --- a/src/test/ts/getter.ts +++ b/src/test/ts/getter.ts @@ -1,4 +1,4 @@ -import { getBuildstamp, TStamp } from '../../main/ts' +import { readBuildstamp, TStamp } from '../../main/ts' import * as utils from '../../main/ts/utils' const stamp: TStamp = { @@ -13,11 +13,11 @@ const stamp: TStamp = { }, } -describe('getBuildstamp', () => { +describe('readBuildstamp', () => { it('reads and parses file', () => { jest.spyOn(utils, 'readFileToString') .mockImplementation(() => JSON.stringify(stamp)) - expect(getBuildstamp('some/path')).toEqual(stamp) + expect(readBuildstamp('some/path')).toEqual(stamp) }) it('logs an error', () => { @@ -27,7 +27,7 @@ describe('getBuildstamp', () => { }) const errorSpy = jest.spyOn(console, 'error') .mockImplementation(() => { /* noop */ }) - expect(getBuildstamp('some/path')).toBeUndefined() + expect(readBuildstamp('some/path')).toBeUndefined() expect(errorSpy).toHaveBeenCalled() }) }) From 523f43f59a709f51b5581e4bbb5b8a4f868023b6 Mon Sep 17 00:00:00 2001 From: Choro Abdymanapov Date: Mon, 26 Oct 2020 21:51:18 +0300 Subject: [PATCH 5/6] test: added mock resetting --- src/test/ts/getter.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/ts/getter.ts b/src/test/ts/getter.ts index 937ea64..b6b86f0 100644 --- a/src/test/ts/getter.ts +++ b/src/test/ts/getter.ts @@ -31,3 +31,5 @@ describe('readBuildstamp', () => { expect(errorSpy).toHaveBeenCalled() }) }) + +afterAll(jest.resetAllMocks) From 9c47508307f53674734de162c16db2b3140fe3e3 Mon Sep 17 00:00:00 2001 From: Choro Abdymanapov Date: Mon, 26 Oct 2020 21:56:05 +0300 Subject: [PATCH 6/6] test: moved mock resetting into describe --- src/test/ts/getter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/ts/getter.ts b/src/test/ts/getter.ts index b6b86f0..c3b100a 100644 --- a/src/test/ts/getter.ts +++ b/src/test/ts/getter.ts @@ -30,6 +30,6 @@ describe('readBuildstamp', () => { expect(readBuildstamp('some/path')).toBeUndefined() expect(errorSpy).toHaveBeenCalled() }) -}) -afterAll(jest.resetAllMocks) + afterAll(jest.resetAllMocks) +})