@@ -198,6 +198,42 @@ jobs:
198198test-32bit :
199199    runs-on : ubuntu-latest 
200200
201+     container : i386/debian:stable-slim 
202+ 
203+     steps :
204+       - name : Prerequisites 
205+         run : | 
206+           prerequisites=( 
207+             build-essential 
208+             ca-certificates 
209+             cmake 
210+             curl 
211+             git 
212+             jq 
213+             libssl-dev 
214+             libstdc++6:amd64  # To support external 64-bit Node.js for actions. 
215+             pkgconf 
216+           ) 
217+           dpkg --add-architecture amd64 
218+           apt-get update 
219+           apt-get install --no-install-recommends -y -- "${prerequisites[@]}" 
220+ shell : bash 
221+       - uses : actions/checkout@v4 
222+       - uses : dtolnay/rust-toolchain@stable 
223+         with :
224+           toolchain : stable-i686-unknown-linux-gnu   #  Otherwise it may misdetect based on the amd64 kernel.
225+       - uses : Swatinem/rust-cache@v2 
226+       - uses : taiki-e/install-action@v2 
227+         with :
228+           tool : nextest 
229+       - name : Make `system` scope nonempty for "GitInstallation" tests 
230+         run : git config --system gitoxide.imaginary.arbitraryVariable arbitraryValue 
231+       - name : Test (nextest) 
232+         run : cargo nextest run --workspace --no-fail-fast 
233+ 
234+   test-32bit-cross :
235+     runs-on : ubuntu-latest 
236+ 
201237    strategy :
202238      matrix :
203239        target : [ armv7-linux-androideabi ] 
@@ -211,15 +247,17 @@ jobs:
211247        with :
212248          toolchain : stable 
213249          targets : ${{ matrix.target }} 
214-       - uses : taiki-e/install-action@v2 
250+       - name : Install cross 
251+         uses : taiki-e/install-action@v2 
215252        with :
216253          tool : cross 
217254      - name : check 
218255        run : cross check -p gix --target ${{ matrix.target }} 
219256      - name : Test (unit) 
220-         #  run high-level unit tests that exercise a lot of code while being pure Rust to ease building test binaries.
221-         #  TODO: figure out why `git` doesn't pick up environment configuration so build scripts fail when using `-p gix`.
222-         run : cross test -p gix-hashtable --target ${{ matrix.target }} 
257+         run : | 
258+           # Run some high-level unit tests that exercise various pure Rust code to ease building test binaries. 
259+           # We would prefer `-p gix`. But with `cross`, fixture scripts try to run amd64 `git` as an armv7 binary. 
260+           cross test -p gix-hashtable --target ${{ matrix.target }} 
223261
224262lint :
225263    runs-on : ubuntu-latest 
@@ -396,6 +434,7 @@ jobs:
396434      - test-journey 
397435      - test-fast 
398436      - test-32bit 
437+       - test-32bit-cross 
399438      - lint 
400439      - cargo-deny 
401440      - check-packetline 
0 commit comments