-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add and configure ESLint and update configuration for Prettier (#26)
* Add ESLint and Prettier * Rebuild action * Update package.json * Update licenses * Fix review points
- Loading branch information
1 parent
87579b1
commit 9169aa7
Showing
19 changed files
with
2,505 additions
and
454 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Ignore list | ||
/* | ||
|
||
# Do not ignore these folders: | ||
!__tests__/ | ||
!src/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
module.exports = { | ||
extends: [ | ||
'eslint:recommended', | ||
'plugin:@typescript-eslint/recommended', | ||
'plugin:eslint-plugin-jest/recommended', | ||
'eslint-config-prettier' | ||
], | ||
parser: '@typescript-eslint/parser', | ||
plugins: ['@typescript-eslint', 'eslint-plugin-jest'], | ||
rules: { | ||
'@typescript-eslint/no-require-imports': 'error', | ||
'@typescript-eslint/no-non-null-assertion': 'off', | ||
'@typescript-eslint/no-explicit-any': 'off', | ||
'@typescript-eslint/no-empty-function': 'off', | ||
'@typescript-eslint/ban-ts-comment': [ | ||
'error', | ||
{ | ||
'ts-ignore': 'allow-with-description' | ||
} | ||
], | ||
'no-console': 'error', | ||
'yoda': 'error', | ||
'prefer-const': [ | ||
'error', | ||
{ | ||
destructuring: 'all' | ||
} | ||
], | ||
'no-control-regex': 'off', | ||
'no-constant-condition': ['error', {checkLoops: false}] | ||
}, | ||
overrides: [ | ||
{ | ||
files: ['**/*{test,spec}.ts'], | ||
rules: { | ||
'@typescript-eslint/no-unused-vars': 'off', | ||
'jest/no-standalone-expect': 'off', | ||
'jest/no-conditional-expect': 'off', | ||
'no-console': 'off', | ||
|
||
} | ||
} | ||
], | ||
env: { | ||
node: true, | ||
es6: true, | ||
'jest/globals': true | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
* text=auto eol=lf | ||
.licenses/** -diff linguist-generated=true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Ignore list | ||
/* | ||
|
||
# Do not ignore these folders: | ||
!__tests__/ | ||
!.github/ | ||
!src/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
module.exports = { | ||
printWidth: 80, | ||
tabWidth: 2, | ||
useTabs: false, | ||
semi: true, | ||
singleQuote: true, | ||
trailingComma: 'none', | ||
bracketSpacing: false, | ||
arrowParens: 'avoid' | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,43 @@ | ||
import * as github from "@actions/github"; | ||
import * as apiUtils from "../src/api-utils"; | ||
import * as github from '@actions/github'; | ||
import * as apiUtils from '../src/api-utils'; | ||
|
||
const prereleaseData = require("./data/pre-release.json"); | ||
const releaseData = require("./data/release.json"); | ||
import prereleaseData from './data/pre-release.json'; | ||
import releaseData from './data/release.json'; | ||
|
||
const token = "faketoken"; | ||
const token = 'faketoken'; | ||
const octokitClient = github.getOctokit(token); | ||
|
||
let getReleaseSpy: jest.SpyInstance; | ||
|
||
process.env.GITHUB_REPOSITORY = "test/repository"; | ||
|
||
describe("validateIfReleaseIsPublished", () => { | ||
beforeEach(() => { | ||
getReleaseSpy = jest.spyOn(octokitClient.repos, "getReleaseByTag"); | ||
}); | ||
|
||
it("throw if release is marked as pre-release", async () => { | ||
getReleaseSpy.mockReturnValue(prereleaseData); | ||
|
||
expect.assertions(1); | ||
await expect(apiUtils.validateIfReleaseIsPublished("v1.0.0", octokitClient)).rejects.toThrowError( | ||
"The 'v1.0.0' release is marked as pre-release. Updating tags for pre-release is not supported" | ||
); | ||
}); | ||
|
||
it("validate that release is published", async () => { | ||
getReleaseSpy.mockReturnValue(releaseData); | ||
|
||
expect.assertions(1); | ||
await expect(apiUtils.validateIfReleaseIsPublished("v1.1.0", octokitClient)).resolves.not.toThrow(); | ||
}); | ||
|
||
afterEach(() => { | ||
jest.resetAllMocks(); | ||
jest.clearAllMocks(); | ||
}); | ||
}); | ||
process.env.GITHUB_REPOSITORY = 'test/repository'; | ||
|
||
describe('validateIfReleaseIsPublished', () => { | ||
beforeEach(() => { | ||
getReleaseSpy = jest.spyOn(octokitClient.repos, 'getReleaseByTag'); | ||
}); | ||
|
||
it('throw if release is marked as pre-release', async () => { | ||
getReleaseSpy.mockReturnValue(prereleaseData); | ||
|
||
expect.assertions(1); | ||
await expect( | ||
apiUtils.validateIfReleaseIsPublished('v1.0.0', octokitClient) | ||
).rejects.toThrow( | ||
"The 'v1.0.0' release is marked as pre-release. Updating tags for pre-release is not supported" | ||
); | ||
}); | ||
|
||
it('validate that release is published', async () => { | ||
getReleaseSpy.mockReturnValue(releaseData); | ||
|
||
expect.assertions(1); | ||
await expect( | ||
apiUtils.validateIfReleaseIsPublished('v1.1.0', octokitClient) | ||
).resolves.not.toThrow(); | ||
}); | ||
|
||
afterEach(() => { | ||
jest.resetAllMocks(); | ||
jest.clearAllMocks(); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,69 +1,93 @@ | ||
import * as versionUtils from "../src/version-utils"; | ||
import * as versionUtils from '../src/version-utils'; | ||
import stableSemver from './data/stable-semver.json'; | ||
import stableBuildSemver from './data/stable-build-semver.json'; | ||
import prereleaseSemver from './data/prerelease-semver.json'; | ||
import prereleaseBuildSemver from './data/prerelease-build-semver.json'; | ||
|
||
describe("isStableSemverVersion", () => { | ||
it("validate if a version is stable", () => { | ||
const semverVersion = require("./data/stable-semver.json"); | ||
expect(versionUtils.isStableSemverVersion(semverVersion)).toBeTruthy(); | ||
}); | ||
|
||
it("validate if a version with build metadata is stable", () => { | ||
const semverVersion = require("./data/stable-build-semver.json"); | ||
expect(versionUtils.isStableSemverVersion(semverVersion)).toBeTruthy(); | ||
}); | ||
describe('isStableSemverVersion', () => { | ||
it('validate if a version is stable', () => { | ||
expect( | ||
versionUtils.isStableSemverVersion(stableSemver as any) | ||
).toBeTruthy(); | ||
}); | ||
|
||
it("validate if a pre-release version is not stable", () => { | ||
const semverVersion = require("./data/prerelease-semver.json"); | ||
expect(versionUtils.isStableSemverVersion(semverVersion)).toBeFalsy(); | ||
}); | ||
it('validate if a version with build metadata is stable', () => { | ||
expect( | ||
versionUtils.isStableSemverVersion(stableBuildSemver as any) | ||
).toBeTruthy(); | ||
}); | ||
|
||
it("validate if a pre-release version with build metadata is not stable", () => { | ||
const semverVersion = require("./data/prerelease-build-semver.json"); | ||
expect(versionUtils.isStableSemverVersion(semverVersion)).toBeFalsy(); | ||
}); | ||
it('validate if a pre-release version is not stable', () => { | ||
expect( | ||
versionUtils.isStableSemverVersion(prereleaseSemver as any) | ||
).toBeFalsy(); | ||
}); | ||
|
||
it('validate if a pre-release version with build metadata is not stable', () => { | ||
expect( | ||
versionUtils.isStableSemverVersion(prereleaseBuildSemver as any) | ||
).toBeFalsy(); | ||
}); | ||
}); | ||
|
||
describe("validateSemverVersionFromTag", () => { | ||
it("validate a tag containing an valid semantic version", () => { | ||
expect(() => versionUtils.validateSemverVersionFromTag("1.0.0")).not.toThrow(); | ||
}); | ||
describe('validateSemverVersionFromTag', () => { | ||
it('validate a tag containing a valid semantic version', () => { | ||
expect(() => | ||
versionUtils.validateSemverVersionFromTag('1.0.0') | ||
).not.toThrow(); | ||
}); | ||
|
||
it("validate a tag containing an valid semantic version with 'v' prefix", () => { | ||
expect(() => versionUtils.validateSemverVersionFromTag("v1.0.0")).not.toThrow(); | ||
}); | ||
it("validate a tag containing a valid semantic version with 'v' prefix", () => { | ||
expect(() => | ||
versionUtils.validateSemverVersionFromTag('v1.0.0') | ||
).not.toThrow(); | ||
}); | ||
|
||
it("validate a tag containing an valid semantic version with build metadata", () => { | ||
expect(() => versionUtils.validateSemverVersionFromTag("v1.0.0+20130313144700")).not.toThrow(); | ||
}); | ||
it('validate a tag containing a valid semantic version with build metadata', () => { | ||
expect(() => | ||
versionUtils.validateSemverVersionFromTag('v1.0.0+20130313144700') | ||
).not.toThrow(); | ||
}); | ||
|
||
it("throw when a tag contains an invalid semantic version", () => { | ||
expect(() => versionUtils.validateSemverVersionFromTag("1.0.0invalid")).toThrowError( | ||
"The '1.0.0invalid' doesn't satisfy semantic versioning specification" | ||
); | ||
}); | ||
it('throw when a tag contains an invalid semantic version', () => { | ||
expect(() => | ||
versionUtils.validateSemverVersionFromTag('1.0.0invalid') | ||
).toThrow( | ||
"The '1.0.0invalid' doesn't satisfy semantic versioning specification" | ||
); | ||
}); | ||
|
||
it("throw when a tag contains an valid unstable semantic version", () => { | ||
expect(() => versionUtils.validateSemverVersionFromTag("v1.0.0-beta.1")).toThrowError( | ||
"It is not allowed to specify pre-release version to update the major tag" | ||
); | ||
}); | ||
it('throw when a tag contains a valid unstable semantic version', () => { | ||
expect(() => | ||
versionUtils.validateSemverVersionFromTag('v1.0.0-beta.1') | ||
).toThrow( | ||
'It is not allowed to specify pre-release version to update the major tag' | ||
); | ||
}); | ||
|
||
it("throw when a tag contains an valid unstable semantic version with build metadata", () => { | ||
expect(() => versionUtils.validateSemverVersionFromTag("v1.0.0-beta.1+20130313144700")).toThrowError( | ||
"It is not allowed to specify pre-release version to update the major tag" | ||
); | ||
}); | ||
it('throw when a tag contains a valid unstable semantic version with build metadata', () => { | ||
expect(() => | ||
versionUtils.validateSemverVersionFromTag('v1.0.0-beta.1+20130313144700') | ||
).toThrow( | ||
'It is not allowed to specify pre-release version to update the major tag' | ||
); | ||
}); | ||
}); | ||
|
||
describe("getMajorTagFromFullTag", () => { | ||
describe("get a valid major tag from full tag", () => { | ||
it.each([ | ||
["1.0.0", "1"], | ||
["v1.0.0", "v1"], | ||
["v1.0.0-beta.1", "v1"], | ||
["v1.0.0+20130313144700", "v1"], | ||
] as [string, string][])("%s -> %s", (sourceTag: string, expectedMajorTag: string) => { | ||
const resultantMajorTag = versionUtils.getMajorTagFromFullTag(sourceTag); | ||
expect(resultantMajorTag).toBe(expectedMajorTag); | ||
}); | ||
}); | ||
}); | ||
describe('getMajorTagFromFullTag', () => { | ||
describe('get a valid major tag from full tag', () => { | ||
it.each([ | ||
['1.0.0', '1'], | ||
['v1.0.0', 'v1'], | ||
['v1.0.0-beta.1', 'v1'], | ||
['v1.0.0+20130313144700', 'v1'] | ||
] as [string, string][])( | ||
'%s -> %s', | ||
(sourceTag: string, expectedMajorTag: string) => { | ||
const resultantMajorTag = | ||
versionUtils.getMajorTagFromFullTag(sourceTag); | ||
expect(resultantMajorTag).toBe(expectedMajorTag); | ||
} | ||
); | ||
}); | ||
}); |
Oops, something went wrong.