Skip to content

Commit fc3d87f

Browse files
committed
chore: add ci
1 parent 7d9908b commit fc3d87f

File tree

11 files changed

+964
-0
lines changed

11 files changed

+964
-0
lines changed

.github/workflows/main.yml

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [master]
6+
pull_request:
7+
branches: [master]
8+
9+
jobs:
10+
setup:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: checkout
14+
uses: actions/checkout@master
15+
16+
- uses: actions/setup-node@v1
17+
with:
18+
node-version: '12'
19+
20+
- name: cache package-lock.json
21+
uses: actions/cache@v2
22+
with:
23+
path: package-temp-dir
24+
key: lock-${{ github.sha }}
25+
26+
- name: create package-lock.json
27+
run: npm i --package-lock-only
28+
29+
- name: hack for singe file
30+
run: |
31+
if [ ! -d "package-temp-dir" ]; then
32+
mkdir package-temp-dir
33+
fi
34+
cp package-lock.json package-temp-dir
35+
36+
- name: cache node_modules
37+
id: node_modules_cache_id
38+
uses: actions/cache@v2
39+
with:
40+
path: node_modules
41+
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
42+
43+
- name: install
44+
if: steps.node_modules_cache_id.outputs.cache-hit != 'true'
45+
run: npm ci
46+
47+
lint:
48+
runs-on: ubuntu-latest
49+
steps:
50+
- name: checkout
51+
uses: actions/checkout@master
52+
53+
- name: restore cache from package-lock.json
54+
uses: actions/cache@v2
55+
with:
56+
path: package-temp-dir
57+
key: lock-${{ github.sha }}
58+
59+
- name: restore cache from node_modules
60+
uses: actions/cache@v2
61+
with:
62+
path: node_modules
63+
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
64+
65+
- name: lint
66+
run: npm run lint
67+
68+
- name: ts check
69+
run: npm run lint:tsc
70+
71+
needs: setup
72+
73+
compile:
74+
runs-on: ubuntu-latest
75+
steps:
76+
- name: checkout
77+
uses: actions/checkout@master
78+
79+
- name: restore cache from package-lock.json
80+
uses: actions/cache@v2
81+
with:
82+
path: package-temp-dir
83+
key: lock-${{ github.sha }}
84+
85+
- name: restore cache from node_modules
86+
uses: actions/cache@v2
87+
with:
88+
path: node_modules
89+
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
90+
91+
- name: compile
92+
run: npm run compile
93+
94+
needs: setup
95+
96+
coverage:
97+
runs-on: ubuntu-latest
98+
steps:
99+
- name: checkout
100+
uses: actions/checkout@master
101+
102+
- name: restore cache from package-lock.json
103+
uses: actions/cache@v2
104+
with:
105+
path: package-temp-dir
106+
key: lock-${{ github.sha }}
107+
108+
- name: restore cache from node_modules
109+
uses: actions/cache@v2
110+
with:
111+
path: node_modules
112+
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
113+
114+
- name: coverage
115+
run: npm test -- --coverage && bash <(curl -s https://codecov.io/bash)
116+
117+
needs: setup

es/index.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2+
import { runCLI } from 'jest';
3+
var ALIAS = {
4+
t: 'testNamePattern',
5+
w: 'maxWorkers',
6+
u: 'updateSnapshot'
7+
};
8+
export default function () {
9+
var originOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10+
11+
var opts = _objectSpread({}, originOpts);
12+
13+
var cwd = process.cwd(); // Fill jest alias
14+
15+
Object.keys(ALIAS).forEach(function (key) {
16+
if (opts[key]) {
17+
opts[ALIAS[key]] = opts[key];
18+
delete opts[key];
19+
}
20+
});
21+
var config = {
22+
rootDir: process.cwd(),
23+
testEnvironment: 'jsdom',
24+
setupFiles: [require.resolve("./setup.js")],
25+
setupFilesAfterEnv: [require.resolve("./setupAfterEnv.js")],
26+
transform: {
27+
'\\.(t|j)sx?$': require.resolve("./transformers/jsTransformer"),
28+
'\\.svg$': require.resolve("./transformers/fileTransformer")
29+
},
30+
// transformIgnorePatterns: [
31+
// // 加 [^/]*? 是为了兼容 tnpm 的目录结构
32+
// // 比如:[email protected]@umi-test
33+
// `node_modules/(?!([^/]*?umi|[^/]*?umi-test|[^/]*?enzyme-adapter-react-16|${transformInclude.join(
34+
// '|',
35+
// )})/)`,
36+
// ],
37+
testMatch: ['**/?*.(spec|test|e2e).(j|t)s?(x)'],
38+
moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'],
39+
// moduleNameMapper: {
40+
// '\\.(css|less|sass|scss)$': require.resolve('identity-obj-proxy'),
41+
// '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
42+
// require.resolve('./fileMock.js'),
43+
// ...(moduleNameMapper || {}),
44+
// ...(userModuleNameMapper || {}),
45+
// },
46+
testPathIgnorePatterns: ['/node_modules/'] // 用于设置 jest worker 启动的个数
47+
48+
};
49+
return runCLI(_objectSpread({
50+
config: JSON.stringify(config)
51+
}, opts), [cwd]);
52+
}

es/setup.js

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
import "core-js/modules/es.symbol.js";
2+
import "core-js/modules/es.symbol.description.js";
3+
import "core-js/modules/es.symbol.async-iterator.js";
4+
import "core-js/modules/es.symbol.has-instance.js";
5+
import "core-js/modules/es.symbol.is-concat-spreadable.js";
6+
import "core-js/modules/es.symbol.iterator.js";
7+
import "core-js/modules/es.symbol.match.js";
8+
import "core-js/modules/es.symbol.match-all.js";
9+
import "core-js/modules/es.symbol.replace.js";
10+
import "core-js/modules/es.symbol.search.js";
11+
import "core-js/modules/es.symbol.species.js";
12+
import "core-js/modules/es.symbol.split.js";
13+
import "core-js/modules/es.symbol.to-primitive.js";
14+
import "core-js/modules/es.symbol.to-string-tag.js";
15+
import "core-js/modules/es.symbol.unscopables.js";
16+
import "core-js/modules/es.error.cause.js";
17+
import "core-js/modules/es.aggregate-error.js";
18+
import "core-js/modules/es.aggregate-error.cause.js";
19+
import "core-js/modules/es.array.at.js";
20+
import "core-js/modules/es.array.concat.js";
21+
import "core-js/modules/es.array.copy-within.js";
22+
import "core-js/modules/es.array.fill.js";
23+
import "core-js/modules/es.array.filter.js";
24+
import "core-js/modules/es.array.find.js";
25+
import "core-js/modules/es.array.find-index.js";
26+
import "core-js/modules/es.array.flat.js";
27+
import "core-js/modules/es.array.flat-map.js";
28+
import "core-js/modules/es.array.from.js";
29+
import "core-js/modules/es.array.includes.js";
30+
import "core-js/modules/es.array.iterator.js";
31+
import "core-js/modules/es.array.join.js";
32+
import "core-js/modules/es.array.map.js";
33+
import "core-js/modules/es.array.of.js";
34+
import "core-js/modules/es.array.slice.js";
35+
import "core-js/modules/es.array.sort.js";
36+
import "core-js/modules/es.array.species.js";
37+
import "core-js/modules/es.array.splice.js";
38+
import "core-js/modules/es.array.unscopables.flat.js";
39+
import "core-js/modules/es.array.unscopables.flat-map.js";
40+
import "core-js/modules/es.array-buffer.constructor.js";
41+
import "core-js/modules/es.date.to-primitive.js";
42+
import "core-js/modules/es.function.has-instance.js";
43+
import "core-js/modules/es.function.name.js";
44+
import "core-js/modules/es.global-this.js";
45+
import "core-js/modules/es.json.stringify.js";
46+
import "core-js/modules/es.json.to-string-tag.js";
47+
import "core-js/modules/es.map.js";
48+
import "core-js/modules/es.math.acosh.js";
49+
import "core-js/modules/es.math.asinh.js";
50+
import "core-js/modules/es.math.atanh.js";
51+
import "core-js/modules/es.math.cbrt.js";
52+
import "core-js/modules/es.math.clz32.js";
53+
import "core-js/modules/es.math.cosh.js";
54+
import "core-js/modules/es.math.expm1.js";
55+
import "core-js/modules/es.math.fround.js";
56+
import "core-js/modules/es.math.hypot.js";
57+
import "core-js/modules/es.math.imul.js";
58+
import "core-js/modules/es.math.log10.js";
59+
import "core-js/modules/es.math.log1p.js";
60+
import "core-js/modules/es.math.log2.js";
61+
import "core-js/modules/es.math.sign.js";
62+
import "core-js/modules/es.math.sinh.js";
63+
import "core-js/modules/es.math.tanh.js";
64+
import "core-js/modules/es.math.to-string-tag.js";
65+
import "core-js/modules/es.math.trunc.js";
66+
import "core-js/modules/es.number.constructor.js";
67+
import "core-js/modules/es.number.epsilon.js";
68+
import "core-js/modules/es.number.is-finite.js";
69+
import "core-js/modules/es.number.is-integer.js";
70+
import "core-js/modules/es.number.is-nan.js";
71+
import "core-js/modules/es.number.is-safe-integer.js";
72+
import "core-js/modules/es.number.max-safe-integer.js";
73+
import "core-js/modules/es.number.min-safe-integer.js";
74+
import "core-js/modules/es.number.parse-float.js";
75+
import "core-js/modules/es.number.parse-int.js";
76+
import "core-js/modules/es.number.to-exponential.js";
77+
import "core-js/modules/es.number.to-fixed.js";
78+
import "core-js/modules/es.object.assign.js";
79+
import "core-js/modules/es.object.define-getter.js";
80+
import "core-js/modules/es.object.define-setter.js";
81+
import "core-js/modules/es.object.entries.js";
82+
import "core-js/modules/es.object.freeze.js";
83+
import "core-js/modules/es.object.from-entries.js";
84+
import "core-js/modules/es.object.get-own-property-descriptor.js";
85+
import "core-js/modules/es.object.get-own-property-descriptors.js";
86+
import "core-js/modules/es.object.get-own-property-names.js";
87+
import "core-js/modules/es.object.get-prototype-of.js";
88+
import "core-js/modules/es.object.has-own.js";
89+
import "core-js/modules/es.object.is.js";
90+
import "core-js/modules/es.object.is-extensible.js";
91+
import "core-js/modules/es.object.is-frozen.js";
92+
import "core-js/modules/es.object.is-sealed.js";
93+
import "core-js/modules/es.object.keys.js";
94+
import "core-js/modules/es.object.lookup-getter.js";
95+
import "core-js/modules/es.object.lookup-setter.js";
96+
import "core-js/modules/es.object.prevent-extensions.js";
97+
import "core-js/modules/es.object.seal.js";
98+
import "core-js/modules/es.object.to-string.js";
99+
import "core-js/modules/es.object.values.js";
100+
import "core-js/modules/es.promise.js";
101+
import "core-js/modules/es.promise.all-settled.js";
102+
import "core-js/modules/es.promise.any.js";
103+
import "core-js/modules/es.promise.finally.js";
104+
import "core-js/modules/es.reflect.apply.js";
105+
import "core-js/modules/es.reflect.construct.js";
106+
import "core-js/modules/es.reflect.define-property.js";
107+
import "core-js/modules/es.reflect.delete-property.js";
108+
import "core-js/modules/es.reflect.get.js";
109+
import "core-js/modules/es.reflect.get-own-property-descriptor.js";
110+
import "core-js/modules/es.reflect.get-prototype-of.js";
111+
import "core-js/modules/es.reflect.has.js";
112+
import "core-js/modules/es.reflect.is-extensible.js";
113+
import "core-js/modules/es.reflect.own-keys.js";
114+
import "core-js/modules/es.reflect.prevent-extensions.js";
115+
import "core-js/modules/es.reflect.set.js";
116+
import "core-js/modules/es.reflect.set-prototype-of.js";
117+
import "core-js/modules/es.reflect.to-string-tag.js";
118+
import "core-js/modules/es.regexp.constructor.js";
119+
import "core-js/modules/es.regexp.dot-all.js";
120+
import "core-js/modules/es.regexp.exec.js";
121+
import "core-js/modules/es.regexp.flags.js";
122+
import "core-js/modules/es.regexp.sticky.js";
123+
import "core-js/modules/es.regexp.test.js";
124+
import "core-js/modules/es.regexp.to-string.js";
125+
import "core-js/modules/es.set.js";
126+
import "core-js/modules/es.string.at-alternative.js";
127+
import "core-js/modules/es.string.code-point-at.js";
128+
import "core-js/modules/es.string.ends-with.js";
129+
import "core-js/modules/es.string.from-code-point.js";
130+
import "core-js/modules/es.string.includes.js";
131+
import "core-js/modules/es.string.iterator.js";
132+
import "core-js/modules/es.string.match.js";
133+
import "core-js/modules/es.string.match-all.js";
134+
import "core-js/modules/es.string.pad-end.js";
135+
import "core-js/modules/es.string.pad-start.js";
136+
import "core-js/modules/es.string.raw.js";
137+
import "core-js/modules/es.string.repeat.js";
138+
import "core-js/modules/es.string.replace.js";
139+
import "core-js/modules/es.string.replace-all.js";
140+
import "core-js/modules/es.string.search.js";
141+
import "core-js/modules/es.string.split.js";
142+
import "core-js/modules/es.string.starts-with.js";
143+
import "core-js/modules/es.string.trim.js";
144+
import "core-js/modules/es.string.trim-end.js";
145+
import "core-js/modules/es.string.trim-start.js";
146+
import "core-js/modules/es.string.anchor.js";
147+
import "core-js/modules/es.string.big.js";
148+
import "core-js/modules/es.string.blink.js";
149+
import "core-js/modules/es.string.bold.js";
150+
import "core-js/modules/es.string.fixed.js";
151+
import "core-js/modules/es.string.fontcolor.js";
152+
import "core-js/modules/es.string.fontsize.js";
153+
import "core-js/modules/es.string.italics.js";
154+
import "core-js/modules/es.string.link.js";
155+
import "core-js/modules/es.string.small.js";
156+
import "core-js/modules/es.string.strike.js";
157+
import "core-js/modules/es.string.sub.js";
158+
import "core-js/modules/es.string.sup.js";
159+
import "core-js/modules/es.typed-array.float32-array.js";
160+
import "core-js/modules/es.typed-array.float64-array.js";
161+
import "core-js/modules/es.typed-array.int8-array.js";
162+
import "core-js/modules/es.typed-array.int16-array.js";
163+
import "core-js/modules/es.typed-array.int32-array.js";
164+
import "core-js/modules/es.typed-array.uint8-array.js";
165+
import "core-js/modules/es.typed-array.uint8-clamped-array.js";
166+
import "core-js/modules/es.typed-array.uint16-array.js";
167+
import "core-js/modules/es.typed-array.uint32-array.js";
168+
import "core-js/modules/es.typed-array.at.js";
169+
import "core-js/modules/es.typed-array.copy-within.js";
170+
import "core-js/modules/es.typed-array.every.js";
171+
import "core-js/modules/es.typed-array.fill.js";
172+
import "core-js/modules/es.typed-array.filter.js";
173+
import "core-js/modules/es.typed-array.find.js";
174+
import "core-js/modules/es.typed-array.find-index.js";
175+
import "core-js/modules/es.typed-array.for-each.js";
176+
import "core-js/modules/es.typed-array.from.js";
177+
import "core-js/modules/es.typed-array.includes.js";
178+
import "core-js/modules/es.typed-array.index-of.js";
179+
import "core-js/modules/es.typed-array.iterator.js";
180+
import "core-js/modules/es.typed-array.join.js";
181+
import "core-js/modules/es.typed-array.last-index-of.js";
182+
import "core-js/modules/es.typed-array.map.js";
183+
import "core-js/modules/es.typed-array.of.js";
184+
import "core-js/modules/es.typed-array.reduce.js";
185+
import "core-js/modules/es.typed-array.reduce-right.js";
186+
import "core-js/modules/es.typed-array.reverse.js";
187+
import "core-js/modules/es.typed-array.set.js";
188+
import "core-js/modules/es.typed-array.slice.js";
189+
import "core-js/modules/es.typed-array.some.js";
190+
import "core-js/modules/es.typed-array.sort.js";
191+
import "core-js/modules/es.typed-array.subarray.js";
192+
import "core-js/modules/es.typed-array.to-locale-string.js";
193+
import "core-js/modules/es.typed-array.to-string.js";
194+
import "core-js/modules/es.weak-map.js";
195+
import "core-js/modules/es.weak-set.js";
196+
import "core-js/modules/web.atob.js";
197+
import "core-js/modules/web.btoa.js";
198+
import "core-js/modules/web.dom-collections.for-each.js";
199+
import "core-js/modules/web.dom-collections.iterator.js";
200+
import "core-js/modules/web.dom-exception.constructor.js";
201+
import "core-js/modules/web.dom-exception.stack.js";
202+
import "core-js/modules/web.dom-exception.to-string-tag.js";
203+
import "core-js/modules/web.queue-microtask.js";
204+
import "core-js/modules/web.structured-clone.js";
205+
import "core-js/modules/web.url.js";
206+
import "core-js/modules/web.url.to-json.js";
207+
import "core-js/modules/web.url-search-params.js";
208+
import 'regenerator-runtime/runtime';
209+
/* eslint-disable import/first */
210+
211+
global.requestAnimationFrame = global.requestAnimationFrame || function requestAnimationFrame(callback) {
212+
setTimeout(callback, 0);
213+
};

es/setupAfterEnv.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import '@testing-library/jest-dom';

0 commit comments

Comments
 (0)