diff --git a/justfile b/justfile index c771a9f..150746f 100644 --- a/justfile +++ b/justfile @@ -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 @@ -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: diff --git a/test-template.sh b/test-template.sh new file mode 100644 index 0000000..c16e1bb --- /dev/null +++ b/test-template.sh @@ -0,0 +1,74 @@ +#!/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 " + 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 two arguments: +# +# 1. Template directory +# 2. Destination directory +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 +)