Automate tests against latest libLcm on nuget#17
Open
hahn-kev wants to merge 7 commits into
Open
Conversation
Downloads the offline FW 9.3.9 installer (cached), silently installs, seeds a sample project, and runs pytest with the NuGet assembly overlay. Co-authored-by: Cursor <cursoragent@cursor.com>
Silent installer reports success but may not leave FieldWorks.exe at the expected path; search harder, upload logs, and extract the matching GitHub BuildDir.zip if needed. Co-authored-by: Cursor <cursoragent@cursor.com>
The silent offline installer places files under C:\Program Files\FieldWorks9 rather than SIL\FieldWorks 9. Co-authored-by: Cursor <cursoragent@cursor.com>
checkout/setup-python/upload-artifact v7, setup-dotnet/cache v6. Co-authored-by: Cursor <cursoragent@cursor.com>
The silent offline installer path is what green CI used; drop the unused GitHub BuildDir recovery path and its cache entries. Co-authored-by: Cursor <cursoragent@cursor.com>
Capture a prioritized roadmap (project-shape, lexicon fields, write round-trip, overlay asserts, matrices) now that Windows CI can run against FieldWorks. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR does 2 things.
I'm hoping this will let us catch issues earlier than when a new FLEx release goes out. Right now this only tests against new libLcm changes, but we could potentially download nightly FLEx builds and test against those too.
after this PR is merged in then these tests would run on each change that comes after, you can see the workflow that runs here in my fork https://github.com/hahn-kev/flexlibs/actions/runs/30076896761/job/89429540536
AI Summary
Here’s the full picture of what we built.
Problem
flexlibstalks to FieldWorks through pythonnet, loading DLLs from an installed FLEx tree (registry →RootCodeDir). You wanted to:Part 1 — Swappable dependencies (local)
Path overrides in
FLExGlobals.pyThree env vars, checked before registry discovery:
FLEXLIBS_FW_CODE_DIRFieldWorks.exe/ app DLLsFLEXLIBS_FW_PROJECTS_DIRFLEXLIBS_ASSEMBLY_DIRsys.pathso those assemblies winDefault behavior (no env vars) is unchanged: still uses the Windows registry.
NuGet overlay
tests/nuget-overlay/Overlay.csprojreferences latest prereleaseSIL.LCModel*,SIL.Core*,SIL.WritingSystemsrestore.ps1doesdotnet publish→ flat.fw-nuget-overlay/make test-nugetrestores that overlay, setsFLEXLIBS_ASSEMBLY_DIR, runs pytest-k "not CustomFields"Important constraint: NuGet only publishes LCM/SIL libs. App assemblies (
FwUtils,FieldWorks.exe, ICU init) still come from a FieldWorks binary tree. Overlay = “latest libraries on top of a real FW install.”Custom-fields test
FLEXLIBS_TEST_PROJECT/FLEXLIBS_TEST_CUSTOM_FIELDso you can point at your own project (needs an entry-level custom text field). CI skips that test.Part 2 — Windows CI
Branch:
ci/windows-fieldworks-testsPR: hahn-kev#1
Workflow (
.github/workflows/test-windows.yml)On a
windows-latestrunner:Install-FieldWorks.ps1— download offline 9.3.9.1 installer, silent/quiet /norestart ADDLOCAL=ALL, ensure registryC:\Program Files\FieldWorks9, notSIL\FieldWorks 9)BuildDir.zipif exe missing after installSetup-SampleProject.ps1— extract Sena 2.fwbackupinto projects dirmake test-nuget -k "not CustomFields"with env pointing at that FW treeResult
How the pieces fit
Locally:
.\make.bat test-nuget -k "not CustomFields"CI: same idea, but it provisions FieldWorks for you and caches it.