1.6.3: the tested-WooCommerce version now agrees with itself

The plugin header said "WC tested up to: 11.1.2" and README.txt said 11.1.0 —
since 1.6.2, which is the release whose whole content was bumping that value,
and whose commit message says both were bumped. Only one was.

The check that exists for this printed green the entire time, and both of its
readings were correct:

  WordPress:   README.txt says 7.1.2, current release is 7.1.2
  WooCommerce: plugin header says 11.1.2, current release is 11.1.2

It reads each value from the file that value belongs in, for a good reason
written in the comment above it: WordPress reads "Tested up to" only from
readme.txt, WooCommerce reads "WC tested up to" only from the plugin header.
So each check asks "is this value current" of the authoritative copy — and a
SECOND copy of the same value in the other file is compared with nothing. A
correct answer to a different question, which is the shape most false greens
here have.

Two checks, two questions, kept apart:

- "Is this value current" stays advisory, per the comment already there: a
  build that goes red on release day for a header nobody has had a chance to
  update is a build that gets ignored.
- "Do our own two copies say the same thing" is a fact about this tree with no
  release-day excuse, so it is fatal.

Three pairs are actually duplicated here — WC tested up to, Requires at least,
Requires PHP — so the step has live rows rather than one. Proven red one field
at a time with a landing check each, and the count is on the green line,
because a readme carrying none of these fields has nothing to disagree and
would print the same silence as one where every pair matches.

50 selftest assertions. static=0 selftest=0 site=0; site still 69 on WordPress
7.1.2 with WooCommerce 11.1.2.

README.txt ships, so this is a version bump: 1.6.3. The changelog keeps 1.6.2's
entry — my first pass sed'd 1.6.2 to 1.6.3 across the file and rewrote that
heading, which would have made the changelog describe a release that never
happened.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kristianwind
2026-09-28 21:26:00 +02:00
co-authored by Claude Opus 5
parent 63a8f45b34
commit db0cdd4e19
4 changed files with 73 additions and 4 deletions
+5 -2
View File
@@ -4,9 +4,9 @@ Tags: woocommerce, discount, email, shipping, coupon
Requires at least: 5.8 Requires at least: 5.8
Tested up to: 7.1.2 Tested up to: 7.1.2
Requires PHP: 7.4 Requires PHP: 7.4
Stable tag: 1.6.2 Stable tag: 1.6.3
WC requires at least: 6.0 WC requires at least: 6.0
WC tested up to: 11.1.0 WC tested up to: 11.1.2
License: GPLv2 or later License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -96,6 +96,9 @@ The most specific match wins: exact email, then domain, then partial match.
== Changelog == == Changelog ==
= 1.6.3 =
* The WooCommerce version this plugin declares as tested is now the same in both places it is written. The readme still said 11.1.0 while the plugin itself said 11.1.2.
= 1.6.2 = = 1.6.2 =
* Declares compatibility with WordPress 7.1.2 and WooCommerce 11.1.2, both tested. No functional change. * Declares compatibility with WordPress 7.1.2 and WooCommerce 11.1.2, both tested. No functional change.
+41
View File
@@ -329,6 +329,47 @@ else
ok "no fixture executed: the clone still has no local identity" ok "no fixture executed: the clone still has no local identity"
fi fi
# ------------------------------------------------------ compat values in two files
# 🔴 The two currency checks read each value from the file that value belongs
# in — correct, and therefore blind to a SECOND copy in the other file. The
# plugin header said WC 11.1.2 and README.txt said 11.1.0 for four releases
# with that step printing green. Each reading was right; the pair was never
# compared. So these rows are about our own two copies agreeing, which is a
# fact about this tree and fatal, not about being up to date, which is advisory.
echo
echo "→ a compatibility value in two files must agree"
cd "$work/repo"
cp README.txt "$work/README.orig"
compat_row() { # $1 = field, $2 = value to plant in the readme
cp "$work/README.orig" README.txt
sed -i "s/^$1: .*/$1: $2/" README.txt
if [ "$(grep -c "^$1: $2\$" README.txt)" -lt 1 ]; then
bad "could not stage the compat fixture for '$1'"
return
fi
compat_out=$(./ci/static.sh 2>&1 || true)
if printf '%s' "$compat_out" | grep -q "'$1' is .* in the plugin header and"; then
ok "flagged a drifted '$1' ($2 in the readme)"
else
bad "NOT FLAGGED: '$1' drifted to $2 in the readme and nothing compared the two copies"
fi
}
compat_row 'WC tested up to' '11.0.0'
compat_row 'Requires PHP' '8.0'
compat_row 'Requires at least' '5.0'
cp "$work/README.orig" README.txt
# The pass must say how many pairs it compared. A tree where the readme carries
# none of these fields has nothing to disagree and prints the same silence as
# one where every pair matches.
compat_clean=$(./ci/static.sh 2>&1 || true)
pairs=$(printf '%s' "$compat_clean" | grep -c "^ both files say ")
if [ "$pairs" -ge 3 ]; then
ok "$pairs value pairs compared across the two files"
else
bad "only $pairs pairs compared — the agreement check has almost nothing to look at"
fi
# ------------------------------------------------------------------- plugin.conf # ------------------------------------------------------------------- plugin.conf
echo echo
echo "→ the floors must be required, not defaulted" echo "→ the floors must be required, not defaulted"
+25
View File
@@ -476,6 +476,31 @@ behind() { # claimed current -> true when claimed is the older of the two
# reads that one from the plugin header and nowhere else. # reads that one from the plugin header and nowhere else.
# 🔴 A value in two files drifts, and reading each one from its authoritative
# file is a correct answer to a different question. The two checks below ask
# "is this value current", one per value, each in the file that value belongs
# in — so a SECOND copy of the same value in the other file is never compared
# with anything. Measured 2026-09-28: the plugin header said WC 11.1.2 and
# README.txt said 11.1.0, four releases after the bump, with this step green
# and printing "plugin header says 11.1.2, current release is 11.1.2" — true,
# complete, and about the copy that was already right.
#
# So: any field carried by BOTH files must agree. Not "is it current" (that is
# advisory below, and rightly), but "do our own two copies say the same thing",
# which is a fact about this tree and therefore fatal.
for field in 'Tested up to' 'WC tested up to' 'Requires at least' 'Requires PHP'; do
h=$(ci_plugin_header "$field")
r=
[ -n "$readme" ] && r=$(sed -n -E "s/^$field:[[:space:]]*([^[:space:]]+).*/\1/p" "$readme" | head -1)
if [ -n "$h" ] && [ -n "$r" ]; then
if [ "$h" = "$r" ]; then
echo " both files say '$field: $h'"
else
note_fail "'$field' is '$h' in the plugin header and '$r' in $readme. One of them is stale and nothing else compares them."
fi
fi
done
tested_wp= tested_wp=
[ -n "$readme" ] && tested_wp=$(sed -n -E 's/^Tested up to:[[:space:]]*([^[:space:]]+).*/\1/p' "$readme" | head -1) [ -n "$readme" ] && tested_wp=$(sed -n -E 's/^Tested up to:[[:space:]]*([^[:space:]]+).*/\1/p' "$readme" | head -1)
echo " WordPress: ${readme:-readme} says ${tested_wp:-<missing>}, current release is ${current_wp:-<unknown>}" echo " WordPress: ${readme:-readme} says ${tested_wp:-<missing>}, current release is ${current_wp:-<unknown>}"
+2 -2
View File
@@ -4,7 +4,7 @@
* Plugin URI: https://gitea.nolimit.dk/kw/woo-discount-manager * Plugin URI: https://gitea.nolimit.dk/kw/woo-discount-manager
* Update URI: https://gitea.nolimit.dk/kw/nolimit-discounts-dist * Update URI: https://gitea.nolimit.dk/kw/nolimit-discounts-dist
* Description: Apply discounts and show/hide shipping methods based on the customer's email address (full address, domain or partial match). * Description: Apply discounts and show/hide shipping methods based on the customer's email address (full address, domain or partial match).
* Version: 1.6.2 * Version: 1.6.3
* Author: Kristian Wind * Author: Kristian Wind
* Author URI: https://gitea.nolimit.dk/kw * Author URI: https://gitea.nolimit.dk/kw
* License: GPL-2.0-or-later * License: GPL-2.0-or-later
@@ -28,7 +28,7 @@ if ( ! defined( 'ABSPATH' ) ) {
exit; exit;
} }
define( 'WC_EDM_VERSION', '1.6.2' ); define( 'WC_EDM_VERSION', '1.6.3' );
define( 'WC_EDM_PLUGIN_FILE', __FILE__ ); define( 'WC_EDM_PLUGIN_FILE', __FILE__ );
define( 'WC_EDM_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); define( 'WC_EDM_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'WC_EDM_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); define( 'WC_EDM_PLUGIN_URL', plugin_dir_url( __FILE__ ) );