From 4df543b41f574666dea020aeaf5e865488968053 Mon Sep 17 00:00:00 2001 From: viest Date: Mon, 18 May 2026 20:45:11 +0800 Subject: [PATCH] fix(7.0): make phpt suite + examples parse on PHP 7.0, extend CI matrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported in #565 by Remi: package.xml + composer.json declare >= 7.0 but three tests use 7.1-only syntax and one float assertion is sensitive to PHP 7.0's serialize_precision default. Tests / examples: - tests/conditional_format.phpt: replace `foreach (… as [\$range, \$cf])` with `foreach (… as \$rule) { list(\$range, \$cf) = \$rule; }` (short-list destructuring is PHP 7.1). - tests/examples_smoke.phpt: drop `: void` return type from the closure (void return type is PHP 7.1). - tests/open_xlsx_next_row_with_formula.phpt: switch the float-bearing line to --EXPECTF-- + %f so it accepts both '3.14' (7.1+) and '3.1400000000000001' (7.0, default serialize_precision=17). - examples/11_read_styles.php: drop `?array` nullable parameter syntax (PHP 7.1). CI: - main.yml matrix gets PHP 7.0/7.1/7.2/7.3 jobs on ubuntu-22.04 so the declared minimum is actually exercised on every push. macOS-14 stays on 7.4+ because setup-php's older bottles for ARM64 are unreliable. --- .github/workflows/main.yml | 13 +++++++++++++ examples/11_read_styles.php | 3 ++- tests/conditional_format.phpt | 5 ++++- tests/examples_smoke.phpt | 5 +++-- tests/open_xlsx_next_row_with_formula.phpt | 4 ++-- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8919ff1..ef205a8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,6 +11,19 @@ jobs: matrix: operating-system: [ubuntu-22.04, macos-14] php-versions: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5'] + include: + # Older PHP only on Linux — setup-php's macOS bottles for 7.0-7.3 + # are flaky on macos-14 (ARM64) and we don't ship binaries for + # those combos anyway. Linux coverage is the one that matters for + # downstream distros still on 7.x (EPEL etc.). + - operating-system: ubuntu-22.04 + php-versions: '7.0' + - operating-system: ubuntu-22.04 + php-versions: '7.1' + - operating-system: ubuntu-22.04 + php-versions: '7.2' + - operating-system: ubuntu-22.04 + php-versions: '7.3' steps: - name: Checkout diff --git a/examples/11_read_styles.php b/examples/11_read_styles.php index 0fee464..8da9fe5 100644 --- a/examples/11_read_styles.php +++ b/examples/11_read_styles.php @@ -26,7 +26,8 @@ ->openFile($name) ->openSheet(); -$fmt_font = static function (?array $font): string { +/* No `?array` nullable-type — that would require PHP 7.1. */ +$fmt_font = static function ($font) { if (!$font) return 'default'; return sprintf('%s %dpt color=%s%s%s', $font['name'], $font['size'], $font['color'], diff --git a/tests/conditional_format.phpt b/tests/conditional_format.phpt index f6d0723..c3a28f4 100644 --- a/tests/conditional_format.phpt +++ b/tests/conditional_format.phpt @@ -53,7 +53,10 @@ $rules = [ ]; $excel->insertText(0, 0, 'cf'); -foreach ($rules as [$range, $cf]) { +/* Plain list() destructuring instead of `as [$range, $cf]` so the test + * parses on PHP 7.0 (short-list destructuring is a 7.1 feature). */ +foreach ($rules as $rule) { + list($range, $cf) = $rule; $excel->conditionalFormatRange($range, $cf); } $path = $excel->output(); diff --git a/tests/examples_smoke.phpt b/tests/examples_smoke.phpt index 16d4c52..c4017ef 100644 --- a/tests/examples_smoke.phpt +++ b/tests/examples_smoke.phpt @@ -17,8 +17,9 @@ if (empty($files)) { } /* Run each example in an isolated scope (closure) so they don't bleed - * variables into each other, while still keeping the loaded extension. */ -$run = static function (string $file): void { + * variables into each other, while still keeping the loaded extension. + * No `: void` return type — that would require PHP 7.1. */ +$run = static function ($file) { /* The example writes to stdout — capture it so the smoke test only * cares about whether the script ran without a fatal. */ ob_start(); diff --git a/tests/open_xlsx_next_row_with_formula.phpt b/tests/open_xlsx_next_row_with_formula.phpt index b754363..b0b23b1 100644 --- a/tests/open_xlsx_next_row_with_formula.phpt +++ b/tests/open_xlsx_next_row_with_formula.phpt @@ -47,11 +47,11 @@ var_dump($excel->nextRowWithFormula()); ---EXPECT-- +--EXPECTF-- [0] type=string value='n' style_id=0 [1] type=string value='s' style_id=0 [0] type=number value=42 [1] type=string value='hello' -[0] type=number value=3.14 +[0] type=number value=%f [1] type=string value='world' NULL