test-progress-tracker 2.0.6 → 2.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -23
- package/cjs/_virtual/_rolldown/runtime.js +23 -0
- package/cjs/append.d.ts +6 -2
- package/cjs/append.js +30 -38
- package/cjs/append.js.map +1 -1
- package/cjs/compress.js +6 -6
- package/cjs/compress.js.map +1 -1
- package/cjs/constants.js +7 -5
- package/cjs/constants.js.map +1 -1
- package/cjs/index.d.ts +6 -5
- package/cjs/index.js +9 -18
- package/cjs/init.d.ts +6 -2
- package/cjs/init.js +16 -16
- package/cjs/init.js.map +1 -1
- package/cjs/interface.d.ts +32 -29
- package/cjs/load.d.ts +6 -2
- package/cjs/load.js +37 -49
- package/cjs/load.js.map +1 -1
- package/cjs/minify.js +87 -71
- package/cjs/minify.js.map +1 -1
- package/cjs/monitor.d.ts +26 -23
- package/cjs/monitor.js +42 -42
- package/cjs/monitor.js.map +1 -1
- package/cjs/store.js +12 -9
- package/cjs/store.js.map +1 -1
- package/package.json +46 -57
- package/ts/append.ts +19 -19
- package/ts/compress.ts +3 -3
- package/ts/init.ts +6 -6
- package/ts/interface.ts +24 -24
- package/ts/load.ts +28 -29
- package/ts/minify.ts +84 -73
- package/ts/monitor.ts +58 -46
- package/ts/store.ts +7 -7
- package/ts/testResultsExamples.ts +90 -90
- package/cjs/compress.d.ts +0 -3
- package/cjs/constants.d.ts +0 -2
- package/cjs/index.js.map +0 -1
- package/cjs/interface.js +0 -3
- package/cjs/interface.js.map +0 -1
- package/cjs/minify.d.ts +0 -41
- package/cjs/store.d.ts +0 -3
- package/ts/append.spec.ts +0 -36
- package/ts/init.spec.ts +0 -30
- package/ts/load.spec.ts +0 -9
- package/ts/minify.spec.ts +0 -44
- package/ts/monitor.spec.ts +0 -171
package/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAwB;AACxB,yCAAsB;AACtB,8CAA2B;AAC3B,yCAAsB;AACtB,4CAAyB"}
|
package/cjs/interface.js
DELETED
package/cjs/interface.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../ts/interface.ts"],"names":[],"mappings":""}
|
package/cjs/minify.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { TestResults } from './interface';
|
|
2
|
-
export interface MinifiedTestResult {
|
|
3
|
-
d: number;
|
|
4
|
-
fl?: boolean;
|
|
5
|
-
f: number;
|
|
6
|
-
fs: number;
|
|
7
|
-
p: number;
|
|
8
|
-
ps: number;
|
|
9
|
-
t: number;
|
|
10
|
-
ts: number;
|
|
11
|
-
s: number;
|
|
12
|
-
c?: MinifiedCoverageSummary;
|
|
13
|
-
}
|
|
14
|
-
export interface MinifiedCoverageSummary {
|
|
15
|
-
b: {
|
|
16
|
-
c: number;
|
|
17
|
-
s: number;
|
|
18
|
-
t: number;
|
|
19
|
-
p?: number;
|
|
20
|
-
};
|
|
21
|
-
f: {
|
|
22
|
-
c: number;
|
|
23
|
-
s: number;
|
|
24
|
-
t: number;
|
|
25
|
-
p?: number;
|
|
26
|
-
};
|
|
27
|
-
l: {
|
|
28
|
-
c: number;
|
|
29
|
-
s: number;
|
|
30
|
-
t: number;
|
|
31
|
-
p?: number;
|
|
32
|
-
};
|
|
33
|
-
s: {
|
|
34
|
-
c: number;
|
|
35
|
-
s: number;
|
|
36
|
-
t: number;
|
|
37
|
-
p?: number;
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
export declare function minify(testResults: TestResults): MinifiedTestResult;
|
|
41
|
-
export declare function unminify(minified: MinifiedTestResult): TestResults;
|
package/cjs/store.d.ts
DELETED
package/ts/append.spec.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import rimraf from 'rimraf'
|
|
2
|
-
import { append, init, load } from '.'
|
|
3
|
-
import { noCoverage } from './testResultsExamples'
|
|
4
|
-
|
|
5
|
-
test('create new file', async () => {
|
|
6
|
-
const rootDir = 'fixtures/new_file'
|
|
7
|
-
|
|
8
|
-
try {
|
|
9
|
-
init({ rootDir })
|
|
10
|
-
await append(undefined, noCoverage)
|
|
11
|
-
|
|
12
|
-
const entries = await load(undefined)
|
|
13
|
-
expect(entries.length).toBe(1)
|
|
14
|
-
}
|
|
15
|
-
finally {
|
|
16
|
-
init()
|
|
17
|
-
rimraf.sync(rootDir)
|
|
18
|
-
}
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
test('append to file', async () => {
|
|
22
|
-
const rootDir = 'fixtures/append_file'
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
init({ rootDir })
|
|
26
|
-
await append(undefined, noCoverage)
|
|
27
|
-
await append(undefined, noCoverage)
|
|
28
|
-
|
|
29
|
-
const entries = await load(undefined)
|
|
30
|
-
expect(entries.length).toBe(2)
|
|
31
|
-
}
|
|
32
|
-
finally {
|
|
33
|
-
init()
|
|
34
|
-
rimraf.sync(rootDir)
|
|
35
|
-
}
|
|
36
|
-
})
|
package/ts/init.spec.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import t from 'assert'
|
|
2
|
-
import fs from 'fs'
|
|
3
|
-
import rimraf from 'rimraf'
|
|
4
|
-
import { init } from '.'
|
|
5
|
-
import { PROGRESS_FOLDER } from './constants'
|
|
6
|
-
|
|
7
|
-
test('create folder if not exist', () => {
|
|
8
|
-
try {
|
|
9
|
-
t.strictEqual(fs.existsSync('fixtures/init/create-if-not-exist'), false)
|
|
10
|
-
init({ rootDir: 'fixtures/init/create-if-not-exist' })
|
|
11
|
-
}
|
|
12
|
-
finally {
|
|
13
|
-
rimraf.sync('fixtures/init/create-if-not-exist')
|
|
14
|
-
}
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
test('ok if folder already existed', () => {
|
|
18
|
-
try {
|
|
19
|
-
fs.mkdirSync('fixtures/init/exist')
|
|
20
|
-
init({ rootDir: 'fixtures/init/exist' })
|
|
21
|
-
}
|
|
22
|
-
finally {
|
|
23
|
-
rimraf.sync('fixtures/init/exist')
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
test('by default init will create .progress', () => {
|
|
28
|
-
init()
|
|
29
|
-
t.strictEqual(fs.existsSync(PROGRESS_FOLDER), true)
|
|
30
|
-
})
|
package/ts/load.spec.ts
DELETED
package/ts/minify.spec.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import t from 'assert'
|
|
2
|
-
import { minify, unminify } from './minify'
|
|
3
|
-
import {
|
|
4
|
-
noCoverage,
|
|
5
|
-
noCoverageMinified,
|
|
6
|
-
coverageNoPercentage,
|
|
7
|
-
coverageNoPercentageMinified,
|
|
8
|
-
coverageWithPercentage,
|
|
9
|
-
coverageWithPercentageMinified,
|
|
10
|
-
filtered,
|
|
11
|
-
filteredMinified
|
|
12
|
-
} from './testResultsExamples'
|
|
13
|
-
|
|
14
|
-
test('no coverage', () => {
|
|
15
|
-
const minified = minify(noCoverage)
|
|
16
|
-
t.deepStrictEqual(minified, noCoverageMinified)
|
|
17
|
-
|
|
18
|
-
const unminified = unminify(minified)
|
|
19
|
-
t.deepStrictEqual(unminified, noCoverage)
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
test('filtered', () => {
|
|
23
|
-
const minified = minify(filtered)
|
|
24
|
-
t.deepStrictEqual(minified, filteredMinified)
|
|
25
|
-
|
|
26
|
-
const unminified = unminify(minified)
|
|
27
|
-
t.deepStrictEqual(unminified, filtered)
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
test('with coverage no percentage', () => {
|
|
31
|
-
const minified = minify(coverageNoPercentage)
|
|
32
|
-
t.deepStrictEqual(minified, coverageNoPercentageMinified)
|
|
33
|
-
|
|
34
|
-
const unminified = unminify(minified)
|
|
35
|
-
t.deepStrictEqual(unminified, coverageNoPercentage)
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
test('with coverage with percentage', () => {
|
|
39
|
-
const minified = minify(coverageWithPercentage)
|
|
40
|
-
t.deepStrictEqual(minified, coverageWithPercentageMinified)
|
|
41
|
-
|
|
42
|
-
const unminified = unminify(minified)
|
|
43
|
-
t.deepStrictEqual(unminified, coverageWithPercentage)
|
|
44
|
-
})
|
package/ts/monitor.spec.ts
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import t from 'assert'
|
|
2
|
-
import { AssertOrder } from 'assertron'
|
|
3
|
-
import delay from 'delay'
|
|
4
|
-
import fs from 'fs'
|
|
5
|
-
import path from 'path'
|
|
6
|
-
import rimraf from 'rimraf'
|
|
7
|
-
import { append, init, monitor, MonitorSubscription, TestResults } from '.'
|
|
8
|
-
import { PROGRESS_FOLDER, TEST_RESULT_FILENAME } from './constants'
|
|
9
|
-
import { store } from './store'
|
|
10
|
-
import { filtered, noCoverage } from './testResultsExamples'
|
|
11
|
-
|
|
12
|
-
test('callback invoked with last save entry initially', async () => {
|
|
13
|
-
const rootDir = 'fixtures/monitor/monitor-first'
|
|
14
|
-
let sub: MonitorSubscription | undefined
|
|
15
|
-
try {
|
|
16
|
-
init({ rootDir })
|
|
17
|
-
await append({ rootDir }, filtered)
|
|
18
|
-
await append({ rootDir }, noCoverage)
|
|
19
|
-
|
|
20
|
-
const actual = await new Promise(a => {
|
|
21
|
-
sub = monitor({ rootDir, awaitWriteFinish: { pollInterval: 10, stabilityThreshold: 50 } }, (_, testResults) => a(testResults))
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
t.deepStrictEqual(actual, noCoverage)
|
|
26
|
-
}
|
|
27
|
-
finally {
|
|
28
|
-
if (sub) await sub.close()
|
|
29
|
-
init()
|
|
30
|
-
// chokidar seems to have lock issue in Windows
|
|
31
|
-
await delay(100)
|
|
32
|
-
rimraf.sync(rootDir, {})
|
|
33
|
-
}
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
test('extra empty line in the file is ignored', async () => {
|
|
37
|
-
const rootDir = 'fixtures/monitor/monitor-extra-empty-line'
|
|
38
|
-
let sub: MonitorSubscription | undefined
|
|
39
|
-
try {
|
|
40
|
-
init({ rootDir })
|
|
41
|
-
await append({ rootDir }, noCoverage)
|
|
42
|
-
const filepath = path.join(rootDir, PROGRESS_FOLDER, TEST_RESULT_FILENAME)
|
|
43
|
-
fs.appendFileSync(filepath, '\n')
|
|
44
|
-
|
|
45
|
-
const actual = await new Promise(a => {
|
|
46
|
-
sub = monitor({ rootDir, awaitWriteFinish: { pollInterval: 10, stabilityThreshold: 50 } }, (_, testResults) => a(testResults))
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
t.deepStrictEqual(actual, noCoverage)
|
|
51
|
-
}
|
|
52
|
-
finally {
|
|
53
|
-
if (sub) await sub.close()
|
|
54
|
-
init()
|
|
55
|
-
// chokidar seems to have lock issue in Windows
|
|
56
|
-
await delay(100)
|
|
57
|
-
rimraf.sync(rootDir)
|
|
58
|
-
}
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
test('callback not invoked when root directory not exist', async () => {
|
|
62
|
-
let sub: MonitorSubscription | undefined
|
|
63
|
-
try {
|
|
64
|
-
store.value.rootDir = 'fixtures/monitor/not-exist'
|
|
65
|
-
sub = monitor(undefined, () => { throw new Error('should not call') })
|
|
66
|
-
}
|
|
67
|
-
finally {
|
|
68
|
-
if (sub) await sub.close()
|
|
69
|
-
}
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
test('callback not invoked when result file not exist', async () => {
|
|
73
|
-
const rootDir = 'fixtures/monitor/monitor-no-file'
|
|
74
|
-
let sub: MonitorSubscription | undefined
|
|
75
|
-
try {
|
|
76
|
-
init({ rootDir })
|
|
77
|
-
sub = monitor({ rootDir }, () => { throw new Error('should not call') })
|
|
78
|
-
}
|
|
79
|
-
finally {
|
|
80
|
-
if (sub) await sub.close()
|
|
81
|
-
init()
|
|
82
|
-
// chokidar seems to have lock issue in Windows
|
|
83
|
-
await delay(100)
|
|
84
|
-
rimraf.sync(rootDir)
|
|
85
|
-
}
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
test('delete result file should not trigger', async () => {
|
|
89
|
-
const rootDir = 'fixtures/monitor/monitor-delete'
|
|
90
|
-
|
|
91
|
-
let sub: MonitorSubscription | undefined
|
|
92
|
-
try {
|
|
93
|
-
init({ rootDir })
|
|
94
|
-
await append({ rootDir }, noCoverage)
|
|
95
|
-
|
|
96
|
-
const o = new AssertOrder()
|
|
97
|
-
sub = monitor({ rootDir, awaitWriteFinish: { pollInterval: 10, stabilityThreshold: 50 } }, () => o.once(1))
|
|
98
|
-
const filePath = path.join(rootDir, TEST_RESULT_FILENAME)
|
|
99
|
-
rimraf.sync(filePath)
|
|
100
|
-
}
|
|
101
|
-
finally {
|
|
102
|
-
if (sub) await sub.close()
|
|
103
|
-
init()
|
|
104
|
-
// chokidar seems to have lock issue in Windows
|
|
105
|
-
await delay(100)
|
|
106
|
-
rimraf.sync(rootDir)
|
|
107
|
-
}
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
test('trigger on change', async () => {
|
|
111
|
-
const rootDir = 'fixtures/monitor/monitor-change'
|
|
112
|
-
let sub: MonitorSubscription | undefined
|
|
113
|
-
try {
|
|
114
|
-
init({ rootDir })
|
|
115
|
-
await append({ rootDir }, noCoverage)
|
|
116
|
-
const o = new AssertOrder(2)
|
|
117
|
-
sub = monitor({ rootDir, awaitWriteFinish: { pollInterval: 10, stabilityThreshold: 50 } }, () => o.any([1, 2]))
|
|
118
|
-
await delay(10)
|
|
119
|
-
await append({ rootDir }, noCoverage)
|
|
120
|
-
await delay(1000)
|
|
121
|
-
o.end()
|
|
122
|
-
}
|
|
123
|
-
finally {
|
|
124
|
-
if (sub) await sub.close()
|
|
125
|
-
init()
|
|
126
|
-
// chokidar seems to have lock issue in Windows
|
|
127
|
-
await delay(100)
|
|
128
|
-
rimraf.sync(rootDir)
|
|
129
|
-
}
|
|
130
|
-
})
|
|
131
|
-
|
|
132
|
-
test('trigger on new file', async () => {
|
|
133
|
-
const rootDir = 'fixtures/monitor/monitor-new'
|
|
134
|
-
let sub: MonitorSubscription | undefined
|
|
135
|
-
try {
|
|
136
|
-
init({ rootDir })
|
|
137
|
-
|
|
138
|
-
let accept: (v?: TestResults) => void
|
|
139
|
-
const p = new Promise<TestResults | undefined>(a => accept = a)
|
|
140
|
-
sub = monitor(
|
|
141
|
-
{ rootDir, awaitWriteFinish: { pollInterval: 10, stabilityThreshold: 50 } },
|
|
142
|
-
(_, testResults) => accept(testResults)
|
|
143
|
-
)
|
|
144
|
-
// Add a small delay because in circleCI it seems like chokidar can't pick up the next append (new file).
|
|
145
|
-
await delay(10)
|
|
146
|
-
await append({ rootDir }, noCoverage)
|
|
147
|
-
const actual = await p
|
|
148
|
-
t.deepStrictEqual(actual, noCoverage)
|
|
149
|
-
}
|
|
150
|
-
finally {
|
|
151
|
-
if (sub) await sub.close()
|
|
152
|
-
init()
|
|
153
|
-
// chokidar seems to have lock issue in Windows
|
|
154
|
-
await delay(100)
|
|
155
|
-
rimraf.sync(rootDir)
|
|
156
|
-
}
|
|
157
|
-
})
|
|
158
|
-
|
|
159
|
-
test('file already exists will call once', async () => {
|
|
160
|
-
const rootDir = 'fixtures/monitor/exist'
|
|
161
|
-
let sub: MonitorSubscription | undefined
|
|
162
|
-
try {
|
|
163
|
-
let count = 0
|
|
164
|
-
sub = monitor({ rootDir, awaitWriteFinish: { pollInterval: 10, stabilityThreshold: 50 } }, () => count++)
|
|
165
|
-
await delay(10)
|
|
166
|
-
t.strictEqual(count, 1)
|
|
167
|
-
}
|
|
168
|
-
finally {
|
|
169
|
-
if (sub) await sub.close()
|
|
170
|
-
}
|
|
171
|
-
})
|