diff --git a/developer/src/kmc-keyboard-info/test/test-keyboard-info-compiler.ts b/developer/src/kmc-keyboard-info/test/test-keyboard-info-compiler.ts
index 9b61b8e93d9..99c244be2dd 100644
--- a/developer/src/kmc-keyboard-info/test/test-keyboard-info-compiler.ts
+++ b/developer/src/kmc-keyboard-info/test/test-keyboard-info-compiler.ts
@@ -835,17 +835,4 @@ describe('keyboard-info-compiler', function () {
const result = await compiler['fontSourceToKeyboardInfoFont'](KHMER_ANGKOR_KPS, kmpJsonData, fonts);
assert.deepEqual(result, KHMER_ANGKOR_DISPLAY_FONT_INFO);
});
-
- it('handles missing info.version in a package file', async function() {
- const sources = {
- ...KHMER_ANGKOR_SOURCES,
- kpsFilename: makePathToFixture('missing-info-version-in-kps-11856', 'khmer_angkor.kps')
- };
- const compiler = new KeyboardInfoCompiler();
- assert.isTrue(await compiler.init(callbacks, {sources}));
- const kpjFilename = KHMER_ANGKOR_KPJ;
- const result = await compiler.run(kpjFilename);
- const actual = JSON.parse(new TextDecoder().decode(result.artifacts.keyboard_info.data));
- assert.equal(actual.version, '1.0');
- });
});
diff --git a/developer/src/kmc-package/src/compiler/package-compiler-messages.ts b/developer/src/kmc-package/src/compiler/package-compiler-messages.ts
index 154cb2143e7..00d8a380b5e 100644
--- a/developer/src/kmc-package/src/compiler/package-compiler-messages.ts
+++ b/developer/src/kmc-package/src/compiler/package-compiler-messages.ts
@@ -138,5 +138,11 @@ export class PackageCompilerMessages {
static ERROR_InvalidAuthorEmail = SevError | 0x0020;
static Error_InvalidAuthorEmail = (o:{email:string}) => m(this.ERROR_InvalidAuthorEmail,
`Invalid author email: ${def(o.email)}`);
+
+ static ERROR_PackageFileHasEmptyVersion = SevError | 0x0021;
+ static Error_PackageFileHasEmptyVersion = () => m(
+ this.ERROR_PackageFileHasEmptyVersion,
+ `Package version is not following keyboard version, but the package version field is blank.`
+ );
}
diff --git a/developer/src/kmc-package/src/compiler/package-version-validator.ts b/developer/src/kmc-package/src/compiler/package-version-validator.ts
index 1aad375d400..b20e086aec7 100644
--- a/developer/src/kmc-package/src/compiler/package-version-validator.ts
+++ b/developer/src/kmc-package/src/compiler/package-version-validator.ts
@@ -42,6 +42,11 @@ export class PackageVersionValidator {
if(!this.checkFollowKeyboardVersion(kmp)) {
return false;
}
+ } else {
+ if(!kmp.info.version) {
+ this.callbacks.reportMessage(PackageCompilerMessages.Error_PackageFileHasEmptyVersion());
+ return false;
+ }
}
if(!kmp.keyboards) {
diff --git a/developer/src/kmc-package/test/fixtures/absolute_path/source/absolute_path.kps b/developer/src/kmc-package/test/fixtures/absolute_path/source/absolute_path.kps
index e7c4a8b8512..b5a74c06ee1 100644
--- a/developer/src/kmc-package/test/fixtures/absolute_path/source/absolute_path.kps
+++ b/developer/src/kmc-package/test/fixtures/absolute_path/source/absolute_path.kps
@@ -17,6 +17,7 @@
Absolute Path
+ 1.0
diff --git a/developer/src/kmc-package/test/fixtures/invalid/error_package_file_has_empty_version.kps b/developer/src/kmc-package/test/fixtures/invalid/error_package_file_has_empty_version.kps
new file mode 100644
index 00000000000..386b4e2e03e
--- /dev/null
+++ b/developer/src/kmc-package/test/fixtures/invalid/error_package_file_has_empty_version.kps
@@ -0,0 +1,32 @@
+
+
+
+ 15.0.266.0
+ 7.0
+
+
+
+ Invalid Email Address
+ © 2019 National Research Council Canada
+ Eddie Antonio Santos
+
+
+
+
+ basic.kmx
+ Keyboard Basic
+ 0
+ .kmx
+
+
+
+
+ Basic
+ basic
+ 1.0
+
+ Central Khmer (Khmer, Cambodia)
+
+
+
+
diff --git a/developer/src/kmc-package/test/test-messages.ts b/developer/src/kmc-package/test/test-messages.ts
index e8fdfa842a5..2d8df44eb50 100644
--- a/developer/src/kmc-package/test/test-messages.ts
+++ b/developer/src/kmc-package/test/test-messages.ts
@@ -236,4 +236,8 @@ describe('PackageCompilerMessages', function () {
PackageCompilerMessages.ERROR_InvalidAuthorEmail);
});
+ it('should generate ERROR_PackageFileHasEmptyVersion if FollowKeyboardVersion is not present and Version is empty', async function() {
+ await testForMessage(this, ['invalid', 'error_package_file_has_empty_version.kps'],
+ PackageCompilerMessages.ERROR_PackageFileHasEmptyVersion);
+ });
});
diff --git a/developer/src/kmc-package/test/test-package-compiler.ts b/developer/src/kmc-package/test/test-package-compiler.ts
index 3f0e8d28fd2..7952e2145a2 100644
--- a/developer/src/kmc-package/test/test-package-compiler.ts
+++ b/developer/src/kmc-package/test/test-package-compiler.ts
@@ -209,6 +209,8 @@ describe('KmpCompiler', function () {
kmpJson = kmpCompiler.transformKpsToKmpObject(kpsPath);
});
+ assert.isNotNull(kmpJson);
+
await assert.isNull(kmpCompiler.buildKmpFile(kpsPath, kmpJson));
if(debug) callbacks.printMessages();