Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
55 changes: 1 addition & 54 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -49,60 +49,7 @@ check-spelling:

# Test that a Python package can be created from the template, with parameters for: `is_seedcase_project` (true or false) and `hosting_provider` (either "gh-pages" or "netlify")
test is_seedcase_project="true" hosting_provider="netlify":
#!/usr/bin/env bash
test_name="test-package-{{ hosting_provider }}"
test_dir="$(pwd)/_temp/{{ is_seedcase_project }}/$test_name"
template_dir="$(pwd)"
commit=$(git rev-parse HEAD)
rm -rf $test_dir
# vcs-ref means the current commit/head, not a tag.
uvx copier copy $template_dir $test_dir \
--vcs-ref=$commit \
--defaults \
--trust \
--data is_seedcase_project={{ is_seedcase_project }} \
--data hosting_provider={{ hosting_provider }} \
--data github_user="first-last" \
--data author_given_name="First" \
--data author_family_name="Last" \
--data author_email="[email protected]" \
--data review_team="@first-last/developers" \
--data github_board_number=22
# Run checks in the generated test Python package
cd $test_dir
git add .
git commit -m "test: initial copy"
just check-python check-spelling
# TODO: Find some way to test the `update` command
# Check that recopy works
echo "Testing recopy command -----------"
rm .cz.toml
git add .
git commit -m "test: preparing to recopy from the template"
uvx copier recopy \
--vcs-ref=$commit \
--defaults \
--overwrite \
--trust
# Check that copying onto an existing Python package works
echo "Using the template in an existing package command -----------"
rm .cz.toml .copier-answers.yml LICENSE.md
git add .
git commit -m "test: preparing to copy onto an existing package"
uvx copier copy \
$template_dir $test_dir \
--vcs-ref=$commit \
--defaults \
--trust \
--overwrite \
--data is_seedcase_project={{ is_seedcase_project }} \
--data hosting_provider={{ hosting_provider }} \
--data github_user="first-last" \
--data author_given_name="First" \
--data author_family_name="Last" \
--data author_email="[email protected]" \
--data review_team="@first-last/developers" \
--data github_board_number=22
sh ./test-template.sh {{ is_seedcase_project }} {{ hosting_provider }}

# Clean up any leftover and temporary build files
cleanup:
Expand Down
82 changes: 82 additions & 0 deletions test-template.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#!/usr/bin/env bash

# Needs two arguments:
#
# 1. is_seedcase_project: true or false
# 2. hosting_provider: e.g., "github", "gitlab", etc.

# Argument naming -----
is_seedcase_project="${1}"
hosting_provider="${2}"

if [ -z "$is_seedcase_project" ] || [ -z "$hosting_provider" ]; then
echo "Usage: sh $0 <is_seedcase_project> <hosting_provider>"
echo "Example: sh $0 true netlify"
exit 1
fi

# Set up variables and functions for the test -----
test_name="test-package-$hosting_provider"
test_dir="$(pwd)/_temp/$is_seedcase_project/$test_name"
template_dir="$(pwd)"
# Use the latest commit for the template
commit=$(git rev-parse HEAD)

# Needs three arguments:
#
# 1. Template directory
# 2. Destination directory
# 3. VCS ref (commit, branch, tag, etc.)
copy () {
# vcs-ref means the current commit/head, not a tag.
uvx copier copy $1 $2 \
--vcs-ref=$3 \
--defaults \
--data is_seedcase_project=$is_seedcase_project \
--data github_user="first-last" \
--data hosting_provider=$hosting_provider \
--data author_given_name="First" \
--data author_family_name="Last" \
--data author_email="[email protected]" \
--data review_team="@first-last/developers" \
--data github_board_number=22 \
--overwrite \
--skip-tasks \
--trust
}

# Pre-test setup -----
# Remove the leftover directory from previous runs
rm -rf $test_dir
mkdir -p $test_dir

# Check initial creation -----
# TODO: Find some way to test the `update` command
# Any step that fails will exit the script with an error and not continue
echo "Testing copy for new projects when: 'is_seedcase_project'='$is_seedcase_project', 'hosting_provider'='$hosting_provider' -----------"
(
cd $test_dir &&
copy $template_dir $test_dir $commit &&
git init -b main &&
git add . &&
git commit --quiet -m "test: initial copy" &&
# Check that recopy works -----
echo "Testing recopy when: 'is_seedcase_project'='$$is_seedcase_project', 'hosting_provider'='$hosting_provider' -----------" &&
rm .cz.toml &&
git add . &&
git commit --quiet -m "test: preparing to recopy from the template" &&
uvx copier recopy \
--vcs-ref=$commit \
--defaults \
--overwrite \
--skip-tasks \
--trust &&
# Check that copying onto an existing package works -----
echo "Testing copy in existing projects when: 'is_seedcase_project'='$is_seedcase_project', 'hosting_provider'='$hosting_provider' -----------" &&
rm .cz.toml .copier-answers.yml &&
git add . &&
git commit --quiet -m "test: preparing to copy onto an existing package" &&
copy $template_dir $test_dir $commit #&&
# Checks and builds -----
# just run-all
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Not sure if we want to run all recipes?

  • Many checks/tests need dependencies installed (so can't skip tasks)
  • Test coverage will fail (because the repo is empty) and fail the whole test. Maybe there's a way of ignoring this?

Copy link
Member

Choose a reason for hiding this comment

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

Yea, I think I agree. Plus it will install a bunch of stuff on the workflow CI that isn't really necessary.

)
Loading