Repository navigation
test(e2e): share one tools stage across the Windows images and drop the MSIs - #40
Merged
Merged
Conversation
…he MSIs Build the compose runner and the per-combo image from one multi-stage Dockerfile, so pwsh, Git and Go install once per host and the suite's own build only copies the plugin in. Unpack pwsh and Go from their zips instead of msiexec, reuse the image Go for vfox@main instead of a second MSI install per combo, and run every Windows combo at once in CI.
… tools Replace the compose runner with tests/e2e/windows/run.ps1. It pulls the servercore base image in the background while it fetches pwsh, PortableGit and the pinned Go into a per-arch host cache, builds vfox@main once, and compiles the suite. The cache is bind-mounted read-only at C:\tools into every combo container, so the image no longer commits a layer of tens of thousands of tool files, which took 2-6 minutes on the hosted runners.
PowerShell splits a bare -test.v into -test and .v, so the suite exited with 'flag provided but not defined: -test'.
windows-11-arm spends about four minutes installing Go and building moby before the suite can pull anything. Keep the binaries in C:\vfox-docker\bin, restore that directory with actions/cache keyed on install-docker-arm64.ps1, and skip setup-go and the build on a hit.
linghengqian
marked this pull request as ready for review
October 17, 2026 14:27
linghengqian
added a commit
that referenced
this pull request
Oct 20, 2026
…d up (#41) * fix: musl libatomic check, 32-bit ARM package and .nvmrc matching Writing the new docs against vfox 1.0.12 and 1.0.13 turned up these bugs in the hooks. - musl: after the unpack, PostInstall runs `node --version` once and reads the dynamic loader's complaint. The musl builds of 26.8.0 and later need libatomic, which a stock Alpine does not have, so the install used to succeed and the first `node` failed with `Error loading shared library libatomic.so.1`. Now the install stops, nothing is registered, and the message names the package and the command that installs it (`apk add libatomic` on Alpine, `opkg install ...` on OpenWrt). The libstdc++ message names its command too and no longer says the library "is normally installed automatically". Where no command can be run, or node fails for another reason, the install is left alone. - 32-bit ARM Linux: vfox reports `arm` and Node.js names the package `linux-armv7l`. The plugin asked for `linux-arm`, which never existed, so every install on 32-bit ARM ended in "package ... is not listed". - .nvmrc and .node-version under latest_installed and latest_available: releases are matched by their numbers, part by part, and the newest one wins. The text used to be a Lua pattern against vfox's text-sorted list, so `22` picked 22.9.0 over 22.23.3, `22.2` matched 22.23.3, `22.x` matched nothing and a file holding `(` raised `unfinished capture`. `22.x`, `22.x.x` and `22.*` now mean 22, text that is no release number (node, lts/-1, `(`) is returned as it is, and only a leading `v` is dropped, so an `lts/<codename>` with a `v` inside works. `^lts-` is escaped: it matched anything starting with `lt` and turned `lts/-1` into `lts//1`. - PreInstall: `get checksum failed` says why, `HTTP 404 from <url>` or the network error, instead of hiding it. - VFOX_NODEJS_MIRROR may end in several slashes, not only one. The hook tests grow from 28 to 52 cases. The musl check is also covered by running it against Alpine 3.24.1 with and without libstdc++ and libatomic. * docs: document the plugin the way vfox-java does Rewrite the README and add a page per topic under docs/: versions and names, platforms, .nvmrc and .node-version, npm and global packages, troubleshooting, development and changes. The pages for the mirror, musl, LTS, building from source and E2E gain the details they lacked. The commands, messages and tables were taken from vfox 1.0.12 and 1.0.13 on Ubuntu 26.04 and Alpine 3.24.1. Pages that quote data give the day it was taken (2026-10-21), and docs/development.md has the commands that refresh it. What exists only on main, and not in 0.5.2, is marked "Unreleased" with the 0.5.2 behaviour next to it and listed in docs/changes.md. docs/development.md also lists the gaps that are still open. docs/e2e.md said the Windows suite keeps a Docker Compose runner; #40 replaced it with tests/e2e/windows/run.ps1. * docs: add a Chinese translation README_CN.md and docs/zh-CN/ translate the README and every page of docs/ under the same names. Each page, in both languages, starts with a link to the other one, and docs/development.md says how the two are kept in step. Code blocks and quoted messages stay in English, only their comments are translated. A link to another page points at its Chinese heading, and a link to the vfox guides at the zh-hans site. The terms follow vfox-java's Chinese docs.
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.
Uh oh!
There was an error while loading. Please reload this page.