mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-08-03 16:06:59 +00:00
test(packaging): cover RPM init transitions
(cherry picked from commit 11f9cada05)
This commit is contained in:
committed by
github-actions[bot]
parent
ba8cdc6871
commit
5a4826ecc0
@@ -349,6 +349,17 @@ like( $helper_source, qr{/sbin/chkconfig --level 345 xcatd on},
|
||||
like( $helper_source,
|
||||
qr{if \[ -z "\$compat_root" \] &&\s+\{ \[ -e "\$legacy_init" \] \|\| \[ -L "\$legacy_init" \]; \}; then\s+if \[ -x /sbin/chkconfig \]; then\s+/sbin/chkconfig --del xcatd}s,
|
||||
'legacy cleanup invokes host registration tools only for an existing init script' );
|
||||
my ($rpm_post) = $rpm_spec =~ /^%post\n(.*?)^%posttrans\n/ms;
|
||||
my ($rpm_posttrans) = $rpm_spec =~ /^%posttrans\n(.*?)^%preun\n/ms;
|
||||
my ($rpm_preun) = $rpm_spec =~ /^%preun\n(.*)\z/ms;
|
||||
my ($rpm_fresh) = $rpm_post =~
|
||||
/if \[ "\$1" = "1" \]; then(.*?)\nfi\n\nif \[ "\$1" -gt "1" \]; then/ms;
|
||||
my ( $rpm_upgrade_systemd, $rpm_upgrade_legacy ) = $rpm_post =~
|
||||
/if \[ "\$1" -gt "1" \]; then.*?if "\$xcatd_init_compat" uses-systemd --explicit-target; then(.*?)\n else\n(.*?)\n fi/ms;
|
||||
ok( defined($rpm_post) && defined($rpm_posttrans) && defined($rpm_preun)
|
||||
&& defined($rpm_fresh) && defined($rpm_upgrade_systemd)
|
||||
&& defined($rpm_upgrade_legacy),
|
||||
'RPM service lifecycle scriptlets can be inspected independently' );
|
||||
like( $rpm_spec,
|
||||
qr{cp etc/init\.d/xcatd \$RPM_BUILD_ROOT/%\{prefix\}/share/xcat/scripts/xcatd},
|
||||
'RPM stages the legacy script as a compatibility template' );
|
||||
@@ -360,9 +371,41 @@ like( $rpm_spec,
|
||||
'RPM tracks the runtime-created init path only on legacy SUSE' );
|
||||
like( $rpm_spec, qr{xcatd-init-compat.*uses-systemd}s,
|
||||
'RPM scriptlets select the init implementation at install time' );
|
||||
unlike( $rpm_spec,
|
||||
qr{"\$xcatd_init_compat" uses-systemd(?! --explicit-target)},
|
||||
'every RPM lifecycle classifier opts into explicit target detection' );
|
||||
unlike( $rpm_spec,
|
||||
qr{"\$xcatd_init_compat" configure(?![^\n]*--explicit-target)},
|
||||
'every RPM lifecycle configuration uses the matching explicit target mode' );
|
||||
like( $rpm_spec,
|
||||
qr{xcatd_init_compat=.*?"\$xcatd_init_compat" configure --replace}s,
|
||||
'RPM upgrades refresh an existing SysV init script' );
|
||||
like( $rpm_fresh,
|
||||
qr{"\$xcatd_init_compat" legacy-state.*?"\$xcatd_init_compat" systemd-state}s,
|
||||
'RPM fresh installs query service state through the shared helper' );
|
||||
like( $rpm_upgrade_systemd,
|
||||
qr{legacy_xcatd_state=\$\("\$xcatd_init_compat" legacy-state\).*?"\$xcatd_init_compat" unregister-legacy.*?"\$xcatd_init_compat" configure.*?if \[ "\$legacy_xcatd_state" = enabled \].*?systemctl enable xcatd\.service}s,
|
||||
'RPM systemd transitions preserve enabled SysV state after unregistering it' );
|
||||
like( $rpm_upgrade_legacy,
|
||||
qr{legacy_xcatd_state=\$\("\$xcatd_init_compat" legacy-state\).*?if \[ "\$legacy_xcatd_state" = unregistered \].*?systemd-state.*?"\$xcatd_init_compat" disable-systemd.*?configure --replace.*?register-legacy "\$legacy_xcatd_state"}s,
|
||||
'RPM legacy transitions preserve prior state and clear systemd enablement' );
|
||||
like( $rpm_fresh,
|
||||
qr{if \[ "\$\("\$xcatd_init_compat" systemd-state\)" != masked \]; then\s+"\$xcatd_init_compat" register-legacy enabled}s,
|
||||
'RPM fresh legacy installs do not override a persistent systemd mask' );
|
||||
unlike( $rpm_post,
|
||||
qr{/sbin/chkconfig --(?:add|del) xcatd|/usr/lib/lsb/(?:install|remove)_initd},
|
||||
'RPM post delegates registration mechanics to the shared helper' );
|
||||
like( $rpm_posttrans,
|
||||
qr{%ifos linux.*?uses-systemd --explicit-target.*?\[ ! -e /etc/init\.d/xcatd \].*?\[ ! -L /etc/init\.d/xcatd \].*?"\$xcatd_init_compat" configure --explicit-target \|\| exit 1}s,
|
||||
'RPM post-transaction recovery restores only a missing legacy script' );
|
||||
unlike( $rpm_posttrans, qr{\$1|--replace},
|
||||
'RPM post-transaction recovery is idempotent and not argument-gated' );
|
||||
like( $rpm_preun,
|
||||
qr{"\$xcatd_init_compat" unregister-all.*?"\$xcatd_init_compat" remove}s,
|
||||
'RPM erase cleans both managers before removing the generated script' );
|
||||
unlike( $rpm_preun,
|
||||
qr{/sbin/chkconfig --del xcatd|/usr/lib/lsb/remove_initd},
|
||||
'RPM erase delegates cross-manager cleanup to the shared helper' );
|
||||
my @xcatroot_exports =
|
||||
( $rpm_spec =~ /^export XCATROOT="\$RPM_INSTALL_PREFIX0"$/mg );
|
||||
is( scalar @xcatroot_exports, 2,
|
||||
|
||||
Reference in New Issue
Block a user