#!/bin/sh
. ./Common

###############################################################################

#
# See the comment at the end of "resolve" in prereq.c for details.
#

qpkg_fail "BUG: we don't clean up QPKG_ADDING, yielding false errors" \
  prereq A <<EOF
Package: D
Version: 0
Architecture: test
Conflicts: B (= 1)
Filename: D_0

Package: C
Version: 0
Architecture: test
Depends: D
Filename: C_0

Package: B
Version: 1
Architecture: test
Depends: C
Filename: B_1

Package: B
Version: 0
Architecture: test
Depends: C
Filename: B_0

Package: A
Version: 0
Architecture: test
Depends: B
Filename: A_0
EOF
expect <<EOF
package C version 0 has cyclic dependency
EOF

###############################################################################

#
# We also fail (badly) to restore QPKG_ADDING after we moved on:
#
# A -> B, D
# B -> C_1
#      C_0 -> B
# D conflicts with C_1
#
# "resolve" recurses as follows:
#
# A_0		-> B
#   B_0|D	-> C
#     C_1|D	-> next (we clear B here !)
#       D_0	-> done
#     C_0|D	-> next (we try to clear B again)
#

qpkg_fail "BUG: we don't restore QPKG_ADDING, missing errors" \
  prereq A <<EOF
Package: D
Version: 0
Architecture: test
Filename: D

Package: C
Version: 1
Architecture: test
Filename: C_1

Package: C
Version: 0
Architecture: test
Depends: B
Filename: C_0

Package: B
Version: 0
Architecture: test
Depends: C
Filename: B

Package: A
Version: 0
Architecture: test
Depends: B, D
Filename: A
EOF
expect <<EOF
qpkg: prereq.c:185: resolve: Assertion \`top->pkg->flags & QPKG_ADDING' failed.
Aborted
EOF