Files
2026-07-13 12:32:53 +08:00

52 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
#
# Test that the version number is provided correctly in a frozen (bundled)
# executable (see #1044).
set -e
# Get the directory of the current repository
MPMATH_DIR="$(realpath "$(dirname "$0")/../../")"
echo "Repo mpmath directory: $MPMATH_DIR"
echo "Install requirements..."
python3 -m pip install build pyinstaller
echo "Building the source distribution from the local repo..."
python3 -m build --sdist
# Find and install the generated tarball
TARBALL=$(ls -t dist/*.tar.gz | head -1)
echo "Generated tarball: $TARBALL"
echo "Installing mpmath from tarball..."
pip install dist/"$(basename $TARBALL)"
TEMP_DIR=$(mktemp -d)
echo "Created temporary directory: $TEMP_DIR"
cd "$TEMP_DIR"
# Create version_script.py that prints the package version
cat << EOF > version_script.py
import mpmath
print(mpmath.__version__)
EOF
# Save local version for later comparison
DIRECT_VERSION="$(python3 -m mpmath --version)"
echo "Building version_script with PyInstaller..."
pyinstaller --onefile --clean version_script.py
echo "Run frozen executable and extract the version from the output..."
FROZEN_VERSION="$(./dist/version_script 2>&1)"
if [ "$DIRECT_VERSION" == "$FROZEN_VERSION" ]; then
echo "Test passed: Version matches in frozen (bundled) executable."
else
echo "Test failed: Version mismatch."
echo "Direct version: $DIRECT_VERSION"
echo "Frozen version: $FROZEN_VERSION"
exit 1
fi