Skip to content

Commit fc09281

Browse files
committed
refactor: ♻️ move template test into own file
1 parent e491055 commit fc09281

File tree

2 files changed

+85
-56
lines changed

2 files changed

+85
-56
lines changed

justfile

Lines changed: 3 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -46,62 +46,9 @@ check-commits:
4646
check-spelling:
4747
uvx typos
4848

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

10653
# Clean up any leftover and temporary build files
10754
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)