32 lines
1 KiB
Bash
Executable file
32 lines
1 KiB
Bash
Executable file
#!/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
|