diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/data/json.json | 1 | ||||
| -rw-r--r-- | test/data/vitest.options.config.json | 7 | ||||
| -rw-r--r-- | test/options-util.test.js | 122 | 
3 files changed, 119 insertions, 11 deletions
diff --git a/test/data/json.json b/test/data/json.json index 1f664587..a99f53a3 100644 --- a/test/data/json.json +++ b/test/data/json.json @@ -23,6 +23,7 @@          {"path": "test/data/dictionaries/invalid-dictionary6/index.json", "ignore": true},          {"path": "test/jsconfig.json", "ignore": true},          {"path": "test/data/vitest.write.config.json", "ignore": true}, +        {"path": "test/data/vitest.options.config.json", "ignore": true},          {"path": "benches/jsconfig.json", "ignore": true},          { diff --git a/test/data/vitest.options.config.json b/test/data/vitest.options.config.json new file mode 100644 index 00000000..e2bca721 --- /dev/null +++ b/test/data/vitest.options.config.json @@ -0,0 +1,7 @@ +{ +    "test": { +        "include": [ +            "../**/options-util.test.js" +        ] +    } +} diff --git a/test/options-util.test.js b/test/options-util.test.js index 4a75fa14..8fe0e212 100644 --- a/test/options-util.test.js +++ b/test/options-util.test.js @@ -663,19 +663,25 @@ async function testFieldTemplatesUpdate() {           * @returns {string}           */          const loadDataFile = (fileName) => { -            const content = fs.readFileSync(path.join(dirname, '..', 'ext', fileName), {encoding: 'utf8'}); +            const content = fs.readFileSync(fileName, {encoding: 'utf8'});              return templatePatcher.parsePatch(content).addition;          }; -        const updates = [ -            {version: 2, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v2.handlebars')}, -            {version: 4, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v4.handlebars')}, -            {version: 6, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v6.handlebars')}, -            {version: 8, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v8.handlebars')}, -            {version: 10, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v10.handlebars')}, -            {version: 12, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v12.handlebars')}, -            {version: 13, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v13.handlebars')}, -            {version: 21, changes: loadDataFile('data/templates/anki-field-templates-upgrade-v21.handlebars')} -        ]; + +        /** @type {import('options-util').TemplateFieldUpdate[]} */ +        const updates = []; +        const fileNameRegex = /^anki-field-templates-upgrade-v(\d+)\.handlebars$/; +        const templatesDirPath = path.join(dirname, '..', 'ext', 'data', 'templates'); +        const templatesDir = fs.readdirSync(templatesDirPath, {encoding: 'utf8'}); +        for (const fileName of templatesDir) { +            const match = fileNameRegex.exec(fileName); +            if (match !== null) { +                updates.push({ +                    version: Number.parseInt(match[1]), +                    changes: loadDataFile(path.join(templatesDirPath, match[0])) +                }); +            } +        } +        updates.sort((a, b) => a.version - b.version);          /**           * @param {number} startVersion           * @param {number} targetVersion @@ -1569,6 +1575,100 @@ async function testFieldTemplatesUpdate() {  {{/inline}}  {{~> (lookup . "marker") ~}}`.trimStart() +            }, +            { +                oldVersion: 21, +                newVersion: 24, +                old: ` +{{#*inline "conjugation"}} +    {{~#if definition.reasons~}} +        {{~#each definition.reasons~}} +            {{~#if (op ">" @index 0)}} « {{/if~}} +            {{.}} +        {{~/each~}} +    {{~/if~}} +{{/inline}}`.trimStart(), + +                expected: ` +{{#*inline "conjugation"}} +    {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} +        {{~set "multiple" false~}} +        {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} +            {{~set "multiple" true~}} +        {{~/if~}} +        {{~#if (get "multiple")~}}<ul>{{/if~}} +            {{~#each definition.inflectionRuleChainCandidates~}} +                {{~#if (op ">" inflectionRules.length 0)~}} +                    {{~#if (get "multiple")~}}<li>{{/if~}} +                    {{~#each inflectionRules~}} +                        {{~#if (op ">" @index 0)}} « {{/if~}} +                        {{.}} +                    {{~/each~}} +                    {{~#if (get "multiple")~}}</li>{{/if~}} +                {{~/if~}} +            {{~/each~}} +        {{~#if (get "multiple")~}}</ul>{{/if~}} +    {{~/if~}} +{{/inline}} +{{#*inline "cloze-body-kana"}} +    {{~#if definition.cloze}}{{definition.cloze.bodyKana}}{{/if~}} +{{/inline}} + +{{#*inline "phonetic-transcriptions"}} +    {{~#if (op ">" definition.phoneticTranscriptions.length 0)~}} +        <ul> +            {{~#each definition.phoneticTranscriptions~}} +                {{~#each phoneticTranscriptions~}} +                    <li> +                        {{~set "any" false~}} +                        {{~#each tags~}} +                            {{~#if (get "any")}}, {{else}}<i>({{/if~}} +                            {{name}} +                            {{~set "any" true~}} +                        {{~/each~}} +                        {{~#if (get "any")}})</i> {{/if~}} +                        {{ipa~}} +                    </li> +                {{~/each~}} +            {{~/each~}} +        </ul> +    {{~/if~}} +{{/inline}} +{{#*inline "frequency-harmonic-rank"}} +    {{~#if (op "===" definition.frequencyHarmonic -1) ~}} +        9999999 +    {{~else ~}} +        {{definition.frequencyHarmonic}} +    {{~/if~}} +{{/inline}} + +{{#*inline "frequency-harmonic-occurrence"}} +    {{~#if (op "===" definition.frequencyHarmonic -1) ~}} +        0 +    {{~else ~}} +        {{definition.frequencyHarmonic}} +    {{~/if~}} +{{/inline}} + +{{#*inline "frequency-average-rank"}} +    {{~#if (op "===" definition.frequencyAverage -1) ~}} +        9999999 +    {{~else ~}} +        {{definition.frequencyAverage}} +    {{~/if~}} +{{/inline}} + +{{#*inline "frequency-average-occurrence"}} +    {{~#if (op "===" definition.frequencyAverage -1) ~}} +        0 +    {{~else ~}} +        {{definition.frequencyAverage}} +    {{~/if~}} +{{/inline}} + +{{~#*inline "pitch-accent-categories"~}} +    {{~#each (pitchCategories @root)~}}{{~.~}}{{~#unless @last~}},{{~/unless~}}{{~/each~}} +{{~/inline~}}`.trimStart()              }          ];  |