Skip to content

Commit 792c74e

Browse files
committed
test: improve test to cover the new implementation
1 parent b4a4fb9 commit 792c74e

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

packages/qwik/src/cli/add/update-files.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ export async function mergeIntegrationDir(
2929

3030
if (destName === 'package.json') {
3131
await mergePackageJsons(fileUpdates, srcChildPath, destRootPath);
32-
} else if (destName === 'settings.json') {
33-
await mergeSettings(fileUpdates, srcChildPath, finalDestPath);
32+
} else if (destDir.endsWith('.vscode') && destName === 'settings.json') {
33+
await mergeVSCodeSettings(fileUpdates, srcChildPath, finalDestPath);
3434
} else if (destName === 'README.md') {
3535
await mergeReadmes(fileUpdates, srcChildPath, finalDestPath);
3636
} else if (
@@ -111,19 +111,19 @@ async function mergePackageJsons(fileUpdates: FsUpdates, srcPath: string, destPa
111111
}
112112
}
113113

114-
async function mergeSettings(fileUpdates: FsUpdates, srcPath: string, destPath: string) {
114+
async function mergeVSCodeSettings(fileUpdates: FsUpdates, srcPath: string, destPath: string) {
115115
const srcContent = await fs.promises.readFile(srcPath, 'utf-8');
116116
try {
117117
const srcPkgJson = JsonParser.parse(srcContent, JsonObjectNode);
118118
const destPkgJson = JsonParser.parse(
119119
await fs.promises.readFile(destPath, 'utf-8'),
120120
JsonObjectNode
121121
);
122-
srcPkgJson.update({ ...srcPkgJson.toJSON(), ...destPkgJson.toJSON() });
122+
destPkgJson.update({ ...destPkgJson.toJSON(), ...srcPkgJson.toJSON() });
123123

124124
fileUpdates.files.push({
125125
path: destPath,
126-
content: srcPkgJson.toString() + '\n',
126+
content: destPkgJson.toString() + '\n',
127127
type: 'modify',
128128
});
129129
} catch (e) {

packages/qwik/src/cli/add/update-files.unit.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { JsonObjectNode, JsonParser } from '@croct/json5-parser';
12
import { fs } from 'memfs';
23
import { join } from 'path';
34
import { describe, expect, test, vi } from 'vitest';
@@ -39,6 +40,16 @@ function createFakeFiles(dir: string) {
3940
fs.writeFileSync(join(dir, 'fake.ts'), 'fake file');
4041
fs.writeFileSync(join(dir, 'package.json'), '{"name": "fake"}');
4142
fs.writeFileSync(join(dir, 'src', 'global.css'), 'p{color: red}');
43+
fs.mkdirSync(join(dir, '.vscode'), { recursive: true });
44+
const settings = JsonParser.parse<JsonObjectNode>(
45+
`{
46+
// Comment
47+
"name": "John Doe",
48+
"age": 42,
49+
}`,
50+
JsonObjectNode
51+
);
52+
fs.writeFileSync(join(dir, '.vscode', 'settings.json'), settings.toString());
4253
}
4354

4455
describe('mergeIntegrationDir', () => {
@@ -51,6 +62,7 @@ describe('mergeIntegrationDir', () => {
5162
const expectedResults = [
5263
'destDir/subDestDir/fake.ts',
5364
'destDir/subDestDir/package.json',
65+
'destDir/subDestDir/.vscode/settings.json',
5466
'destDir/subDestDir/src/global.css',
5567
];
5668

@@ -64,6 +76,18 @@ describe('mergeIntegrationDir', () => {
6476
const monorepoSubDir = join(fakeDestDir, 'apps', 'subpackage', 'src');
6577
fs.mkdirSync(monorepoSubDir, { recursive: true });
6678
fs.writeFileSync(join(monorepoSubDir, 'global.css'), '/* CSS */');
79+
const settings = JsonParser.parse<JsonObjectNode>(
80+
`{
81+
// Comment Foo
82+
"css.lint.unknownAtRules": "ignore"
83+
}`,
84+
JsonObjectNode
85+
);
86+
fs.mkdirSync(join(fakeDestDir, 'apps', 'subpackage', '.vscode'));
87+
fs.writeFileSync(
88+
join(fakeDestDir, 'apps', 'subpackage', '.vscode', 'settings.json'),
89+
settings.toString()
90+
);
6791

6892
// Add a file that should stay in the root
6993
fs.writeFileSync(join(fakeSrcDir, 'should-stay-in-root.ts'), 'fake file');
@@ -84,6 +108,7 @@ describe('mergeIntegrationDir', () => {
84108
`destDir/subDestDir/should-stay-in-root.ts`,
85109
`destDir/subDestDir/package.json`,
86110
`destDir/subDestDir/should-stay/should-also-stay.ts`,
111+
'destDir/subDestDir/apps/subpackage/.vscode/settings.json',
87112
`destDir/subDestDir/apps/subpackage/src/global.css`,
88113
];
89114

0 commit comments

Comments
 (0)