-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.spec.js
298 lines (291 loc) · 13.1 KB
/
index.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import { execa } from 'execa';
import { describe, test, expect, beforeEach } from 'vitest';
/**
*
* @param task
*/
function getName(task) {
return encodeURIComponent(`${task.suite.name}_${task.name}`.toLowerCase());
}
beforeEach((ctx) => {
ctx.tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'test-'));
});
describe('CLI', () => {
/**
*
* @param dir
* @param type
*/
async function cliTest(dir, type) {
const { stdout } = await execa(
'npx',
[
'@d-zero/create-frontend',
...(type ? ['--type', type] : []),
'--dir',
dir,
'--no-install',
'--silent',
],
{
failed: true,
env: {
NODE_NO_WARNINGS: '1',
},
},
);
return stdout.replaceAll(path.sep, '/').split('\n');
}
test('npx', async ({ tmpDir, task }) => {
const dir = path.join(tmpDir, getName(task));
const actual = await cliTest(dir);
expect(actual).toStrictEqual([
`✔ ++ ${dir}/tsconfig.json`,
`✔ ++ ${dir}/prh.yaml`,
`✔ ++ ${dir}/package.json`,
`✔ ++ ${dir}/markuplint.config.js`,
`✔ ++ ${dir}/lint-staged.config.mjs`,
`✔ ++ ${dir}/eslint.config.js`,
`✔ ++ ${dir}/eleventy.config.mjs`,
`✔ ++ ${dir}/cspell.json`,
`✔ ++ ${dir}/README.md`,
`✔ ++ ${dir}/CHANGELOG.md`,
`✔ ++ ${dir}/.textlintrc.js`,
`✔ ++ ${dir}/.textlintignore`,
`✔ ++ ${dir}/.stylelintrc`,
`✔ ++ ${dir}/.pug-lintrc`,
`✔ ++ ${dir}/.prettierrc.mjs`,
`✔ ++ ${dir}/.postcssrc.js`,
`✔ ++ ${dir}/.npmignore`,
`✔ ++ ${dir}/.gitignore`,
`✔ ++ ${dir}/.editorconfig`,
`✔ ++ ${dir}/.clinerules`,
`✔ ++ ${dir}/__assets/htdocs/index.pug`,
`✔ ++ ${dir}/__assets/htdocs/js/script.ts`,
`✔ ++ ${dir}/__assets/htdocs/css/style.scss`,
`✔ ++ ${dir}/__assets/htdocs/css/bge_style.scss`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/index.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/302_form_complete.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/301_form_confirm.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/300_form_input.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/210_blog_index.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/200_blog_index.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/100_sub.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/000_home.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/.markuplintrc`,
`✔ ++ ${dir}/__assets/_libs/.markuplintrc`,
`✔ ++ ${dir}/__assets/_libs/style/theme/index.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/font.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/dimension.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/color.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/img.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/button.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/body.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/all.scss`,
`✔ ++ ${dir}/__assets/_libs/style/base/root.scss`,
`✔ ++ ${dir}/__assets/_libs/script/index.ts`,
`✔ ++ ${dir}/__assets/_libs/mixin/meta.pug`,
`✔ ++ ${dir}/__assets/_libs/img/bg-repeat-01.gif`,
`✔ ++ ${dir}/__assets/_libs/img/bg-arrow.svg`,
`✔ ++ ${dir}/__assets/_libs/data/data.yml`,
`✔ ++ ${dir}/__assets/_libs/data/blocks.js`,
`✔ ++ ${dir}/__assets/_libs/data/blocks.html`,
`✔ ++ ${dir}/__assets/_libs/data/bge-blocks.html`,
`✔ ++ ${dir}/__assets/_libs/data/.markuplintrc`,
`✔ ++ ${dir}/__assets/_libs/component/c-title-page.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-title-page.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-pagination.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-pagination.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-page-sub.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-page-home.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-global.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-global.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-media.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-media.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-media-list.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-header.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-header.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-footer.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-footer.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-content-main.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-content-index.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-card.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-card.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-card-list.scss`,
`✔ ++ ${dir}/__assets/_libs/component/bge-contents.scss`,
`✔ ++ ${dir}/.vscode/settings.json`,
`✔ ++ ${dir}/.vscode/extensions.json`,
`✔ ++ ${dir}/.husky/pre-commit`,
'✔ Install dependencies : skipped',
]);
});
test('npx --type burger', async ({ tmpDir, task }) => {
const dir = path.join(tmpDir, getName(task));
const actual = await cliTest(dir, 'burger');
expect(actual).toStrictEqual([
`✔ ++ ${dir}/tsconfig.json`,
`✔ ++ ${dir}/prh.yaml`,
`✔ ++ ${dir}/package.json`,
`✔ ++ ${dir}/markuplint.config.js`,
`✔ ++ ${dir}/lint-staged.config.mjs`,
`✔ ++ ${dir}/eslint.config.js`,
`✔ ++ ${dir}/eleventy.config.mjs`,
`✔ ++ ${dir}/cspell.json`,
`✔ ++ ${dir}/README.md`,
`✔ ++ ${dir}/CHANGELOG.md`,
`✔ ++ ${dir}/.textlintrc.js`,
`✔ ++ ${dir}/.textlintignore`,
`✔ ++ ${dir}/.stylelintrc`,
`✔ ++ ${dir}/.pug-lintrc`,
`✔ ++ ${dir}/.prettierrc.mjs`,
`✔ ++ ${dir}/.postcssrc.js`,
`✔ ++ ${dir}/.npmignore`,
`✔ ++ ${dir}/.gitignore`,
`✔ ++ ${dir}/.editorconfig`,
`✔ ++ ${dir}/.clinerules`,
`✔ ++ ${dir}/__assets/htdocs/index.pug`,
`✔ ++ ${dir}/__assets/htdocs/js/script.ts`,
`✔ ++ ${dir}/__assets/htdocs/css/style.scss`,
`✔ ++ ${dir}/__assets/htdocs/css/bge_style.scss`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/index.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/302_form_complete.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/301_form_confirm.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/300_form_input.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/210_blog_index.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/200_blog_index.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/100_sub.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/000_home.pug`,
`✔ ++ ${dir}/__assets/htdocs/__tmpl/.markuplintrc`,
`✔ ++ ${dir}/__assets/_libs/.markuplintrc`,
`✔ ++ ${dir}/__assets/_libs/style/theme/index.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/font.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/dimension.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/color.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/img.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/button.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/body.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/all.scss`,
`✔ ++ ${dir}/__assets/_libs/style/base/root.scss`,
`✔ ++ ${dir}/__assets/_libs/script/index.ts`,
`✔ ++ ${dir}/__assets/_libs/mixin/meta.pug`,
`✔ ++ ${dir}/__assets/_libs/img/bg-repeat-01.gif`,
`✔ ++ ${dir}/__assets/_libs/img/bg-arrow.svg`,
`✔ ++ ${dir}/__assets/_libs/data/data.yml`,
`✔ ++ ${dir}/__assets/_libs/data/blocks.js`,
`✔ ++ ${dir}/__assets/_libs/data/blocks.html`,
`✔ ++ ${dir}/__assets/_libs/data/bge-blocks.html`,
`✔ ++ ${dir}/__assets/_libs/data/.markuplintrc`,
`✔ ++ ${dir}/__assets/_libs/component/c-title-page.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-title-page.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-pagination.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-pagination.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-page-sub.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-page-home.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-global.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-global.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-media.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-media.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-media-list.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-header.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-header.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-footer.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-footer.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-content-main.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-content-index.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-card.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-card.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-card-list.scss`,
`✔ ++ ${dir}/__assets/_libs/component/bge-contents.scss`,
`✔ ++ ${dir}/.vscode/settings.json`,
`✔ ++ ${dir}/.vscode/extensions.json`,
`✔ ++ ${dir}/.husky/pre-commit`,
'✔ Install dependencies : skipped',
]);
});
test('npx --type static', async ({ tmpDir, task }) => {
const dir = path.join(tmpDir, getName(task));
const actual = await cliTest(dir, 'static');
expect(actual).toStrictEqual([
`✔ ++ ${dir}/tsconfig.json`,
`✔ ++ ${dir}/prh.yaml`,
`✔ ++ ${dir}/package.json`,
`✔ ++ ${dir}/markuplint.config.js`,
`✔ ++ ${dir}/lint-staged.config.mjs`,
`✔ ++ ${dir}/eslint.config.js`,
`✔ ++ ${dir}/eleventy.config.mjs`,
`✔ ++ ${dir}/cspell.json`,
`✔ ++ ${dir}/README.md`,
`✔ ++ ${dir}/CHANGELOG.md`,
`✔ ++ ${dir}/.textlintrc.js`,
`✔ ++ ${dir}/.textlintignore`,
`✔ ++ ${dir}/.stylelintrc`,
`✔ ++ ${dir}/.pug-lintrc`,
`✔ ++ ${dir}/.prettierrc.mjs`,
`✔ ++ ${dir}/.postcssrc.js`,
`✔ ++ ${dir}/.npmignore`,
`✔ ++ ${dir}/.gitignore`,
`✔ ++ ${dir}/.editorconfig`,
`✔ ++ ${dir}/.clinerules`,
`✔ ++ ${dir}/__assets/htdocs/index.pug`,
`✔ ++ ${dir}/__assets/htdocs/js/script.ts`,
`✔ ++ ${dir}/__assets/htdocs/css/style.scss`,
`✔ ++ ${dir}/__assets/_libs/.markuplintrc`,
`✔ ++ ${dir}/__assets/_libs/style/theme/index.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/font.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/dimension.scss`,
`✔ ++ ${dir}/__assets/_libs/style/theme/color.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/img.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/button.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/body.scss`,
`✔ ++ ${dir}/__assets/_libs/style/general/all.scss`,
`✔ ++ ${dir}/__assets/_libs/style/base/root.scss`,
`✔ ++ ${dir}/__assets/_libs/script/index.ts`,
`✔ ++ ${dir}/__assets/_libs/mixin/meta.pug`,
`✔ ++ ${dir}/__assets/_libs/img/bg-repeat-01.gif`,
`✔ ++ ${dir}/__assets/_libs/img/bg-arrow.svg`,
`✔ ++ ${dir}/__assets/_libs/data/data.yml`,
`✔ ++ ${dir}/__assets/_libs/data/blocks.js`,
`✔ ++ ${dir}/__assets/_libs/data/blocks.html`,
`✔ ++ ${dir}/__assets/_libs/data/.markuplintrc`,
`✔ ++ ${dir}/__assets/_libs/component/c-title-page.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-title-page.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-pagination.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-pagination.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-page-sub.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-page-home.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-global.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-global.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-media.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-media.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-media-list.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-header.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-header.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-footer.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-footer.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-content-main.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-content-index.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-card.scss`,
`✔ ++ ${dir}/__assets/_libs/component/c-card.pug`,
`✔ ++ ${dir}/__assets/_libs/component/c-card-list.scss`,
`✔ ++ ${dir}/.vscode/settings.json`,
`✔ ++ ${dir}/.vscode/extensions.json`,
`✔ ++ ${dir}/.husky/pre-commit`,
'✔ Install dependencies : skipped',
]);
});
});