#!/bin/sh -eux # Marshalparser helps us to uniform byte-compiled Python files # so it has to be able to also parse pyc files from # the main python packages. # Moreover, it has its own database of magic numbers so this test # checks that the parser is compatible with the latest python before # we ship it. # Test the latest version by default because that's the place # where magic number incompatibility might happen with # the largest probability VERSION=${VERSION:-3.9} # How many randomly-selected pyc files to check? SAMPLE=${SAMPLE:-50} # This allows us to test marshalparser optionally: on Fedora 33+ only INSTALL_OR_SKIP=${INSTALL_OR_SKIP:-false} if [ "$INSTALL_OR_SKIP" == "true" ] && [ ! -f "/usr/bin/marshalparser" ]; then dnf -y install marshalparser || : if [ ! -f "/usr/bin/marshalparser" ]; then echo "marshalparser not installable, skipping this test" exit 0 fi fi path="/usr/lib*/python$VERSION/" for file in `find $path -name "*.pyc" | shuf | head -n $SAMPLE`; do marshalparser $file || exit 1 done