Skip to content

Commit c23abc8

Browse files
author
peng.li24
committed
fix(ci): std job is informational — run all 900 tests, continue-on-error
std::exp/log/pow/atan2 and C++ loops are intentionally NOT bit-exact vs numpy. Instead of hiding failures with a skip filter, run the full 900-test suite and let failures be visible in the CI log. - continue-on-error: true on test-std (failures document the precision gap) - package job only requires test-bitexact to pass - --tb=no for std to keep the log readable (failure count still visible)
1 parent 7ad51ee commit c23abc8

1 file changed

Lines changed: 14 additions & 22 deletions

File tree

.github/workflows/ci.yml

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
# CI: build and test both backends on every push/PR.
22
#
33
# Two test jobs run in parallel:
4-
# test-bitexact — NUMPYCPP_STD_ONLY=OFF (default)
5-
# All 900 tests verify IEEE-754 bit-identical results vs numpy.
6-
# Requires: numpy .so loaded (OpenBLAS + SVML dlsym), AVX-512 capable CPU.
7-
#
8-
# test-std — NUMPYCPP_STD_ONLY=ON
9-
# Same API, pure <cmath> + C++ loops. ~423 precision-independent tests.
10-
# No external math dependencies.
4+
# test-bitexact — NUMPYCPP_STD_ONLY=OFF → must be GREEN (900/900 bit-exact)
5+
# test-std — NUMPYCPP_STD_ONLY=ON → informational only (continue-on-error)
6+
# std::exp/log/pow/atan2 and C++ loops are intentionally NOT bit-exact vs numpy.
7+
# Failures here document the precision gap — they do NOT block the build or DEB.
118
#
129
# DEB packaging: single DEB (header-only — backend is consumer's compile choice)
1310
# cmake .. → numpycpp-dev-<ver>-Linux.deb
@@ -64,10 +61,13 @@ jobs:
6461
cd tests
6562
python -m pytest test_all.py -q --tb=short --no-header
6663
67-
# ── Job 2: std / performance-first backend ───────────────────────────────────
64+
# ── Job 2: std / performance-first backend (informational) ───────────────────
6865
test-std:
6966
name: std / Python ${{ matrix.python }}
7067
runs-on: ubuntu-latest
68+
# std backend is intentionally NOT bit-exact vs numpy.
69+
# Failures are expected and informational — they do NOT block the DEB job.
70+
continue-on-error: true
7171

7272
strategy:
7373
fail-fast: false
@@ -96,27 +96,19 @@ jobs:
9696
- name: Build
9797
run: cmake --build tests/build_std -j$(nproc)
9898

99-
- name: Run API-compatibility tests (std mode)
100-
# std mode: skip all tests that require bit-exact math (0 ULP).
101-
# Skipped categories (std::exp/pow/atan2 and C++ loops are NOT bit-exact vs numpy):
102-
# test_unary_math — transcendental element-wise (exp/log/sin/…)
103-
# test_power — std::pow vs numpy SVML pow (0-1 ULP on AVX-512 runners)
104-
# test_arctan2 — std::atan2 vs numpy SVML atan2 (0-1 ULP on AVX-512 runners)
105-
# test_dot/norm/matmul — linalg (BLAS vs C++ loops)
106-
# TestEinsum — einsum (BLAS vs loops)
107-
# test_avx512_boundary — AVX-512 path not present in std build
108-
# nan/domain/signed_zero/_inf — transcendental edge cases
109-
# All structural, reduction, manipulation, io, comparison, astype,
110-
# and advanced-indexing tests still run (~417 / 900).
99+
- name: Run all 900 tests (std mode — failures expected for transcendental/linalg)
100+
# Run the full suite so the CI log honestly shows which tests align and
101+
# which do not. std::exp/log/pow/atan2 and C++ loops differ from numpy's
102+
# SVML/OpenBLAS paths by 0-2 ULP — those failures are expected and documented.
111103
run: |
112104
cd tests
113-
python -m pytest test_all.py -q --tb=short --no-header -k "not (test_unary_math or test_power or test_arctan2 or test_dot or test_norm or test_matmul or TestEinsum or test_avx512_boundary or test_nan_passthrough or test_nan_mixed or test_domain or signed_zero or _inf or test_sign_inf)"
105+
python -m pytest test_all.py -q --tb=no --no-header
114106
115107
# ── Job 3: package DEB ───────────────────────────────────────────────────────
116108
package:
117109
name: Package DEB
118110
runs-on: ubuntu-latest
119-
needs: [test-bitexact, test-std]
111+
needs: [test-bitexact] # std failures are informational; only bitexact must pass
120112

121113
steps:
122114
- uses: actions/checkout@v4

0 commit comments

Comments
 (0)