AT_BANNER([RPM config file behavior])
+# Install over existing config file
+AT_SETUP([install config on existiting file])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+runroot rpmbuild --quiet -bb \
+ --define "ver 1.0" \
+ --define "filedata foo" \
+ /data/SPECS/configtest.spec
+
+echo "otherstuff" > "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -e configtest
+cat "${cf}.rpmorig"
+],
+[0],
+[foo
+otherstuff
+],
+[warning: /etc/my.conf saved as /etc/my.conf.rpmorig]
+)
+AT_CLEANUP
+
+# Install over existing config file
+AT_SETUP([install config(noreplace) on existiting file])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+runroot rpmbuild --quiet -bb \
+ --define "ver 1.0" \
+ --define "filedata foo" \
+ /data/SPECS/configtest.spec
+
+echo "otherstuff" > "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -e configtest
+cat "${cf}.rpmorig"
+],
+[0],
+[foo
+otherstuff
+],
+[warning: /etc/my.conf saved as /etc/my.conf.rpmorig]
+)
+AT_CLEANUP
+
+# Install over existing identical config file, no backup needed
+AT_SETUP([install config on existiting identical file])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+runroot rpmbuild --quiet -bb \
+ --define "ver 1.0" \
+ --define "filedata foo" \
+ /data/SPECS/configtest.spec
+
+echo "foo" > "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -e configtest
+test ! -f "${cf}"
+],
+[0],
+[foo
+],
+[])
+AT_CLEANUP
+
+# Erase unmodified config file, no backup here
+AT_SETUP([erase unchanged config])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+runroot rpmbuild --quiet -bb \
+ --define "ver 1.0" \
+ --define "filedata foo" \
+ /data/SPECS/configtest.spec
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -e configtest
+test ! -f "${cf}"
+],
+[0],
+[foo
+],
+[])
+AT_CLEANUP
+
+# Erase modified config file
+AT_SETUP([erase changed config])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+runroot rpmbuild --quiet -bb \
+ --define "ver 1.0" \
+ --define "filedata foo" \
+ /data/SPECS/configtest.spec
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+echo "otherstuff" > "${cf}"
+runroot rpm -e configtest
+cat "${cf}.rpmsave"
+test ! -f "${cf}"
+],
+[0],
+[foo
+otherstuff
+],
+[warning: /etc/my.conf saved as /etc/my.conf.rpmsave]
+)
+AT_CLEANUP
+
+# Erase modified config(noreplace) file
+AT_SETUP([erase changed config(noreplace)])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+runroot rpmbuild --quiet -bb \
+ --define "ver 1.0" \
+ --define "filedata foo" \
+ --define "noreplace 1" \
+ /data/SPECS/configtest.spec
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+echo "otherstuff" > "${cf}"
+runroot rpm -e configtest
+cat "${cf}.rpmsave"
+test ! -f "${cf}"
+],
+[0],
+[foo
+otherstuff
+],
+[warning: /etc/my.conf saved as /etc/my.conf.rpmsave]
+)
+AT_CLEANUP
+
# ------------------------------
# (Build and) upgrade package with config file, no backup here
-AT_SETUP([rpm -U to package with unchanged config file])
+AT_SETUP([upgrade unchanged config])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
rm -rf "${TOPDIR}"
-rm -rf "${RPMTEST}/etc/my.conf"
for v in "1.0" "2.0"; do
- run rpmbuild --quiet -bb \
+ runroot rpmbuild --quiet -bb \
--define "ver $v" \
--define "filedata foo" \
- ${RPMDATA}/SPECS/configtest.spec
+ /data/SPECS/configtest.spec
done
runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
],
[0],
-)
+[foo
+foo
+],
+[])
AT_CLEANUP
#
# ------------------------------
# Upgrade package with locally modified config file, unchanged in pkg
-AT_SETUP([rpm -U to package with locally modified config file])
+AT_SETUP([upgrade modified config])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
rm -rf "${TOPDIR}"
-rm -rf "${RPMTEST}/etc/my.conf"
for v in "1.0" "2.0"; do
- run rpmbuild --quiet -bb \
+ runroot rpmbuild --quiet -bb \
--define "ver $v" \
--define "filedata foo" \
- ${RPMDATA}/SPECS/configtest.spec
+ /data/SPECS/configtest.spec
+done
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+echo "otherstuff" > "${cf}"
+cat "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo
+otherstuff
+otherstuff
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Upgrade package with unmodified config file, changed in pkg
+AT_SETUP([upgrade changing config])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ /data/SPECS/configtest.spec
+done
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo-1.0
+foo-2.0
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Upgrade package with locally modified config file, changed in pkg
+AT_SETUP([upgrade changing, modified config 1])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ /data/SPECS/configtest.spec
done
runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
echo "otherstuff" > "${RPMTEST}"/etc/my.conf
+cat "${cf}"
runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+cat "${cf}.rpmsave"
],
[0],
+[foo-1.0
+otherstuff
+foo-2.0
+otherstuff
+],
+[warning: /etc/my.conf saved as /etc/my.conf.rpmsave]
)
AT_CLEANUP
# ------------------------------
+# Modified config file matches the content from new package.
+AT_SETUP([upgrade changing, modified config 2])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ /data/SPECS/configtest.spec
+done
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+echo "foo-2.0" > "${RPMTEST}"/etc/my.conf
+cat "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo-1.0
+foo-2.0
+foo-2.0
+],
+[])
+AT_CLEANUP
+
+# config(noreplace) variants of the same cases.
+#
+# ------------------------------
+# (Build and) upgrade package with config file, no backup here
+AT_SETUP([upgrade unchanged config(noreplace)])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "ver $v" \
+ --define "filedata foo" \
+ --define "noreplace 1" \
+ /data/SPECS/configtest.spec
+done
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo
+foo
+],
+[])
+AT_CLEANUP
+
+#
+# ------------------------------
+# Upgrade package with locally modified config file, unchanged in pkg
+AT_SETUP([upgrade modified config(noreplace)])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "ver $v" \
+ --define "filedata foo" \
+ --define "noreplace 1" \
+ /data/SPECS/configtest.spec
+done
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+echo "otherstuff" > "${cf}"
+cat "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo
+otherstuff
+otherstuff
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
# Upgrade package with unmodified config file, changed in pkg
-AT_SETUP([rpm -U to package with unchanged config file])
+AT_SETUP([upgrade changing config(noreplace)])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
rm -rf "${TOPDIR}"
-rm -rf "${RPMTEST}/etc/my.conf"
for v in "1.0" "2.0"; do
- run rpmbuild --quiet -bb \
+ runroot rpmbuild --quiet -bb \
--define "ver $v" \
--define "filedata foo-$v" \
- ${RPMDATA}/SPECS/configtest.spec
+ --define "noreplace 1" \
+ /data/SPECS/configtest.spec
done
runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
],
[0],
-)
+[foo-1.0
+foo-2.0
+],
+[])
AT_CLEANUP
# ------------------------------
# Upgrade package with locally modified config file, changed in pkg
-AT_SETUP([rpm -U to package with modified config file])
+AT_SETUP([upgrade changing, modified config(noreplace) 1])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
rm -rf "${TOPDIR}"
-rm -rf "${RPMTEST}/etc/my.conf"
for v in "1.0" "2.0"; do
- run rpmbuild --quiet -bb \
+ runroot rpmbuild --quiet -bb \
--define "ver $v" \
--define "filedata foo-$v" \
- ${RPMDATA}/SPECS/configtest.spec
+ --define "noreplace 1" \
+ /data/SPECS/configtest.spec
done
runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
echo "otherstuff" > "${RPMTEST}"/etc/my.conf
+cat "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+cat "${cf}.rpmnew"
+],
+[0],
+[foo-1.0
+otherstuff
+otherstuff
+foo-2.0
+],
+[warning: /etc/my.conf created as /etc/my.conf.rpmnew]
+)
+AT_CLEANUP
+
+# ------------------------------
+# Modified config file matches the content from new package.
+AT_SETUP([upgrade changing, modified config(noreplace) 2])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ --define "noreplace 1" \
+ /data/SPECS/configtest.spec
+done
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+echo "foo-2.0" > "${RPMTEST}"/etc/my.conf
+cat "${cf}"
runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo-1.0
+foo-2.0
+foo-2.0
+],
+[])
+AT_CLEANUP
+
+# Shared config file variants of the same cases
+# ------------------------------
+# (Build and) upgrade package with config file, no backup here
+AT_SETUP([upgrade unchanged shared config])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for s in "A" "B"; do
+ for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "sub $s" \
+ --define "ver $v" \
+ --define "filedata foo" \
+ /data/SPECS/configtest.spec
+ done
+done
+
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-2.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo
+foo
+],
+[])
+
+AT_CLEANUP
+#
+# ------------------------------
+# Upgrade package with locally modified config file, unchanged in pkg
+AT_SETUP([upgrade modified shared config])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for s in "A" "B"; do
+ for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "sub $s" \
+ --define "ver $v" \
+ --define "filedata foo" \
+ /data/SPECS/configtest.spec
+ done
+done
+
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-1.0-1.noarch.rpm
+cat "${cf}"
+echo "otherstuff" > "${cf}"
+cat "${cf}"
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-2.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo
+otherstuff
+otherstuff
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Upgrade package with unmodified config file, changed in pkg
+AT_SETUP([upgrade changing shared config])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for s in "A" "B"; do
+ for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "sub $s" \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ /data/SPECS/configtest.spec
+ done
+done
+
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-2.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo-1.0
+foo-2.0
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Upgrade package with locally modified config file, changed in pkg
+AT_SETUP([upgrade changing, modified shared config 1])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for s in "A" "B"; do
+ for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "sub $s" \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ /data/SPECS/configtest.spec
+ done
+done
+
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-1.0-1.noarch.rpm
+cat "${cf}"
+echo "otherstuff" > "${RPMTEST}"/etc/my.conf
+cat "${cf}"
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-2.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-2.0-1.noarch.rpm
+cat "${cf}"
+cat "${cf}.rpmsave"
],
[0],
-[ignore],
+[foo-1.0
+otherstuff
+foo-2.0
+otherstuff
+],
[warning: /etc/my.conf saved as /etc/my.conf.rpmsave]
)
AT_CLEANUP
+
+# ------------------------------
+# Modified config file matches the content from new package.
+AT_SETUP([upgrade changing, modified shared config 2])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for s in "A" "B"; do
+ for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "sub $s" \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ /data/SPECS/configtest.spec
+ done
+done
+
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-1.0-1.noarch.rpm
+cat "${cf}"
+echo "foo-2.0" > "${RPMTEST}"/etc/my.conf
+cat "${cf}"
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-2.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo-1.0
+foo-2.0
+foo-2.0
+],
+[])
+AT_CLEANUP
+
+# Shared config(noreplace) variants of the more interesting cases
+# ------------------------------
+# Upgrade package with locally modified config file, changed in pkg.
+AT_SETUP([upgrade changing, modified shared config(noreplace) 1])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for s in "A" "B"; do
+ for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "sub $s" \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ --define "noreplace 1" \
+ /data/SPECS/configtest.spec
+ done
+done
+
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-1.0-1.noarch.rpm
+cat "${cf}"
+echo "otherstuff" > "${RPMTEST}"/etc/my.conf
+cat "${cf}"
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-2.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-2.0-1.noarch.rpm
+cat "${cf}"
+cat "${cf}.rpmnew"
+],
+[0],
+[foo-1.0
+otherstuff
+otherstuff
+foo-2.0
+],
+[warning: /etc/my.conf created as /etc/my.conf.rpmnew]
+)
+AT_CLEANUP
+
+# ------------------------------
+# Modified config file matches the content from new package.
+AT_SETUP([upgrade changing, modified shared config(noreplace) 2])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for s in "A" "B"; do
+ for v in "1.0" "2.0"; do
+ runroot rpmbuild --quiet -bb \
+ --define "sub $s" \
+ --define "ver $v" \
+ --define "filedata foo-$v" \
+ --define "noreplace 1" \
+ /data/SPECS/configtest.spec
+ done
+done
+
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-1.0-1.noarch.rpm
+cat "${cf}"
+echo "foo-2.0" > "${RPMTEST}"/etc/my.conf
+cat "${cf}"
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/configtest-A-2.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/configtest-B-2.0-1.noarch.rpm
+cat "${cf}"
+],
+[0],
+[foo-1.0
+foo-2.0
+foo-2.0
+],
+[])
+AT_CLEANUP
+
+---------
+# Test pre-existing and post-install config ghost survival and erasure
+AT_SETUP([install/upgrade/erase ghost config])
+AT_KEYWORDS([install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+cf="${RPMTEST}"/etc/my.conf
+rm -rf "${cf}" "${cf}".rpm*
+rm -rf "${TOPDIR}"
+
+for v in 1.0 2.0; do
+ runroot rpmbuild --quiet -bb \
+ --define "ver ${v}" \
+ --define "filetype file" \
+ --define "filedata buster" \
+ --define "fileattr %ghost" \
+ /data/SPECS/configtest.spec
+done
+
+# pre-existing config, install, erase
+test ! -f "${cf}" && echo OK1
+echo "keaton" > "${cf}"
+cat "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -e configtest
+cat "${cf}"
+rm -f "${cf}"
+
+# post-install config, upgrade, erase
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-1.0-1.noarch.rpm
+test ! -f "${cf}" && echo OK2
+echo "buster" > "${cf}"
+cat "${cf}"
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/configtest-2.0-1.noarch.rpm
+cat "${cf}"
+runroot rpm -e configtest
+cat "${cf}"
+],
+[],
+[OK1
+keaton
+keaton
+keaton
+OK2
+buster
+buster
+buster
+],
+[])
+AT_CLEANUP