Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Script to test releases #276

Merged
merged 3 commits into from
Oct 15, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,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 +49,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
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent of this PR's main point, doing 'clean' before attempting to build doesn't work. There is no $(python) to call, because the virtualenv has been cleaned.

In addition, we now update to latest setuptools and wheel before attempting to build wheels.

$(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)-*
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent of this PR's main point, we now just try to upload the current version, not everything in the dist dir.

.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