Skip to content

Commit 09b3b73

Browse files
refactor: ♻️ move copier test to own file (#156)
# Description This PR moves the copier test to its own file. Moved from #140 . This PR needs a quick review. ## Checklist - [x] Added or updated tests - [x] Updated documentation - [ ] Ran `just run-all` -- won't run until other PRs merged in Co-authored-by: Luke W. Johnston <[email protected]>
1 parent 44a5aeb commit 09b3b73

File tree

2 files changed

+83
-54
lines changed

2 files changed

+83
-54
lines changed

justfile

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -49,60 +49,7 @@ check-spelling:
4949

5050
# 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")
5151
test is_seedcase_project="true" hosting_provider="netlify":
52-
#!/usr/bin/env bash
53-
test_name="test-package-{{ hosting_provider }}"
54-
test_dir="$(pwd)/_temp/{{ is_seedcase_project }}/$test_name"
55-
template_dir="$(pwd)"
56-
commit=$(git rev-parse HEAD)
57-
rm -rf $test_dir
58-
# vcs-ref means the current commit/head, not a tag.
59-
uvx copier copy $template_dir $test_dir \
60-
--vcs-ref=$commit \
61-
--defaults \
62-
--trust \
63-
--data is_seedcase_project={{ is_seedcase_project }} \
64-
--data hosting_provider={{ hosting_provider }} \
65-
--data github_user="first-last" \
66-
--data author_given_name="First" \
67-
--data author_family_name="Last" \
68-
--data author_email="[email protected]" \
69-
--data review_team="@first-last/developers" \
70-
--data github_board_number=22
71-
# Run checks in the generated test Python package
72-
cd $test_dir
73-
git add .
74-
git commit -m "test: initial copy"
75-
just check-python check-spelling
76-
# TODO: Find some way to test the `update` command
77-
# Check that recopy works
78-
echo "Testing recopy command -----------"
79-
rm .cz.toml
80-
git add .
81-
git commit -m "test: preparing to recopy from the template"
82-
uvx copier recopy \
83-
--vcs-ref=$commit \
84-
--defaults \
85-
--overwrite \
86-
--trust
87-
# Check that copying onto an existing Python package works
88-
echo "Using the template in an existing package command -----------"
89-
rm .cz.toml .copier-answers.yml LICENSE.md
90-
git add .
91-
git commit -m "test: preparing to copy onto an existing package"
92-
uvx copier copy \
93-
$template_dir $test_dir \
94-
--vcs-ref=$commit \
95-
--defaults \
96-
--trust \
97-
--overwrite \
98-
--data is_seedcase_project={{ is_seedcase_project }} \
99-
--data hosting_provider={{ hosting_provider }} \
100-
--data github_user="first-last" \
101-
--data author_given_name="First" \
102-
--data author_family_name="Last" \
103-
--data author_email="[email protected]" \
104-
--data review_team="@first-last/developers" \
105-
--data github_board_number=22
52+
sh ./test-template.sh {{ is_seedcase_project }} {{ hosting_provider }}
10653

10754
# Clean up any leftover and temporary build files
10855
cleanup:

test-template.sh

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#!/usr/bin/env bash
2+
3+
# Needs two arguments:
4+
#
5+
# 1. is_seedcase_project: true or false
6+
# 2. hosting_provider: e.g., "github", "gitlab", etc.
7+
8+
# Argument naming -----
9+
is_seedcase_project="${1}"
10+
hosting_provider="${2}"
11+
12+
if [ -z "$is_seedcase_project" ] || [ -z "$hosting_provider" ]; then
13+
echo "Usage: sh $0 <is_seedcase_project> <hosting_provider>"
14+
echo "Example: sh $0 true netlify"
15+
exit 1
16+
fi
17+
18+
# Set up variables and functions for the test -----
19+
test_name="test-package-$hosting_provider"
20+
test_dir="$(pwd)/_temp/$is_seedcase_project/$test_name"
21+
template_dir="$(pwd)"
22+
# Use the latest commit for the template
23+
commit=$(git rev-parse HEAD)
24+
25+
# Needs three arguments:
26+
#
27+
# 1. Template directory
28+
# 2. Destination directory
29+
# 3. VCS ref (commit, branch, tag, etc.)
30+
copy () {
31+
# vcs-ref means the current commit/head, not a tag.
32+
uvx copier copy $1 $2 \
33+
--vcs-ref=$3 \
34+
--defaults \
35+
--data is_seedcase_project=$is_seedcase_project \
36+
--data github_user="first-last" \
37+
--data hosting_provider=$hosting_provider \
38+
--data author_given_name="First" \
39+
--data author_family_name="Last" \
40+
--data author_email="[email protected]" \
41+
--data review_team="@first-last/developers" \
42+
--data github_board_number=22 \
43+
--overwrite \
44+
--skip-tasks \
45+
--trust
46+
}
47+
48+
# Pre-test setup -----
49+
# Remove the leftover directory from previous runs
50+
rm -rf $test_dir
51+
mkdir -p $test_dir
52+
53+
# Check initial creation -----
54+
# TODO: Find some way to test the `update` command
55+
# Any step that fails will exit the script with an error and not continue
56+
echo "Testing copy for new projects when: 'is_seedcase_project'='$is_seedcase_project', 'hosting_provider'='$hosting_provider' -----------"
57+
(
58+
cd $test_dir &&
59+
copy $template_dir $test_dir $commit &&
60+
git init -b main &&
61+
git add . &&
62+
git commit --quiet -m "test: initial copy" &&
63+
# Check that recopy works -----
64+
echo "Testing recopy when: 'is_seedcase_project'='$$is_seedcase_project', 'hosting_provider'='$hosting_provider' -----------" &&
65+
rm .cz.toml &&
66+
git add . &&
67+
git commit --quiet -m "test: preparing to recopy from the template" &&
68+
uvx copier recopy \
69+
--vcs-ref=$commit \
70+
--defaults \
71+
--overwrite \
72+
--skip-tasks \
73+
--trust &&
74+
# Check that copying onto an existing package works -----
75+
echo "Testing copy in existing projects when: 'is_seedcase_project'='$is_seedcase_project', 'hosting_provider'='$hosting_provider' -----------" &&
76+
rm .cz.toml .copier-answers.yml &&
77+
git add . &&
78+
git commit --quiet -m "test: preparing to copy onto an existing package" &&
79+
copy $template_dir $test_dir $commit #&&
80+
# Checks and builds -----
81+
# just run-all
82+
)

0 commit comments

Comments
 (0)