armslave.yy ebc78e8788 refactor: code-generator code style
1. rax 出码合并
2. code style 修复

注:合并的代码中带了 datasource 的

Link: https://code.aone.alibaba-inc.com/ali-lowcode/ali-lowcode-engine/codereview/3717159

* Merge branch 'feat/rax-code-generator' of gitlab.alibaba-inc.com:ali-lowcode/ali-lowcode-engine into feat/rax-code-generator

# Conflicts:
#	packages/code-generator/src/generator/ProjectBuilder.ts
#	packages/code-generator/src/parser/SchemaParser.ts
#	packages/code-generator/src/plugins/component/rax/jsx.ts
#	packages/code-generator/src/plugins/project/constants.ts
#	packages/code-generator/src/plugins/project/framework/rax/plugins/packageJSON.ts
#	packages/code-generator/src/plugins/project/i18n.ts
#	packages/code-generator/src/publisher/disk/index.ts
#	packages/code-generator/src/publisher/disk/utils.ts
#	packages/code-generator/src/types/core.ts
#	packages/code-generator/src/types/schema.ts
#	packages/code-generator/src/utils/compositeType.ts
#	packages/code-generator/src/utils/nodeToJSX.ts

* refactor: code-generator

* Merge remote-tracking branch 'origin/refactor/code-style' into refactor/code-style-code-generator

# Conflicts:
#	.vscode/launch.json
2020-09-12 17:46:44 +08:00

51 lines
1.9 KiB
TypeScript

import test from 'ava';
import type { ExecutionContext, Macro } from 'ava';
import { calcCompatibleVersion } from '../../src/utils/version';
const NO_COMPATIBLE_VERSIONS = /no compatible versions/;
const testCalcCompatibleVersion: Macro<any[]> = (
t: ExecutionContext<Record<string, unknown>>,
input: [string | null | undefined, string | null | undefined],
expected: string,
error?: { message: RegExp },
) => {
if (!error) {
t.is(calcCompatibleVersion(input[0], input[1]), expected);
t.is(calcCompatibleVersion(input[1], input[0]), expected); // 应该满足交换律
} else {
t.throws(() => {
calcCompatibleVersion(input[0], input[1]);
}, error.message);
t.throws(() => {
calcCompatibleVersion(input[1], input[0]); // 应该满足交换律
}, error.message);
}
};
testCalcCompatibleVersion.title = (providedTitle: string | undefined, ...args: any[]): string => {
const [input, expected] = args;
return `calc compatible versions "${input[0]}" & "${input[1]}" should be "${expected}"`;
};
test(testCalcCompatibleVersion, ['*', '*'], '*');
test(testCalcCompatibleVersion, ['1.0.0', '1.0.0'], '1.0.0');
test(testCalcCompatibleVersion, ['^1.0.0', '^1.0.0'], '^1.0.0');
test(testCalcCompatibleVersion, ['*', undefined], '*');
test(testCalcCompatibleVersion, [undefined, undefined], '*');
test(testCalcCompatibleVersion, ['^1.0.0', undefined], '^1.0.0');
test(testCalcCompatibleVersion, ['*', '^1.0.0'], '^1.0.0');
test(testCalcCompatibleVersion, ['^1.0.0', '^1.0.2'], '^1.0.2');
test(testCalcCompatibleVersion, ['^1.2.0', '^1.1.2'], '^1.2.0');
test(testCalcCompatibleVersion, ['^1.0.0', '1.0.2'], '1.0.2');
test(testCalcCompatibleVersion, ['^0.2.0', '^0.1.2'], 'error', { message: NO_COMPATIBLE_VERSIONS });
test(testCalcCompatibleVersion, ['>0.2.0', '^0.1.2'], 'error', { message: NO_COMPATIBLE_VERSIONS });
test(testCalcCompatibleVersion, ['1.0.1', '1.0.2'], 'error', { message: NO_COMPATIBLE_VERSIONS });