diff --git a/package-lock.json b/package-lock.json
index 96b26d2..fc4e60a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3536,9 +3536,9 @@
"dev": true
},
"xliff-simple-merge": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/xliff-simple-merge/-/xliff-simple-merge-0.10.0.tgz",
- "integrity": "sha512-LlEbTFH0OCi5OQbVTnEAamNjyFM7MbXB+BfeA2QS1XUPBGaXKpGemUXSc631sCznJ3MXWTGKz/8Jbna32ahWFw==",
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/xliff-simple-merge/-/xliff-simple-merge-0.10.1.tgz",
+ "integrity": "sha512-n6kL0BPAuriRqE22AKpRmW2BOpDGK0qOhMz5rIVD2XqPxxrMGraeEuvUJoGclstKexBkBgrXsWU14JtanYRnvQ==",
"requires": {
"commander": "~8.3.0",
"js-levenshtein": "~1.1.6",
diff --git a/package.json b/package.json
index 04bf385..69690d9 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,7 @@
"@angular-devkit/core": "^13.0.0",
"@angular-devkit/schematics": "^13.0.0",
"@schematics/angular": "^13.0.0",
- "xliff-simple-merge": "~0.10.0",
+ "xliff-simple-merge": "~0.10.1",
"xml_normalize": "~0.8.3"
},
"devDependencies": {
diff --git a/src/builder.spec.ts b/src/builder.spec.ts
index c6aaffe..ee6b54d 100644
--- a/src/builder.spec.ts
+++ b/src/builder.spec.ts
@@ -213,6 +213,92 @@ describe('Builder', () => {
' \n' +
'');
});
+ test('extract-and-merge xlf 2.0 with specified sourceLanguageTargetFile should update target of sourceLanguageTargetFile', async () => {
+ await fs.writeFile('builder-test/messages.xlf', '\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ '', 'utf8');
+ await fs.writeFile('builder-test/messages.fr.xlf', '\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' target val\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ '', 'utf8');
+ await fs.writeFile('builder-test/messages.en.xlf', '\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' source val\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ '', 'utf8');
+
+ // A "run" can have multiple outputs, and contains progress information.
+ const run = await architect.scheduleTarget({project: 'builder-test', target: 'extract-i18n-merge'}, {
+ format: 'xlf2',
+ targetFiles: ['messages.fr.xlf', 'messages.en.xlf'],
+ sourceLanguageTargetFile: 'messages.en.xlf',
+ outputPath: 'builder-test',
+ });
+
+ await run.result;
+ const result = await run.result;
+ expect(result.success).toBeTruthy();
+ await run.stop();
+
+ // Expect that the copied file is the same as its source.
+ const targetContent1 = await fs.readFile('builder-test/messages.fr.xlf', 'utf8');
+ expect(targetContent1).toEqual('\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' target val\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' source val2\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ '');
+
+ const targetContent2 = await fs.readFile('builder-test/messages.en.xlf', 'utf8');
+ expect(targetContent2).toEqual('\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' source val changed\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' source val2\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ '');
+ });
test('extract-and-merge xlf 1.2', async () => {
await fs.writeFile('builder-test/messages.xlf', '\n' +