Add and configure ESLint and update configuration for Prettier (#26)
* Add ESLint and Prettier * Rebuild action * Update package.json * Update licenses * Fix review pointspull/27/head
parent
87579b14ff
commit
9169aa7609
@ -0,0 +1,6 @@
|
|||||||
|
# Ignore list
|
||||||
|
/*
|
||||||
|
|
||||||
|
# Do not ignore these folders:
|
||||||
|
!__tests__/
|
||||||
|
!src/
|
@ -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
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1,2 @@
|
|||||||
|
* text=auto eol=lf
|
||||||
|
.licenses/** -diff linguist-generated=true
|
@ -0,0 +1,7 @@
|
|||||||
|
# Ignore list
|
||||||
|
/*
|
||||||
|
|
||||||
|
# Do not ignore these folders:
|
||||||
|
!__tests__/
|
||||||
|
!.github/
|
||||||
|
!src/
|
@ -0,0 +1,10 @@
|
|||||||
|
module.exports = {
|
||||||
|
printWidth: 80,
|
||||||
|
tabWidth: 2,
|
||||||
|
useTabs: false,
|
||||||
|
semi: true,
|
||||||
|
singleQuote: true,
|
||||||
|
trailingComma: 'none',
|
||||||
|
bracketSpacing: false,
|
||||||
|
arrowParens: 'avoid'
|
||||||
|
};
|
@ -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", () => {
|
describe('isStableSemverVersion', () => {
|
||||||
it("validate if a version is stable", () => {
|
it('validate if a version is stable', () => {
|
||||||
const semverVersion = require("./data/stable-semver.json");
|
expect(
|
||||||
expect(versionUtils.isStableSemverVersion(semverVersion)).toBeTruthy();
|
versionUtils.isStableSemverVersion(stableSemver as any)
|
||||||
|
).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("validate if a version with build metadata is stable", () => {
|
it('validate if a version with build metadata is stable', () => {
|
||||||
const semverVersion = require("./data/stable-build-semver.json");
|
expect(
|
||||||
expect(versionUtils.isStableSemverVersion(semverVersion)).toBeTruthy();
|
versionUtils.isStableSemverVersion(stableBuildSemver as any)
|
||||||
|
).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("validate if a pre-release version is not stable", () => {
|
it('validate if a pre-release version is not stable', () => {
|
||||||
const semverVersion = require("./data/prerelease-semver.json");
|
expect(
|
||||||
expect(versionUtils.isStableSemverVersion(semverVersion)).toBeFalsy();
|
versionUtils.isStableSemverVersion(prereleaseSemver as any)
|
||||||
|
).toBeFalsy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("validate if a pre-release version with build metadata is not stable", () => {
|
it('validate if a pre-release version with build metadata is not stable', () => {
|
||||||
const semverVersion = require("./data/prerelease-build-semver.json");
|
expect(
|
||||||
expect(versionUtils.isStableSemverVersion(semverVersion)).toBeFalsy();
|
versionUtils.isStableSemverVersion(prereleaseBuildSemver as any)
|
||||||
|
).toBeFalsy();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("validateSemverVersionFromTag", () => {
|
describe('validateSemverVersionFromTag', () => {
|
||||||
it("validate a tag containing an valid semantic version", () => {
|
it('validate a tag containing a valid semantic version', () => {
|
||||||
expect(() => versionUtils.validateSemverVersionFromTag("1.0.0")).not.toThrow();
|
expect(() =>
|
||||||
|
versionUtils.validateSemverVersionFromTag('1.0.0')
|
||||||
|
).not.toThrow();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("validate a tag containing an valid semantic version with 'v' prefix", () => {
|
it("validate a tag containing a valid semantic version with 'v' prefix", () => {
|
||||||
expect(() => versionUtils.validateSemverVersionFromTag("v1.0.0")).not.toThrow();
|
expect(() =>
|
||||||
|
versionUtils.validateSemverVersionFromTag('v1.0.0')
|
||||||
|
).not.toThrow();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("validate a tag containing an valid semantic version with build metadata", () => {
|
it('validate a tag containing a valid semantic version with build metadata', () => {
|
||||||
expect(() => versionUtils.validateSemverVersionFromTag("v1.0.0+20130313144700")).not.toThrow();
|
expect(() =>
|
||||||
|
versionUtils.validateSemverVersionFromTag('v1.0.0+20130313144700')
|
||||||
|
).not.toThrow();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("throw when a tag contains an invalid semantic version", () => {
|
it('throw when a tag contains an invalid semantic version', () => {
|
||||||
expect(() => versionUtils.validateSemverVersionFromTag("1.0.0invalid")).toThrowError(
|
expect(() =>
|
||||||
|
versionUtils.validateSemverVersionFromTag('1.0.0invalid')
|
||||||
|
).toThrow(
|
||||||
"The '1.0.0invalid' doesn't satisfy semantic versioning specification"
|
"The '1.0.0invalid' doesn't satisfy semantic versioning specification"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("throw when a tag contains an valid unstable semantic version", () => {
|
it('throw when a tag contains a valid unstable semantic version', () => {
|
||||||
expect(() => versionUtils.validateSemverVersionFromTag("v1.0.0-beta.1")).toThrowError(
|
expect(() =>
|
||||||
"It is not allowed to specify pre-release version to update the major tag"
|
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", () => {
|
it('throw when a tag contains a valid unstable semantic version with build metadata', () => {
|
||||||
expect(() => versionUtils.validateSemverVersionFromTag("v1.0.0-beta.1+20130313144700")).toThrowError(
|
expect(() =>
|
||||||
"It is not allowed to specify pre-release version to update the major tag"
|
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('getMajorTagFromFullTag', () => {
|
||||||
describe("get a valid major tag from full tag", () => {
|
describe('get a valid major tag from full tag', () => {
|
||||||
it.each([
|
it.each([
|
||||||
["1.0.0", "1"],
|
['1.0.0', '1'],
|
||||||
["v1.0.0", "v1"],
|
['v1.0.0', 'v1'],
|
||||||
["v1.0.0-beta.1", "v1"],
|
['v1.0.0-beta.1', 'v1'],
|
||||||
["v1.0.0+20130313144700", "v1"],
|
['v1.0.0+20130313144700', 'v1']
|
||||||
] as [string, string][])("%s -> %s", (sourceTag: string, expectedMajorTag: string) => {
|
] as [string, string][])(
|
||||||
const resultantMajorTag = versionUtils.getMajorTagFromFullTag(sourceTag);
|
'%s -> %s',
|
||||||
|
(sourceTag: string, expectedMajorTag: string) => {
|
||||||
|
const resultantMajorTag =
|
||||||
|
versionUtils.getMajorTagFromFullTag(sourceTag);
|
||||||
expect(resultantMajorTag).toBe(expectedMajorTag);
|
expect(resultantMajorTag).toBe(expectedMajorTag);
|
||||||
});
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue