summaryrefslogtreecommitdiffstats
path: root/upstream.patch
diff options
context:
space:
mode:
Diffstat (limited to 'upstream.patch')
-rw-r--r--upstream.patch125
1 files changed, 125 insertions, 0 deletions
diff --git a/upstream.patch b/upstream.patch
new file mode 100644
index 0000000..c633df4
--- /dev/null
+++ b/upstream.patch
@@ -0,0 +1,125 @@
+From 4df543b41f574666dea020aeaf5e865488968053 Mon Sep 17 00:00:00 2001
+From: viest <wjx@php.net>
+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());
+ <?php
+ @unlink(__DIR__ . '/open_xlsx_next_row_with_formula.xlsx');
+ ?>
+---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