test_cmd |pypi|
===============
This is a tool for black-box testing command-line programs simply based on STDIN, STDOUT, and STDERR, **with multiple
CPUs**. A sempahore keeps track of which CPUs are in use; and thus, tests are run in parallel on all CPUs, and new test
runs are dispatched as tests complete (or fail). ``test_cmd`` waits until all tests have completed (either successfully
or failed), and prints failed tests' ``STDERR`` output, as they fail, in real time.
Tutorial
--------
Test cases usually consist of pairs of input and output files, as well as an optional ``tests.json`` file specifying applicable command-line arguments. The input file is piped in via ``STDIN``. If the command being tested emits the expected output file via ``STDOUT``, the test case passes. A file representing an expected ``STDERR`` output can also optionally be specified.
The input/output file pairs must follow this naming pattern::
test-A.in.txt -> test-A.out.txt
test-B.in.txt -> test-B.out.txt, test-B.err.txt
test-C.in.txt -> test-C.out.txt
The file extension (``.txt`` here) can be anything. The file naming pattern is ``*.in*`` for input files, ``*.out*`` for expected output files, and ``*.err*`` for expected error files. The content of the ``*.in.*`` file is piped to the command being tested, and its ``STDOUT`` is compared against the ``*.out*`` file. If a ``*.err.*`` file has been provided, then the command ``STDERR`` is matched against it as well.
For an example of test_cmd in action, see the `pypage project <https://github.com/arjun-menon/pypage>`_, particularly its `tests folder <https://github.com/arjun-menon/pypage/tree/master/tests>`_.
Usage
*****
::
usage: test_cmd.py [-h] [-b] [-d] [-u] [-t] tests_dir cmd ...
Functional Testing Utility for Command-Line Applications
positional arguments:
tests_dir Path to the directory containing test cases
cmd Path to the command to be tested
args The command-line arguments with an ampersand character '@' markingwhere arguments from test.json should be injected
options:
-h, --help show this help message and exit
-b, --bw black & white output
-d, --diff diff output
-u, --to-unix convert CR+LF to LF in cmd output and test files
-t, --rtrim ignore trailing whitespaces at the end of each line as well as trailing newlines
Command-line arguments for test cases can be specified by creating a special file named ``tests.json``, and placing it in the directory containing your test cases. This ``tests.json`` file maps test cases to objects representing command-line arguments for that test case. If a command-line argument is a non-string value (e.g. a complex JavaScript object), the argument is stringified (with Python's ``json.dumps``), and passed in as JSON.
.. |pypi| image:: https://badge.fury.io/py/test_cmd.svg
:target: https://pypi.python.org/pypi/test_cmd
Raw data
{
"_id": null,
"home_page": "https://github.com/arjun-menon/test_cmd",
"name": "test-cmd",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "command line terminal functional black box testing arguments stdin stdout stderr",
"author": "Arjun G. Menon",
"author_email": "contact@arjungmenon.com",
"download_url": "https://files.pythonhosted.org/packages/aa/7a/cefe5c04af32bd8b2f64fa5353b8ade65076b3262a9c82cd8d4a51c7697d/test_cmd-2.0.6.tar.gz",
"platform": null,
"description": "test_cmd |pypi|\n===============\nThis is a tool for black-box testing command-line programs simply based on STDIN, STDOUT, and STDERR, **with multiple\nCPUs**. A sempahore keeps track of which CPUs are in use; and thus, tests are run in parallel on all CPUs, and new test\nruns are dispatched as tests complete (or fail). ``test_cmd`` waits until all tests have completed (either successfully\nor failed), and prints failed tests' ``STDERR`` output, as they fail, in real time.\n\nTutorial\n--------\nTest cases usually consist of pairs of input and output files, as well as an optional ``tests.json`` file specifying applicable command-line arguments. The input file is piped in via ``STDIN``. If the command being tested emits the expected output file via ``STDOUT``, the test case passes. A file representing an expected ``STDERR`` output can also optionally be specified.\n\nThe input/output file pairs must follow this naming pattern::\n\n test-A.in.txt -> test-A.out.txt\n test-B.in.txt -> test-B.out.txt, test-B.err.txt\n test-C.in.txt -> test-C.out.txt\n\nThe file extension (``.txt`` here) can be anything. The file naming pattern is ``*.in*`` for input files, ``*.out*`` for expected output files, and ``*.err*`` for expected error files. The content of the ``*.in.*`` file is piped to the command being tested, and its ``STDOUT`` is compared against the ``*.out*`` file. If a ``*.err.*`` file has been provided, then the command ``STDERR`` is matched against it as well.\n\nFor an example of test_cmd in action, see the `pypage project <https://github.com/arjun-menon/pypage>`_, particularly its `tests folder <https://github.com/arjun-menon/pypage/tree/master/tests>`_.\n\nUsage\n*****\n::\n\n usage: test_cmd.py [-h] [-b] [-d] [-u] [-t] tests_dir cmd ...\n\n Functional Testing Utility for Command-Line Applications\n\n positional arguments:\n tests_dir Path to the directory containing test cases\n cmd Path to the command to be tested\n args The command-line arguments with an ampersand character '@' markingwhere arguments from test.json should be injected\n\n options:\n -h, --help show this help message and exit\n -b, --bw black & white output\n -d, --diff diff output\n -u, --to-unix convert CR+LF to LF in cmd output and test files\n -t, --rtrim ignore trailing whitespaces at the end of each line as well as trailing newlines\n\nCommand-line arguments for test cases can be specified by creating a special file named ``tests.json``, and placing it in the directory containing your test cases. This ``tests.json`` file maps test cases to objects representing command-line arguments for that test case. If a command-line argument is a non-string value (e.g. a complex JavaScript object), the argument is stringified (with Python's ``json.dumps``), and passed in as JSON.\n\n.. |pypi| image:: https://badge.fury.io/py/test_cmd.svg\n :target: https://pypi.python.org/pypi/test_cmd\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Tool for black-box testing command-line programs using STDIN, STDOUT and STDERR, with multiple CPUs",
"version": "2.0.6",
"project_urls": {
"Download": "https://github.com/arjun-menon/test_cmd/archive/v2.0.6.tar.gz",
"Homepage": "https://github.com/arjun-menon/test_cmd"
},
"split_keywords": [
"command",
"line",
"terminal",
"functional",
"black",
"box",
"testing",
"arguments",
"stdin",
"stdout",
"stderr"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "274cc643cfdd744a742d47a7e9b17f917a44a31c751adfa7a03ba974133617a6",
"md5": "20b1b922541a3818f9098ef01eced881",
"sha256": "0c0615e53de9b18b5d926966cbf386194d70cf6ef86216166537b1ebfa10e2c0"
},
"downloads": -1,
"filename": "test_cmd-2.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "20b1b922541a3818f9098ef01eced881",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10193,
"upload_time": "2023-09-26T15:52:51",
"upload_time_iso_8601": "2023-09-26T15:52:51.519640Z",
"url": "https://files.pythonhosted.org/packages/27/4c/c643cfdd744a742d47a7e9b17f917a44a31c751adfa7a03ba974133617a6/test_cmd-2.0.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "aa7acefe5c04af32bd8b2f64fa5353b8ade65076b3262a9c82cd8d4a51c7697d",
"md5": "15630bca248431e643ec9698a0df075f",
"sha256": "04861d7a9e9defd8d2021abe6d96960b459cd105360f711bfb1362e2a8a5226c"
},
"downloads": -1,
"filename": "test_cmd-2.0.6.tar.gz",
"has_sig": false,
"md5_digest": "15630bca248431e643ec9698a0df075f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9532,
"upload_time": "2023-09-26T15:52:52",
"upload_time_iso_8601": "2023-09-26T15:52:52.734386Z",
"url": "https://files.pythonhosted.org/packages/aa/7a/cefe5c04af32bd8b2f64fa5353b8ade65076b3262a9c82cd8d4a51c7697d/test_cmd-2.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-26 15:52:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "arjun-menon",
"github_project": "test_cmd",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "test-cmd"
}