• Relock dependencies

Version 0.20.0 (May. 07, 2024)#

🚨 Attention: * Printable UTF-8 isn’t escaped by default any more. Use --escape7bit

to get the old behaviour. (#232)


  • Relock dependencies

  • Update github actions

Version 0.19.0 (March. 23, 2024)#

  • Fix cluttering site-packages root (#239).

    ❤️ Big thanks to Haelwenn Monnier for the PR!


  • Relock dependencies

  • Fix outdated project reference

  • Update developer documentation

Version 0.18.0 (Feb. 10, 2024)#


  • Relock dependencies

  • Fixes to prysk integration tests

  • Update contributors

Version 0.17.0 (Dec. 30, 2023)#

  • Fix prysk test file lookup for explicitly specified hidden files/directories
  • Update pytest-prysk dependency requirement

Version 0.16.0 (Nov. 24, 2023)#

  • Extract pytest plugin into it’s own package, for more details see this comment.


  • Fix typo in test

  • Relock dev dependencies

  • Update dependabot configuration to do group updates

  • Update contributors list

Version 0.15.2 (Nov. 4, 2023)#

  • Add error handling for cleaning up files on Windows


  • Add github issue templates

  • Update lockfile

Version 0.15.1 (May. 1, 2023)#

  • Prevent prysk from crashing on platforms which do not support os.environb

  • Update dependencies

Version 0.15.0 (April. 26, 2023)#

  • Add support for DOS to Unix line endings (rn to n)

  • Updated Contributors (Hall Of Fame!)

Version 0.14.0 (April. 16, 2023)#

  • Add support for $TMPDIR variable substitution in test output

  • Update dependencies

Version 0.13.1 (March. 4, 2023)#

  • Fix os.environ restore after leaving context

  • Narrow scope of contexts for test run

  • Fix pytest-plugin error message

  • Fix typo in pytest-plugin documentation

  • Add literal character in docs

Version 0.13.0 (Feb. 16, 2023)#

  • Added prysk pytest-plugin

Version 0.12.2 (June. 15, 2022)#

  • Fix prysk test file lookup for relative paths

  • Refactor xunit module

  • Refactor test module

  • Remove run module

  • Fix pylint warnings in cli module

  • Fix pylint warnings in run module

  • Fix pylint warnings in process module

  • Refactor _Cli class

Version 0.12.1 (May. 29, 2022)#

  • Fix version output of cli

  • Simplify prysk_news/changelog

Version 0.12.0 (May. 29, 2022)#

  • Add color support to cli interface

  • Port optparse based cli parser to argparse

  • Update dependencies

  • Update dev dependencies

  • Update dependencies of github actions

Version 0.11.0 (February. 11, 2022)#

  • Reorder publishing steps

  • Fix release notes of 0.10.0 release

Version 0.10.0 (February. 11, 2022)#

  • Add version sanity check

  • Add support for automated releases

  • Add support for retrieving project version from pyproject.toml

Version 0.9.0 (February. 11, 2022)#

  • Add support for automated releases

  • Add support for retrieving project version from pyproject.toml

Version 0.9 (Jan. 29, 2022)#

  • Add basic documentation

  • Release new version to account and cope with accidentally deleted (untagged prysk version 0.8)


    once a version is published on pipy it can’t be reused even if it has been deleted (see file name reuse).

Version 0.8 (Jan. 25, 2022)#

  • Rename cram to prysk


    Also semantically relevant names have been renamed, e.g. env var CRAMTMP is now PRYSK_TEMP


Version 0.7 (Feb. 24, 2016)#

  • Added the -d/--debug flag that disables diffing of expected/actual output and instead passes through script output to stdout/stderr.

  • Added the --shell-opts flag for specifying flags to invoke the shell with. By setting --shell-opts='-x' and --debug together, this can be used to see shell commands as they’re run and their output in real time which can be useful for debugging slow or hanging tests.

  • Added xUnit XML output support (for better integration of test results with Bamboo and other continuous integration tools).

  • Added support for using (esc) on expected out lines that aren’t automatically escaped in actual output.

  • Added the $TESTSHELL environment variable. This allows a test to portably check what shell it was invoked with.

  • Added an error message for when no tests are found in a directory.

  • Changed Makefile to install into /usr/local by default.

  • Simplified the Makefile’s targets. The targets available now are all, build, check/test, clean, dist, install, and quicktest (for running the test suite without checking test coverage).

  • Fixed non-ASCII strings not being escaped with (esc) on Python 3.

  • Fixed a crash on tests that don’t have a trailing newline.

  • Fixed a crash when using set -x with zsh.

Version 0.6 (Aug. 1, 2013)#

  • Added the long option --preserve-env for -E.

  • Added support for specifying options in .cramrc (configurable with the CRAMRC environment variable).

  • Added a --shell option to change the shell tests are run with. Contributed by Kamil Kisiel.

  • Added Arch Linux package metadata (in contrib/). Contributed by Andrey Vlasovskikh.

  • Fixed shell commands unintentionally inheriting Python’s SIGPIPE handler (causing commands that close pipes to print broken pipe messages).

  • Fixed EPIPE under PyPy when applying patches in --interactive mode.

  • Added TESTFILE test environment variable (set to the name of the current test).

  • Fixed GNU patch 2.7 compatibility by using relative paths instead of absolute paths. Contributed by Douglas Creager.

  • Fixed name clashes in temporary test directories (e.g., when running two tests with the same name in different folders).

  • Backwards compatibility: Fixed improper usage of the subprocess library under Python 3. This fixes Python 3.3 support, but breaks support for Python 3.1-3.2.3 due to a bug in Python. If you’re using Python 3.0-3.2, you must upgrade to Python 3.2.4 or newer.

Version 0.5 (Jan. 8, 2011)#

  • The test format has changed: Matching output not ending in a newline now requires the (no-eol) keyword instead of ending the line in %.

  • Matching output containing unprintable characters now requires the (esc) keyword. Real output containing unprintable characters will automatically receive (esc).

  • If an expected line matches its real output line exactly, special matching like (re) or (glob) will be ignored.

  • Regular expressions ending in a trailing backslash are now considered invalid.

  • Added an --indent option for changing the default amount of indentation required to specify commands and output.

  • Added support for specifying command line options in the CRAM environment variable.

  • The --quiet and --verbose options can now be used together.

  • When running Cram under Python 3, Unicode-specific line break characters will no longer be parsed as newlines.

  • Tests are no longer required to end in a trailing newline.

Version 0.4 (Sep. 28, 2010)#

  • The test format has changed: Output lines containing regular expressions must now end in (re) or they’ll be matched literally. Lines ending with keywords are matched literally first, however.

  • Regular expressions are now matched from beginning to end. In other words \d (re) is matched as ^\d$.

  • In addition to (re), (glob) has been added. It supports *, ?, and escaping both characters (and backslashes) using \.

  • Environment settings have changed: The -D flag has been removed, $TESTDIR is now set to the directory containing the .t file, and $CRAMTMP is set to the test runner’s temporary directory.

  • -i/--interactive now requires patch(1). Instead of .err files replacing .t files during merges, diffs are applied using patch(1). This prevents matching regular expressions and globs from getting clobbered.

  • Previous .err files are now removed when tests pass.

  • Cram now exits with return code 1 if any tests failed.

  • If a test exits with return code 80, it’s considered a skipped a test. This is useful for intentionally disabling tests when they only work on certain platforms or in certain settings.

  • The number of tests, the number of skipped tests, and the number of failed tests are now printed after all tests are finished.

  • Added -q/--quiet to suppress diff output.

  • Added contrib/cram.vim syntax file for Vim. Contributed by Steve Losh.

Version 0.3 (Sep. 20, 2010)#

  • Implemented resetting of common environment variables. This behavior can be disabled using the -E flag.

  • Changed the test runner to first make its own overall random temporary directory, make tmp inside of it and set TMPDIR, etc. to its path, and run each test with a random temporary working directory inside of that.

  • Added --keep-tmpdir. Temporary directories are named by test filename (along with a random string).

  • Added -i/--interactive to merge actual output back to into tests interactively.

  • Added ability to match command output not ending in a newline by suffixing output in the test with %.

Version 0.2 (Sep. 19, 2010)#

  • Changed the test runner to run tests with a random temporary working directory.

Version 0.1 (Sep. 19, 2010)#

  • Initial release.