Skip to content

Commit

Permalink
Add test-release script & makefile target
Browse files Browse the repository at this point in the history
Running the script sends the already built package to
test pypi, then uses pip to download and install it from
there, and does a minimal invocation of the installed
package. If the package has not been built correctly,
this might detect some errors before we send it to
the real pypi.
  • Loading branch information
tartley committed Oct 12, 2020
1 parent fa94627 commit d7134a7
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 2 deletions.
11 changes: 9 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
# with Cygwin binaries at the start of the PATH.

NAME=colorama
SHELL=/bin/bash

help: ## Display help for documented make targets.
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
Expand All @@ -18,6 +19,7 @@ pip=$(virtualenv)/bin/pip
syspython=python3.8
python=$(virtualenv)/bin/python
twine=$(virtualenv)/bin/twine
version=$(shell $(python) setup.py --version)

clean: ## Remove build artifacts, .pyc files, virtualenv
-rm -rf build dist MANIFEST colorama.egg-info $(virtualenv)
Expand Down Expand Up @@ -48,11 +50,16 @@ test: ## Run tests

# build packages

build: clean ## Build an sdist and wheel
build: ## Build an sdist and wheel
$(python) -m pip install --upgrade setuptools wheel
$(python) setup.py sdist bdist_wheel
.PHONY: sdist

test-release: build
./test-release
.PHONY: test-release

upload: ## Upload our sdist and wheel
$(twine) upload dist/*
$(twine) upload dist/colorama-$(version)-*
.PHONY: release

42 changes: 42 additions & 0 deletions test-release
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#/usr/bin/env bash

# Test the currently built release of Colorama from the dist/ dir.
# Run this before making a release.
#
# This should be run on Windows, because Colorama is mostly a no-op elsewhere.
# Hmmm, this script should probably be a .bat file then? Nah, WSL FTW.
#
# Uploads package from the dist/ directory to the *test* PyPI.
# Create a fresh virtualenvironment and install colorama from test PyPI.
# Import Colorama and make trivial use of it.

# Exit on error
set -eu -o pipefail

syspython=python3.8
bin="$HOME/.virtualenvs/colorama/bin"
version=$($bin/python setup.py --version)
sandbox=test-release-playground

# Upload to the test pypi.
$bin/twine upload --repository testpypi dist/colorama-$version-* \
|| echo " > Expect a 400 if package was already uploaded."

# cd elsewhere so we cannot import from local source.
mkdir -p $sandbox
(
cd $sandbox

# Create a new virtualenv
$syspython -m venv --clear venv

# Install the package we just uploaded
venv/bin/python -m pip --quiet install --index-url https://test.pypi.org/simple colorama==$version

# Test the package can be imported
venv/bin/python -c "import colorama; colorama.init(); print(colorama.Fore.GREEN + \"OK: Colorama\", colorama.__version__, \"from test pypi install.\")"
)

# Tidy up
rm -rf $sandbox

0 comments on commit d7134a7

Please sign in to comment.