chore: 整理 third-party Dark Reader 目录并移除本地说明文件跟踪
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import fs from 'node:fs/promises';
|
||||
|
||||
import {rootPath} from '../../support/test-utils';
|
||||
|
||||
async function testLocalesDir(dir: string) {
|
||||
const entries = await fs.readdir(rootPath(dir));
|
||||
const files: string[] = [];
|
||||
const folders: string[] = [];
|
||||
for (const path of entries) {
|
||||
const stat = await fs.stat(rootPath(dir, path));
|
||||
if (stat.isDirectory()) {
|
||||
folders.push(path);
|
||||
} else {
|
||||
files.push(path);
|
||||
}
|
||||
}
|
||||
|
||||
const enLocaleFile = files.find((f) => f === 'en.config' || f.endsWith('.en.config'))!;
|
||||
const enLocale = await fs.readFile(`${dir}/${enLocaleFile}`, 'utf8');
|
||||
const enLines = enLocale.split('\n');
|
||||
const locales: string[] = [];
|
||||
|
||||
for (const file of files) {
|
||||
const locale = await fs.readFile(`${dir}/${file}`, 'utf8');
|
||||
locales.push(locale);
|
||||
}
|
||||
|
||||
function compareLinesToEnLocale(predicate: (en: string, loc: string) => boolean) {
|
||||
return locales.every((loc, j) => {
|
||||
const lines = loc.split('\n');
|
||||
for (let i = 0; i < Math.min(lines.length, enLines.length); i++) {
|
||||
if (!predicate(enLines[i], lines[i])) {
|
||||
console.error(`${files[j]}, line ${i + 1}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
// Line count is the same
|
||||
expect(locales.every((loc) => loc.split('\n').length === enLines.length)).toBe(true);
|
||||
|
||||
// Locale ends with new line
|
||||
expect(locales.every((loc) => loc.endsWith('\n')));
|
||||
|
||||
// Line spaces are the same
|
||||
expect(compareLinesToEnLocale((en, loc) => !en === !loc)).toBe(true);
|
||||
|
||||
// Message codes are on the same positions
|
||||
expect(compareLinesToEnLocale((en, loc) => !en.startsWith('@') || (en.startsWith('@') && en === loc))).toBe(true);
|
||||
|
||||
// No extra whitespace
|
||||
expect(compareLinesToEnLocale((en, loc) => loc.trim() === loc)).toBe(true);
|
||||
|
||||
for (const subDir of folders) {
|
||||
await testLocalesDir(`${dir}/${subDir}`);
|
||||
}
|
||||
}
|
||||
|
||||
test('Locales', async () => {
|
||||
await testLocalesDir('src/_locales');
|
||||
});
|
||||
Reference in New Issue
Block a user