Commit graph

2840 commits

Author SHA1 Message Date
Marc Durdin
3a359b580a chore(developer): include clocale for CompilerInterfaces, for setlocale call 2024-11-06 13:43:08 +07:00
Marc Durdin
4e2f83ad50 chore(developer): skip anii and sil_kmhmu in full test
anii.kmn and sil_kmhmu.kmn both have mismatching case in filename
references for icons. For now, we will disable tests for these two
keyboards, so that tests pass on Linux (which has case-sensitive
filesystem).

Note: the filename case was already addressed in the keyboards repo, so
when we realign to a more recent commit for the test fixtures, we should
be able to include these tests again.

Relates-to: #12623
2024-11-06 13:41:31 +07:00
Marc Durdin
411cd06df7 fix(developer): use C.UTF-8 locale to for consistent cross-platform whitespace management
On mac arch build, kmcmplib is failing to trim U+2002, unlike all other
platforms. Using UTF-8 locale should treat the ISO 30112 POSIX space
characters, which includes U+2002, as whitespace.
2024-11-06 13:34:28 +07:00
Marc Durdin
3c680e3334 fix(developer): normalize path separators in unit tests in kmcmplib
While kmc did this already in its callbacks, the unit test callbacks
did not, which meant that some keyboard tests failed on Linux and macOS.

Relates-to: #12623
2024-11-06 12:57:55 +07:00
Marc Durdin
d88f16e153 chore(developer): include build-utils-ci.inc.sh in kmcmplib 2024-11-06 11:09:14 +07:00
Marc Durdin
f4bd99f935 fix(developer): reconnect --full-test in kmcmplib build and enable for CI
The --full-test parameter in kmcmplib build.sh has not been working.
This PR reconnects the parameter and also enables it by default for CI
test builds (not release builds).

Fixes: #12623
2024-11-06 10:59:29 +07:00
Marc Durdin
393a15e2f2 chore(developer): skip masaram_gondi in kmcmplib full test
masaram_gondi.kmx fixture is built from a known-bad source, which is
caught in kmcmplib 18.0.

This failure is because the keyboard source had non-BMP characters in
the key part of the rule on line 215, which has been picked up by the
18.0 compiler in #11806:

```
$keymanonly: if(opt1 = 'gondi') any(Vyanjana)"𑵄" + any(Vyanjana)	>	index(Vyanjana,2) U+11D45
```

The trick here is that the compiled fixture
developer/src/kmcmplib/tests/fixtures/keyboards-repo/masaram_gondi.kmx
is based on a [broken version of the keyboard
source](965ef1941f/release/m/masaram_gondi/source/masaram_gondi.kmn)
in the keyboards repo ([fixed
version](06cfd2d186/release/m/masaram_gondi/source/masaram_gondi.kmn)),
and updating to the fixed version will also trigger updates to a bunch
of other keyboards. I think the simplest resolution is probably to skip
masaram_gondi for 18.0.

Relates-to: #12623
Relates-to: #11806
2024-11-06 09:49:39 +07:00
Marc Durdin
baf08c77e6 fix(developer): correct regression from #12107
Fixes a regression arising from #12107 in debug store strings.

Relates-to: #12623
Relates-to: #12107
2024-11-06 09:48:00 +07:00
Marc Durdin
ea6714956f
Merge pull request #12608 from keymanapp/fix/developer/12607-force-server-directory-before-config-save
fix(developer): create Server config directory before options save
2024-11-05 07:07:02 +01:00
Marc Durdin
1fc6558eea
Merge pull request #12596 from keymanapp/fix/developer/12553-kmc-model-handle-missing-files
fix(developer): handle missing files in kmc-model
2024-11-05 07:06:03 +01:00
Marc Durdin
9c403bc947
Merge pull request #12595 from keymanapp/fix/developer/12546-kmc-kmn-handle-missing-files
fix(developer): handle missing files in kmc-kmn
2024-11-05 07:05:52 +01:00
Marc Durdin
60e7f869fb
Merge pull request #12594 from keymanapp/fix/developer/12517-paste-into-wordlist-editor
fix(developer): handle paste of TSV into Wordlist grid
2024-11-05 07:05:40 +01:00
Marc Durdin
0467febf46
chore(developer): apply review suggestions 2024-11-04 05:01:43 +01:00
Marc Durdin
ae9a4210c3 fix(developer): create Server config directory before options save
Also use back-off logic for saving in case config file is locked by
another process.

Fixes: #12607
Fixes: KEYMAN-DEVELOPER-1Z1
2024-11-04 08:08:28 +07:00
Steven R. Loomis
ac99a4c54d fix(developer): ldml don't allow a uset as right-hand-side variable
- to="$[triisap]" is a mistake and not allowed.
- it's either meant to be a regular variable, or a map. Both of those are different syntax.
- add a test for the failing case, and also for the escaped case (to="\$[…)
2024-11-01 13:03:31 -05:00
Marc Durdin
2a0e17cab7 fix(developer): handle missing files in kmc-model
If a file is not found, loadfile returns null, which kmc-model now
handles with a clear error message rather than a generic exception.
Checks added for missing .model.ts and missing wordlist.tsv files. Added
corresponding unit tests.

Fixes: #12553
Fixes: KEYMAN-DEVELOPER-294
2024-10-31 09:29:46 +07:00
Marc Durdin
55e3f73a36 fix(developer): handle missing files in kmc-kmn
If a file is not found, the loadfile callback now returns an empty array
rather than null, which kmcmplib interprets as a missing file. This
means a zero-byte file will have the same outcome but as it is also
generally invalid, I think that is acceptable.

Fixes: #12546
Fixes: KEYMAN-DEVELOPER-292
2024-10-31 09:08:44 +07:00
Marc Durdin
ad1e77731f fix(developer): handle paste of TSV into Wordlist grid
When pasting into the wordlist grid, the editor will now check if the
clipboard text contains newlines or tabs, and if so, will paste the
text as new rows in the wordlist (with a prompt), rather than pasting
the whole text into the current cell.

If the clipboard text does not contain NL or TAB then the default
in-cell editor paste handling will run.

Fixes: #12517
2024-10-31 08:40:02 +07:00
Dr Mark C. Sinclair
8ac4267ce3 chore(developer): added commented-out unit test for multiple grouped virtual keys (see #12307) 2024-10-29 14:13:36 +00:00
Dr Mark C. Sinclair
feb7c51f8f chore(developer): four additional test cases with spaces around the names of custom virtual keys 2024-10-29 13:20:20 +00:00
Dr Mark C. Sinclair
2da8f7b17b chore(developer): add two test cases for VKeyMayBeVCKey when FMnemonicLayout is set 2024-10-29 13:13:49 +00:00
Dr Mark C. Sinclair
ac1931140e chore(developer): Merge branch 'master' into test/developer/kmcmplib-compiler-unit-tests-4 2024-10-29 10:47:18 +00:00
Dr Mark C. Sinclair
c36f093a91 chore(developer): some clarification of comments on test cases for custom name virtual keys 2024-10-24 12:40:21 +01:00
Dr Mark C. Sinclair
4b30cc9f3f chore(developer): added virtual key names to initVKDictionary() 2024-10-24 12:29:02 +01:00
Dr Mark C. Sinclair
6ec4a47214 chore(developer): three test cases for custom virtual key names 2024-10-21 12:30:08 +01:00
Dr Mark C. Sinclair
e54762e1eb chore(developer): add two test cases for long virtual key names 2024-10-21 11:55:41 +01:00
Dr Mark C. Sinclair
b3635680a6 chore(developer): correct extern variable initialisation (kmcmp::FMnemonicLayout) 2024-10-21 10:48:36 +01:00
Marc Durdin
e0cc39ee32 refactor(developer): add kps-file-reader and kps-file-writer
Relates to kmc-copy project.

Moves the .kps file reader out of kmc-package and adds corresponding
kps file writer unit in developer-utils. Also moves related test and
error message definition.
2024-10-16 08:45:35 +07:00
Dr Mark C. Sinclair
592ffbd807 chore(developer): add six additional test cases (virtual char key), plus three commented-out test cases for issue #12307 2024-10-14 16:03:11 +01:00
Dr Mark C. Sinclair
24377acfc9 chore(developer): add ten virtual key test cases (virtual char key) 2024-10-14 11:58:37 +01:00
Dr Mark C. Sinclair
8ba24717b8 chore(developer): Merge branch 'master' into test/developer/kmcmplib-compiler-unit-tests-4 2024-10-14 11:27:22 +01:00
Marc Durdin
7dc787b96b fix(developer): use TextDecoder to convert Uint8Array to string
`toString()` only works when the Uint8Array is actually a Node Buffer.
2024-10-11 14:11:45 +07:00
Marc Durdin
43e7d32004
Merge pull request #12472 from keymanapp/feat/common/12347-check-markdown-links
test(common): add markdown link check test for product documentation
2024-10-11 03:23:23 +02:00
Dr Mark C. Sinclair
8d9ec89a3d chore(developer): add test cases for chiral modifiers version bump 2024-10-10 12:36:45 +01:00
Dr Mark C. Sinclair
5b7ccc9f05 chore(developer): check for mixed modifiers on virtual keys 2024-10-10 11:20:35 +01:00
Dr Mark C. Sinclair
2f7096a810 chore(developer): add ten test cases on virtual key qualifiers 2024-10-10 10:47:18 +01:00
Marc Durdin
473fea9be0
Merge pull request #12464 from keymanapp/fix/developer/12454-use-richedit-for-debugger-memo
fix(developer): use richedit in debug memo to support Egyptian cartouches
2024-10-09 09:49:21 +02:00
Marc Durdin
76ebb5b02b
Merge branch 'master' into feat/common/12347-check-markdown-links 2024-10-09 05:16:31 +02:00
Marc Durdin
016a6f0225 chore(common): address review comments 2024-10-09 08:12:21 +07:00
Marc Durdin
e208d56419 fix(developer): use RichEdit 4.1 for debugger memos
Adds support for using RichEdit 4.1, and sets the richedit control into
the correct mode for rendering arbitrary Unicode correctly. Removes
some unnecessary per-character refresh for improved performance.

Fixes: #12454
2024-10-08 14:21:22 +07:00
Steven R. Loomis
9a4c7e5820 feat(developer): fast-xml-parser: typo fix in xml-utils.ts
Fixes: #12208
2024-10-07 13:05:50 -05:00
Dr Mark C. Sinclair
d269edb20c chore(developer): add initial three test cases to GetXStringImpl_type_osb test, plus initVKDictionary() 2024-10-07 16:25:42 +01:00
Dr Mark C. Sinclair
ebb6f87fb3 chore(developer): add return() test case to GetXStringImpl_type_r test 2024-10-07 14:10:06 +01:00
Dr Mark C. Sinclair
eee9cf49dd chore(developer): add ten use cases for reset() in GetXStringImpl_type_r test 2024-10-07 13:48:38 +01:00
Dr Mark C. Sinclair
6871b35f05 chore(developer): Merge branch 'master' into test/developer/kmcmplib-compiler-unit-tests-4 2024-10-07 13:28:43 +01:00
Marc Durdin
2e059e9730
Merge branch 'master' into feat/common/12347-check-markdown-links 2024-10-07 09:41:45 +02:00
Steven R. Loomis
03a24a1506 feat(developer): fast-xml-parser: fix for ldml empty attributes
- because of the form to="" in ldml, we need to distinguish attributes and sub-elements in the ldml xml parsing
- use an attributePrefix, and fixup the object tree afterwards

Fixes: #12208
2024-10-03 12:41:08 -05:00
Steven R. Loomis
6c0d240e09
Merge branch 'master' into feat/common/12208-fast-xml-parser3 2024-10-03 11:04:11 -05:00
Steven R. Loomis
e483318597
Merge pull request #12482 from keymanapp/feat/common/12208-unified-xml-parse
feat(common): unified XML parser/writer
2024-10-03 10:52:35 -05:00
Steven R. Loomis
3e168aafb2 chore(developer,common): deps: xml2js / fast-xml-parser
- remove vendored xml2js
- add fast-xml-parser@4.5.0
- Rewire the KeymanXMLReader / KeymanXMLWriter to use fast-xml-parser

Four small changes to the test data on the generated .kvks:
- allow " for XML generation (" is legal)
- use the same XML prologue as the actual .kvks files.
- treat <key></key> as <key/> since we can't distinguish
  (removed a "_": "" entry)
- remove whitespace because we now can ("_": "\n  \n \n") on non-leaf nodes.
  This is ignored by the kvks code, but was difficult to maintain roundtrip.

Fixes: #12208
2024-10-03 08:34:24 -05:00