Skip to content
Open
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
66 changes: 9 additions & 57 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
just --list --unsorted

@_checks: check-spelling check-commits
@_tests: test
@_tests: (test "true") (test "false")
@_builds: build-contributors build-website build-readme

# Run all build-related recipes in the justfile
Expand Down Expand Up @@ -44,62 +44,14 @@ check-commits:
check-spelling:
uvx typos

# Test and check that a data package can be created from the template
test:
#!/usr/bin/env bash
test_name="test-data-package"
test_dir="$(pwd)/_temp/$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 github_repo=$test_name \
--data github_user="first-last" \
--data author_given_name="First" \
--data author_family_name="Last" \
--data author_email="first.last@example.com" \
--data review_team="@first-last/developers" \
--data cc0_license="true" \
--data github_board_number=22
# Run checks in the generated test data 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 data package works
echo "Using the template in an existing package command -----------"
rm .cz.toml .copier-answers.yml LICENSE-MIT.md 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 github_repo=$test_name \
--data github_user="first-last" \
--data author_given_name="First" \
--data author_family_name="Last" \
--data author_email="first.last@example.com" \
--data review_team="@first-last/developers" \
--data cc0_license="false" \
--data github_board_number=22
# Test that a data package can be created from the template
test cc0_license="true":
sh ./test-template.sh {{ cc0_license }}

# Test template with the manual questionnaire answers
test-manual:
mkdir -p _temp/manual
uvx copier copy --trust -r HEAD . _temp/manual/test-template

# Clean up any leftover and temporary build files
cleanup:
Expand Down
75 changes: 75 additions & 0 deletions test-template.sh
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copied and adapted from template-python-package

Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/usr/bin/env bash

# Needs one argument:
#
# 1. cc0_license: true or false

# Argument naming -----
cc0_license="${1}"

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

# Set up variables and functions for the test -----
test_name="test-package"
test_dir="$(pwd)/_temp/$cc0_license/$test_name"
template_dir="$(pwd)"

# Needs three arguments:
#
# 1. Template directory
# 2. Destination directory
# 3. VCS ref (commit, branch, tag, etc.)
copy () {
# `-r HEAD` means to copy from the current HEAD, including uncommitted changes
uvx copier copy $1 $2 \
-r HEAD \
--defaults \
--data github_user="first-last" \
--data author_given_name="First" \
--data author_family_name="Last" \
--data author_email="first.last@example.com" \
--data review_team="@first-last/developers" \
--data cc0_license=$cc0_license \
--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: 'cc0_license'='$cc0_license' -----------"
(
cd $test_dir &&
copy $template_dir $test_dir &&
git init -b main &&
git add . &&
git commit --quiet -m "test: initial copy" &&
# Check that recopy works -----
echo "Testing recopy when: 'cc0_license'='$cc0_license' -----------" &&
rm .cz.toml &&
git add . &&
git commit --quiet -m "test: preparing to recopy from the template" &&
uvx copier recopy \
-r HEAD \
--defaults \
--overwrite \
--skip-tasks \
--trust &&
# Check that copying onto an existing package works -----
echo "Testing copy in existing projects when: 'cc0_license'='$cc0_license' -----------" &&
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
)
Loading