Skip to content

Commit 6d4c242

Browse files
authored
Merge pull request #7215 from keymanapp/fix/common/models/disconnected-unit-tests
fix(common/models): reconnects unit tests for worker-internal submodules 🎡
2 parents 80d7ce7 + 413e88d commit 6d4c242

17 files changed

Lines changed: 95 additions & 61 deletions

common/models/templates/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
},
3434
"scripts": {
3535
"build": "tsc",
36-
"pretest": "npm run build",
36+
"pretest": "tsc -b tsconfig.bundled.json",
3737
"test": "mocha -r test/helpers.js"
3838
},
3939
"bugs": {
@@ -47,7 +47,7 @@
4747
"@types/node": "^14.0.4",
4848
"chai": "^4.3.4",
4949
"mocha": "^8.4.0",
50-
"typescript": "^3.8.3"
50+
"typescript": "^4.5.4"
5151
},
5252
"dependencies": {
5353
"@keymanapp/models-wordbreakers": "*"

common/models/templates/test/helpers.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ var _ = global;
77
// TODO: then mocha invocation is as follows:
88
// TODO: mocha -r @keymanapp/models-test-helpers test/
99

10-
// KMW string must be included, so do it here:
11-
require('@keymanapp/web-utils');
10+
// Ensure that we can successfully load the module & apply kmwLength, as it's
11+
// needed for some of the unit tests.
12+
require('../build/index.bundled.js');
13+
1214
assert.ok('💩'.kmwLength);
1315

1416
/**
@@ -21,7 +23,7 @@ _.jsonFixture = function (name) {
2123
/**
2224
* Returns the Context of an empty buffer; no text, at both the start and
2325
* end of the buffer.
24-
*
26+
*
2527
* @returns {Context}
2628
*/
2729
_.emptyContext = function emptyContext() {

common/models/templates/test/test-common.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
var assert = require('chai').assert;
6-
var models = require('../').models;
6+
var models = require('../build/index.bundled.js').models;
77

88
describe('Common utility functions', function() {
99
// TODO: unit tests for other common utility functions
@@ -97,7 +97,7 @@ describe('Common utility functions', function() {
9797
let apple = {
9898
insert: 'apple',
9999
deleteLeft: 0,
100-
deleteRight: 2
100+
deleteRight: 2
101101
};
102102

103103
let banana = {
@@ -143,7 +143,7 @@ describe('Common utility functions', function() {
143143
let apple = {
144144
insert: 'apple',
145145
deleteLeft: 0,
146-
deleteRight: 2
146+
deleteRight: 2
147147
};
148148

149149
let banana = {
@@ -167,7 +167,7 @@ describe('Common utility functions', function() {
167167
let apple = {
168168
insert: 'apple',
169169
deleteLeft: 0,
170-
deleteRight: 2
170+
deleteRight: 2
171171
};
172172

173173
let banana = {

common/models/templates/test/test-priority-queue.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
*/
44

55
var assert = require('chai').assert;
6-
var PriorityQueue = require('../').models.PriorityQueue;
6+
var PriorityQueue = require('../build/index.bundled.js').models.PriorityQueue;
77

88
describe('Priority queue', function() {
99
it('can act as a min-heap', function () {
1010
let input = [1, 10, 2, 9, 3, 8, 4, 7, 5, 6];
11-
11+
1212
let queue = new PriorityQueue((a, b) => a - b);
1313
input.forEach((input) => queue.enqueue(input));
1414

@@ -41,7 +41,7 @@ describe('Priority queue', function() {
4141

4242
it('can act as a max-heap', function () {
4343
let input = [1, 10, 2, 9, 3, 8, 4, 7, 5, 6];
44-
44+
4545
let queue = new PriorityQueue((a, b) => b - a);
4646
input.forEach((input) => queue.enqueue(input));
4747

common/models/templates/test/test-quote-behavior.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
var assert = require('chai').assert;
6-
var QuoteBehavior = require('../').models.QuoteBehavior;
6+
var QuoteBehavior = require('../build/index.bundled.js').models.QuoteBehavior;
77

88
describe('Quote behaviors', function() {
99
describe('Script directionality', function() {
@@ -144,15 +144,15 @@ describe('Quote behaviors', function() {
144144
quotesForKeepSuggestion: { open: `“`, close: `”`},
145145
insertAfterWord: " "
146146
}
147-
147+
148148
assert.throws(function() {
149149
QuoteBehavior.apply(QuoteBehavior.default, "hello", englishPunctuation, QuoteBehavior.default);
150150
});
151-
151+
152152
assert.throws(function() {
153153
QuoteBehavior.apply(QuoteBehavior.useQuotes, "hello", englishPunctuation, QuoteBehavior.default);
154154
});
155-
155+
156156
assert.throws(function() {
157157
QuoteBehavior.apply(QuoteBehavior.noQuotes, "hello", englishPunctuation, QuoteBehavior.default);
158158
});

common/models/templates/test/test-tokenization.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
var assert = require('chai').assert;
6-
var models = require('../').models;
6+
var models = require('../build/index.bundled.js').models;
77
var wordBreakers = require('@keymanapp/models-wordbreakers').wordBreakers;
88

99
describe('Tokenization functions', function() {
@@ -132,15 +132,15 @@ describe('Tokenization functions', function() {
132132
left: '', startOfBuffer: true,
133133
right: '', endOfBuffer: true
134134
};
135-
135+
136136
let tokenization = models.tokenize(wordBreakers.default, context);
137137

138138
let expectedResult = {
139139
left: [],
140140
right: [],
141141
caretSplitsToken: false
142142
};
143-
143+
144144
assert.deepEqual(tokenization, expectedResult);
145145
});
146146

@@ -153,7 +153,7 @@ describe('Tokenization functions', function() {
153153
right: [],
154154
caretSplitsToken: false
155155
};
156-
156+
157157
assert.deepEqual(tokenization, expectedResult);
158158
});
159159

@@ -163,15 +163,15 @@ describe('Tokenization functions', function() {
163163
left: ' ', startOfBuffer: true,
164164
right: '', endOfBuffer: true
165165
};
166-
166+
167167
let tokenization = models.tokenize(wordBreakers.default, context);
168168

169169
let expectedResult = {
170170
left: [''],
171171
right: [],
172172
caretSplitsToken: false
173173
};
174-
174+
175175
assert.deepEqual(tokenization, expectedResult);
176176
});
177177

@@ -233,7 +233,7 @@ describe('Tokenization functions', function() {
233233
case 'ស្រុកខ្មែរ':
234234
return [srok, shiftSpan(khmer, srok.length)]; // array of the two.
235235
case 'កខ្មែរ':
236-
// I'd admittedly be at least somewhat surprised if a real wordbreaker got this
236+
// I'd admittedly be at least somewhat surprised if a real wordbreaker got this
237237
// and similar situations perfectly right... but at least it gives us what
238238
// we need for a test.
239239
return [k, shiftSpan(khmer, k.length)];

common/models/templates/test/test-trie-model.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
var assert = require('chai').assert;
6-
var TrieModel = require('../').models.TrieModel;
6+
var TrieModel = require('../build/index.bundled.js').models.TrieModel;
77

88
describe('LMLayerWorker trie model for word lists', function() {
99
describe('instantiation', function () {
@@ -20,7 +20,7 @@ describe('LMLayerWorker trie model for word lists', function() {
2020
}
2121
}
2222
})
23-
23+
2424
assert.equal(model.punctuation.insertAfterWord, spaceMark);
2525
assert.equal(model.punctuation.quotesForKeepSuggestion.open, openQuote);
2626
assert.equal(model.punctuation.quotesForKeepSuggestion.close, closeQuote);
@@ -176,7 +176,7 @@ describe('LMLayerWorker trie model for word lists', function() {
176176
);
177177
});
178178
});
179-
179+
180180
describe('The default key function', function () {
181181
it('uses the default key function', function () {
182182
var model = new TrieModel(jsonFixture('tries/accented'));

common/models/templates/test/test-trie-traversal.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
var assert = require('chai').assert;
6-
var TrieModel = require('../').models.TrieModel;
6+
var TrieModel = require('../build/index.bundled.js').models.TrieModel;
77

88
// Useful for tests related to strings with supplementary pairs.
99
var smpForUnicode = function(code){
@@ -52,7 +52,7 @@ describe('Trie traversal abstractions', function() {
5252
assert.isEmpty(child.traversal().entries);
5353

5454
for(tChild of traversalInner1.children()) {
55-
if(tChild.char == 'h') {
55+
if(tChild.char == 'h') {
5656
hSuccess = true;
5757
let traversalInner2 = tChild.traversal();
5858
assert.isDefined(traversalInner2);
@@ -64,7 +64,7 @@ describe('Trie traversal abstractions', function() {
6464
eSuccess = true;
6565
let traversalInner3 = hChild.traversal();
6666
assert.isDefined(traversalInner3);
67-
67+
6868
assert.isDefined(traversalInner3.entries);
6969
assert.equal(traversalInner3.entries[0], "the");
7070

@@ -104,7 +104,7 @@ describe('Trie traversal abstractions', function() {
104104
assert.isEmpty(child.traversal().entries);
105105

106106
for(tChild of traversalInner1.children()) {
107-
if(tChild.char == 'r') {
107+
if(tChild.char == 'r') {
108108
let traversalInner2 = tChild.traversal();
109109
assert.isDefined(traversalInner2);
110110
assert.isArray(tChild.traversal().entries);
@@ -185,7 +185,7 @@ describe('Trie traversal abstractions', function() {
185185
assert.isEmpty(child.traversal().entries);
186186

187187
for(aChild of traversalInner1.children()) {
188-
if(aChild.char == smpP) {
188+
if(aChild.char == smpP) {
189189
pSuccess = true;
190190
let traversalInner2 = aChild.traversal();
191191
assert.isDefined(traversalInner2);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
// This variant of the tsconfig.json exists to create a 'leaf', 'bundled'
3+
// version of the models/templates build product. The same reference
4+
// cannot be prepended twice in a composite tsc build, posing problems
5+
// for certain down-line builds if the two tsconfigs are not differentiated.
6+
"extends": "./tsconfig.json",
7+
"compilerOptions": {
8+
"outFile": "build/index.bundled.js",
9+
},
10+
"references": [
11+
{ "path": "../../web/keyman-version", "prepend": true},
12+
{ "path": "../../web/utils", "prepend": true },
13+
{ "path": "../types" }
14+
],
15+
"include": [
16+
"src/**/*.ts"
17+
],
18+
"exclude": [
19+
"test"
20+
]
21+
}

common/models/wordbreakers/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
],
1515
"homepage": "https://github.com/keymanapp/keyman",
1616
"license": "MIT",
17-
"main": "index.js",
17+
"main": "build/index.js",
1818
"directories": {
1919
"lib": "lib",
2020
"test": "test"

0 commit comments

Comments
 (0)