Skip to main content

Test copier templates

Project description

copier-template-tester

./ctt-logo.png

Parametrize copier templates to test for syntax errors, check the expected output, and to check against copier versions.

Note that ctt only tests the copier copy operation and doesn't check the update behavior and any version-specific logic that your template may contain because of how quickly those tests become complex.

Usage

Configuration File

When creating a copier template repository, I recommend following the nested "subdirectory" approach so that the directory looks like this:

└── template_dir
│   └── {{ _copier_conf.answers_file }}.jinja
├── README.md
├── copier.yml
└── ctt.toml

Create a new ctt.toml file in the top-level directory of your copier repository. Populate the file to look like the below example.

# Specify shared data across all 'output' destinations
# Note that the copier.yml defaults are used whenever the key is not set in this file
[defaults]
project_name = "placeholder"
copyright_year = 2022

# Parametrize each output with a relative path and optionally any values to override
[output.".ctt/defaults"]

[output.".ctt/no_all"]
package_name = "testing-no-all"
include_all = false

Pre-Commit Hook

First, add this section to your .pre-commit-config.yml file:

repos:
  - repo: https://github.com/KyleKing/copier-template-tester
    rev: main
    hooks:
      - id: copier-template-tester

Install and update to the latest revision:

pre-commit autoupdate

The run with pre-commit:

pre-commit run --all-files copier-template-tester

pipx

You can also try ctt as a CLI tool by installing with pipx:

pipx install copier-template-tester

cd ~/your/copier/project
ctt

More Examples

For more example code, see the scripts directory or the tests.

Project Status

See the Open Issues and/or the CODE_TAG_SUMMARY. For release history, see the CHANGELOG.

Contributing

We welcome pull requests! For your pull request to be accepted smoothly, we suggest that you first open a GitHub issue to discuss your idea. For resources on getting started with the code base, see the below documentation:

Code of Conduct

We follow the Contributor Covenant Code of Conduct.

Open Source Status

We try to reasonably meet most aspects of the "OpenSSF scorecard" from Open Source Insights

Responsible Disclosure

If you have any security issue to report, please contact the project maintainers privately. You can reach us at dev.act.kyle@gmail.com.

License

LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

copier_template_tester-2.1.4.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

copier_template_tester-2.1.4-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file copier_template_tester-2.1.4.tar.gz.

File metadata

  • Download URL: copier_template_tester-2.1.4.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.6 Darwin/24.1.0

File hashes

Hashes for copier_template_tester-2.1.4.tar.gz
Algorithm Hash digest
SHA256 1baaa74c81d5d286f508e285e23bc31ea7644ecd47d53dd0161471367ce82162
MD5 237751b685bc72280f80cd01097c94ec
BLAKE2b-256 3779ee40a735d0b3bddb00911a22d502d6cefe8d11d0f20308a600e2861714cc

See more details on using hashes here.

File details

Details for the file copier_template_tester-2.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for copier_template_tester-2.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 41f8bb19f1c57de4005f63a1abc24d1720ec1ef9501b7e79dd4a8d22e4bea9c1
MD5 25eb06ec5103208d826a1d035b76b13a
BLAKE2b-256 790eecd1bf7ba687d074aa100ea467873432470adabddb777bf51ec60f9850b3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page