Merge pull request #46 from kristianwind/compat-values-must-agree-across-files
CI / Static checks (push) Successful in 4m28s
CI / WordPress latest + WooCommerce latest on PHP 8.3 (push) Successful in 1m21s

1.6.3: the tested-WooCommerce version now agrees with itself
This commit is contained in:
Kristian Wind
2026-09-28 21:33:48 +02:00
committed by GitHub
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__ ) );