Avoid to update inlined relation column to NULL when deleting entities
When deleting entities, cubicweb run a rql DELETE on all relations to trigger hooks.
For an inlined relation this also mean set the column to NULL. This operation
may fail if there's additional constraints on the column.
Also this is a weird and useless behavior since deleting the entity row will by
definition delete the relation.
We still doesn't handle the case where both subject and object are going to be
deleted because rows need to be deleted in a particular order that cubicweb
doesn't handle.
Add a test checking UPDATE does not occur but hooks are correctly called.
Closes #17236690
#!/bin/sh
set -e
set -x
if [ -z "$AUTOPKGTEST_TMP" ]; then
echo "Not running as part as autopkgtest" >&2
exit 250
fi
# Switch to unprivileged user if needed
if [ "$(id -u)" = 0 ]; then
apt-get install -q -y sudo
echo 'Defaults !fqdn' > /etc/sudoers.d/fqdn
echo 'nobody ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/nobody
chown nobody:nogroup "$AUTOPKGTEST_TMP"
exec su nobody -s /bin/sh -c "$0"
fi
cd "$AUTOPKGTEST_TMP"
# Create a cube
PACKAGE="cubicweb-mytest"
cubicweb-ctl newcube -s 'Just a test cube' ${PACKAGE#cubicweb-}
cd "$PACKAGE"
UPSTREAM_VERSION=$(python setup.py --version)
DEBIAN_VERSION=$(dpkg-parsechangelog -S Version)
# Create source tarball
python setup.py sdist
mv "dist/${PACKAGE}-${UPSTREAM_VERSION}.tar.gz" "../${PACKAGE}_${UPSTREAM_VERSION}.orig.tar.gz"
# Install build-dependencies
mk-build-deps --install --root-cmd sudo --remove \
--tool 'apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --quiet --assume-yes'
# Build!
dpkg-buildpackage
# Output .buildinfo for posterity
cat ../*.buildinfo
# Output package content, again for posterity
debc
# Install the package
sudo debi --with-depends
lintian -i ../*.dsc ../*.changes
# Test if Python module is usable
python -c 'import cubicweb_mytest; print(dir(cubicweb_mytest))'
# Test if Python3 module is usable
python3 -c 'import cubicweb_mytest; print(dir(cubicweb_mytest))'
# Run autopkgtest (uh… inception, anyone?)
sudo autopkgtest ../*.changes -- null