csomh / source-git / rpm

Forked from source-git/rpm 4 years ago
Clone
Blob Blame History Raw
#    rpmdeps.at: rpm dependency tests

AT_BANNER([RPM dependencies])

# ------------------------------
# 
AT_SETUP([missing dependency])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs deptest-two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
],
[1],
[],
[error: Failed dependencies:
	deptest-two is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

# ------------------------------
# 
AT_SETUP([cross-depending packages])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs deptest-two" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "reqs deptest-one" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
# 
AT_SETUP([unsatisfied versioned require])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs deptest-two >= 2.0" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs deptest-foo = 1.0" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[2],
[],
[error: Failed dependencies:
	deptest-two >= 2.0 is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

# ------------------------------
# 
AT_SETUP([satisfied versioned require])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs deptest-foo >= 2.0" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs deptest-foo = 2.0" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
# 
AT_SETUP([versioned conflict in transaction])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "cfls deptest-two < 2.0" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[2],
[],
[error: Failed dependencies:
	deptest-two < 2.0 conflicts with deptest-one-1.0-1.noarch
])
AT_CLEANUP

# ------------------------------
# 
AT_SETUP([versioned conflict in database])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "cfls deptest-two < 2.0" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
runroot rpm -U /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[1],
[],
[error: Failed dependencies:
	deptest-two < 2.0 conflicts with (installed) deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([install and verify self-conflicting package])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "provs something" \
	--define "cfls something" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
runroot rpm -V --nofiles deptest-one
],
[0],
[],
[])
AT_CLEANUP

# explicit file conflicts
AT_SETUP([explicit file conflicts])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "cfls /opt/bar" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U --test \
	/build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm \
	/build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
runroot rpm -U /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
runroot rpm -e deptest-one
# XXX FIXME: rpm's problem message for this case is higly bogus.
runroot rpm -U /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
runroot rpm -e deptest-two
],
[],
[],
[error: Failed dependencies:
	/opt/bar conflicts with deptest-one-1.0-1.noarch
error: Failed dependencies:
	/opt/bar conflicts with (installed) deptest-one-1.0-1.noarch
error: Failed dependencies:
	/opt/bar conflicts with deptest-one-1.0-1.noarch
])
AT_CLEANUP
# ------------------------------
# 
AT_SETUP([erase to break dependencies])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs deptest-foo >= 2.0" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs deptest-foo = 2.0" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
runroot rpm -e deptest-two
],
[1],
[],
[error: Failed dependencies:
	deptest-foo >= 2.0 is needed by (installed) deptest-one-1.0-1.noarch
])
AT_CLEANUP

# ------------------------------
AT_SETUP([erase to break colored file dependency])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg hello" \
	--define "reqs /usr/bin/hello" \
	  /data/SPECS/deptest.spec

runroot rpm -U --ignoreos --ignorearch --nodeps \
	--define "_transaction_color 3" \
	--define "_prefer_color 2" \
	/data/RPMS/hello-2.0-1.i686.rpm \
	/data/RPMS/hello-2.0-1.x86_64.rpm \
	/build/RPMS/noarch/deptest-hello-1.0-1.noarch.rpm

runroot rpm -e hello.x86_64
],
[1],
[],
[error: Failed dependencies:
	/usr/bin/hello is needed by (installed) deptest-hello-1.0-1.noarch
])
AT_CLEANUP

# ------------------------------
AT_SETUP([erase on wrong-colored file dependency])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg hello" \
	--define "reqs /usr/bin/hello" \
	  /data/SPECS/deptest.spec

runroot rpm -U --ignoreos --ignorearch --nodeps \
	--define "_transaction_color 3" \
	--define "_prefer_color 2" \
	/data/RPMS/hello-2.0-1.i686.rpm \
	/data/RPMS/hello-2.0-1.x86_64.rpm \
	/build/RPMS/noarch/deptest-hello-1.0-1.noarch.rpm

runroot rpm -e hello.i686
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
#
AT_SETUP([unsatisfied WITH require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two with flavor = dekstop)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs flavor = server" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	--define "provs flavor = desktop" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm
],
[3],
[],
[error: Failed dependencies:
	(deptest-two with flavor = dekstop) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([unsatisfied WITH require (rpmdb)])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two with flavor = dekstop)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs flavor = server" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	--define "provs flavor = desktop" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
],
[1],
[],
[error: Failed dependencies:
	(deptest-two with flavor = dekstop) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([satisfied WITH require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two with flavor = desktop)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs flavor = desktop" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

AT_SETUP([satisfied WITH require (rpmdb)])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two with flavor = desktop)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs flavor = desktop" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
#
AT_SETUP([unsatisfied WITHOUT require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two without flavor)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs flavor = server" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[2],
[],
[error: Failed dependencies:
	(deptest-two without flavor) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([unsatisfied WITHOUT require (rpmdb)])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two without flavor)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	--define "provs flavor = server" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
],
[1],
[],
[error: Failed dependencies:
	(deptest-two without flavor) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([satisfied WITHOUT require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two without flavor)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

AT_SETUP([satisfied WITHOUT require (rpmdb)])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two without flavor)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
#
AT_SETUP([unsatisfied AND require - all missing])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two and deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
],
[1],
[],
[error: Failed dependencies:
	(deptest-two and deptest-three) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([unsatisfied AND require - first is missing])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two and deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm
],
[2],
[],
[error: Failed dependencies:
	(deptest-two and deptest-three) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([unsatisfied AND require - second is missing])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two and deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[2],
[],
[error: Failed dependencies:
	(deptest-two and deptest-three) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([satisfied AND require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two and deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
#
AT_SETUP([unsatisfied OR require - all missing])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two or deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
],
[1],
[],
[error: Failed dependencies:
	(deptest-two or deptest-three) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([satisfied OR require - first is missing])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two or deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

AT_SETUP([satisfied OR require - second is missing])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two or deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

AT_SETUP([satisfied OR require - both present])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two or deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
#
AT_SETUP([unsatisfied IF require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two if deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm
],
[2],
[],
[error: Failed dependencies:
	(deptest-two if deptest-three) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([satisfied IF require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two if deptest-three)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

AT_SETUP([unsatisfied IF-ELSE require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two if deptest-three else deptest-four)" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
],
[1],
[],
[error: Failed dependencies:
	(deptest-two if deptest-three else deptest-four) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([satisfied IF-ELSE require - right clause])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two if deptest-three else deptest-four)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg four" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-four-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

AT_SETUP([satisfied IF-ELSE require - left clause])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two if deptest-three else deptest-four)" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
#
AT_SETUP([unsatisfied nested AND-OR require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two and (deptest-three or deptest-four))" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[2],
[],
[error: Failed dependencies:
	(deptest-two and (deptest-three or deptest-four)) is needed by deptest-one-1.0-1.noarch
])
AT_CLEANUP

AT_SETUP([satisfied nested AND-OR require])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two and (deptest-three or deptest-four))" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

# ------------------------------
#
AT_SETUP([satisfied nested AND-IF require - without right clause])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two and (deptest-three if deptest-four))" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP

AT_SETUP([satisfied nested AND-IF require - with right clause])
AT_KEYWORDS([install, boolean])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
rm -rf "${TOPDIR}"

runroot rpmbuild --quiet -bb \
	--define "pkg one" \
	--define "reqs (deptest-two and (deptest-three if deptest-four))" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg two" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg four" \
	  /data/SPECS/deptest.spec

runroot rpmbuild --quiet -bb \
	--define "pkg three" \
	  /data/SPECS/deptest.spec

runroot rpm -U /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-two-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-four-1.0-1.noarch.rpm /build/RPMS/noarch/deptest-three-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP