
AT_BANNER([RPM file replacement])

AT_SETUP([upgrade to/from regular file])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${tf}" "${tf}".rpm*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype file" \
	--define "filedata foo" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype file" \
	--define "filedata bar" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
cat "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
cat "${tf}"
runroot rpm -U --oldpackage /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
cat "${tf}"
],
[0],
[foo
bar
foo
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade regular file to/from link])
AT_KEYWORDS([install])
RPMDB_INIT

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype file" \
	--define "filedata foo" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype link" \
	--define "filedata stuff" \
          /data/SPECS/replacetest.spec

# upgrade regular file to/from broken link
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
cat "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
readlink "${tf}"
runroot rpm -U --oldpackage /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
cat "${tf}"
],
[0],
[foo
stuff
foo
],
[])

RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

# upgrade regular file to/from file link
runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
cat "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
readlink "${tf}"
runroot rpm -U --oldpackage /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
cat "${tf}"
],
[0],
[foo
stuff
foo
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade broken link to broken link])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype link" \
	--define "filedata stiff" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype link" \
	--define "filedata stuff" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
readlink "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
readlink "${tf}"
],
[0],
[stiff
stuff
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade file link to file link])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype link" \
	--define "filedata goo" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype link" \
	--define "filedata goo" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
readlink "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
readlink "${tf}"
],
[0],
[goo
goo
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade directory link to directory link])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype link" \
	--define "filedata zoo" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype link" \
	--define "filedata zoo" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
readlink "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
readlink "${tf}"
],
[0],
[zoo
zoo
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade regular file to directory])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype file" \
	--define "filedata foo" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
cat "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
test -d "${tf}"
],
[0],
[foo
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade broken link to directory])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype link" \
	--define "filedata other" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
readlink "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
test -d "${tf}"
],
[0],
[other
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade file link to directory])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype link" \
	--define "filedata goo" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
readlink "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
test -d "${tf}"
],
[0],
[goo
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade directory link to directory])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype link" \
	--define "filedata zoo" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
readlink "${tf}"
runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
],
[2],
[zoo
],
[	file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch
])
RPMTEST_CLEANUP

AT_SETUP([upgrade empty directory to empty directory])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -d "${tf}" && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
test -d "${tf}"
],
[0],
[],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade empty directory to regular file])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype file" \
	--define "filedata woot" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -d "${tf}" && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
],
[2],
[],
[	file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch
])
RPMTEST_CLEANUP

AT_SETUP([upgrade locally symlinked directory])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype datadir" \
	--define "filedata README1" \
	--define "user $(id -u -n)" \
	--define "grp $(id -g -n)" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype datadir" \
	--define "filedata README2" \
	--define "user $(id -u -n)" \
	--define "grp $(id -g -n)" \
          /data/SPECS/replacetest.spec

mkdir -p "${RPMTEST}"/opt/f00f
ln -s f00f "${RPMTEST}"/opt/foo
runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -L "${tf}" && test -d "${tf}" && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
test -L "${tf}" && test -d "${tf}"
],
[0],
[],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade invalid locally symlinked directory])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype datadir" \
	--define "filedata README1" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype datadir" \
	--define "filedata README2" \
          /data/SPECS/replacetest.spec

mkdir -p "${RPMTEST}"/opt/f00f
ln -s f00f "${RPMTEST}"/opt/foo
runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -L "${tf}" && test -d "${tf}" && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
test -d "${tf}"
],
[0],
[],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade empty directory to broken link])
AT_KEYWORDS([install])
RPMDB_INIT

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype link" \
	--define "filedata woot" \
          /data/SPECS/replacetest.spec

# upgrade empty directory to broken link
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -d "${tf}" && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
],
[2],
[],
[	file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch
])

# upgrade empty directory to file link
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -d "${tf}" && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
],
[2],
[],
[	file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch
])
RPMTEST_CLEANUP

AT_SETUP([upgrade empty directory to file link])
AT_KEYWORDS([install])
RPMDB_INIT

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype link" \
	--define "filedata goo" \
          /data/SPECS/replacetest.spec

# upgrade removed empty directory to file link
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -d "${tf}" && rmdir "${tf}" && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
readlink "${tf}"
],
[0],
[goo
],
[])

# upgrade replaced empty directory to file link
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -d "${tf}" && rmdir "${tf}" && ln -sf goo "${tf}" && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
readlink "${tf}"
],
[0],
[goo
],
[])
RPMTEST_CLEANUP

AT_SETUP([upgrade empty directory to file link with pretrans])
AT_KEYWORDS([install])
RPMTEST_CHECK([
RPMDB_INIT
tf="${RPMTEST}"/opt/foo
rm -rf "${RPMTEST}"/opt/*

runroot rpmbuild --quiet -bb \
        --define "ver 1.0" \
	--define "filetype dir" \
          /data/SPECS/replacetest.spec

runroot rpmbuild --quiet -bb \
        --define "ver 2.0" \
	--define "filetype link" \
	--define "filedata goo" \
	--define "fixit posix.rmdir('/opt/foo')" \
          /data/SPECS/replacetest.spec

runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
test -d "${tf}" && runroot rpm -U --test /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm && runroot rpm -U /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
readlink "${tf}"
],
[0],
[goo
],
[])
RPMTEST_CLEANUP
