From ed231c21894da3520929fc385027d57bbe0485a2 Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Sun, 28 Feb 2021 18:22:56 +0100 Subject: Merging common content between README.rst and index.rst in gettingstarted.rst --- README.md | 155 -------------------------------------------------------------- 1 file changed, 155 deletions(-) delete mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md deleted file mode 100644 index 41cdc4b..0000000 --- a/README.md +++ /dev/null @@ -1,155 +0,0 @@ -# minishell test [![Build Status](https://api.travis-ci.com/cacharle/minishell_test.svg?branch=master)](https://travis-ci.com/cacharle/minishell_test) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/minishell-test)](https://pypi.org/project/minishell-test/) [![Documentation](https://readthedocs.org/projects/minishell-test/badge/?version=latest)](https://minishell-test.readthedocs.io) - -Test for the minishell project of school 42. - -![preview](https://i.imgur.com/98xh2xY.gif) - -## Installation - -### pip - -``` -$ pip3 install minishell-test -``` - -### Manual - -``` -$ git clone https://github.com/cacharle/minishell_test -$ cd minishell_test -$ pip3 install -e . -``` - -## Usage - -``` -$ minishell_test # In your project directory -$ python3 -m minishell_test # If you don't have ~/.brew/bin or ~/.local/bin in your PATH - -$ minishell_test --help -usage: minishell_test [-h] [-p PATH] [-l] [-t COMMAND] [-k] [-r BEGIN END] - [--show-range] [-x] [-v] [-b] [-n] [-m] [-g] - [suite [suite ...]] - -Test for the minishell project of school 42. - -positional arguments: - suite Test suites/group to run. - It tries to be smart and autocomplete the suite name - (e.g ./run int -> ./run preprocess/interpolation) - -optional arguments: - -h, --help show this help message and exit - -p PATH, --path PATH Path to minishell directory - -l, --list Print available test suites - -t COMMAND, --try-cmd COMMAND - Run a custom command like this test would - (the only environment variable passed to your executable are TERM and PATH) - -k, --check-leaks Run valgrind on tests (disable usual comparison with bash) - -r BEGIN END, --range BEGIN END - Range of test index to run (imply --show-index) - --show-range Show test index (useful with --range) - -x, --exit-first Exit on first fail - -v, --verbose Increase verbosity level (e.g -vv == 2) - -b, --bonus Enable bonus tests - -n, --no-bonus Disable bonus tests - -m, --make Make minishell and exit - -g, --pager After running the test, display the result in a pager of your choice - -Made by cacharle - https://cacharle.xyz -``` - -## Test compatibility - -Your executable **must** support the `-c` option which allow to pass command as string. - -```command -$ bash -c 'echo bonjour je suis' -bonjour je suis -$ ./minishell -c 'echo bonjour je suis' -bonjour je suis - -$ bash -c 'ls' -README.md test.sh -$ ./minishell -c 'ls' -README.md test.sh -``` - -With this setup `argv[2]` is what you would usually get in `line` from `get_next_line`. -This allows you to set the prompt to whatever you want. - -### Environement variables - -My test only gives the `PATH` and `TERM` environment variables to your minishell. -**Please check that your project still work with those settings before messaging me on Slack or creating an issue**. -You can test this quickly with the `-t` option (e.g `minishell_test -t 'echo bonjour`). - -## Bonus - -* Force the bonus tests with `$ minishell_test -b` -* Change the `BONUS` variable in [config.py](minishell_test/config.py) to True -* Set the environment variable `MINISHELL_TEST_BONUS` to `yes` - (e.g `echo 'export MINISHELL_TEST_BONUS=yes' >> ~/.zshrc`) - -## Memory leaks - -`$ minishell_test -k`, checkout the `--show-range`, `--range` and `-x` options to help -to select the tests to run since valgrind is really slow. - -## Don't check error messages - -If you don't want to copy bash syntax error message, -you can set the environment variable `MINISHELL_TEST_DONT_CHECK_ERROR_MESSAGE` to `yes`. -It will still test your exit status code but will discard any output on error tests. - -## Linux - -The tester will try to convert to output/status code of bash on Linux to the one on Mac. - ---- - -## Add new tests - -You can find the suites in the [minishell\_test/suites](minishell_test/suites) directory. - -### Add individual test - -In your suite function you can use the `test` function. With the following arguments: - -1. Command to be tested (output and status will be compared to bash) -2. A command to setup the sandbox directory where the tested command will be run -3. List of files to watch (the content of each file will be compared) - -```python -test("echo bonjour je suis") # simple command -test("cat < somefile", setup="echo file content > somefile") # setup -test("ls > somefile", setup="", files=["somefile"]) # watch a file -test("echo $A", exports={"A": "a"}) # export variables - # in the environment -test("echo bonjour", hook=lambda s: s.replace("o", "a")) # pass the shell output - # through a hook function - -test("cat < somefile > otherfile", - setup="echo file content > somefile", - files=["otherfile"]) -``` - -### Add Suite - -A test suite is a group of related tests. - -```python -@suite() # @suite(bonus=True) if it's a bonus suite -def suite_yoursuitename(test): - """ a description of the suite """ - test(...) - test(...) - test(...) -``` - ---- - -## Wildcard (or glob) - -There is a commented glob suite in [minishell\_test/suites/preprocess.py](minishell_test/suites/preprocess.py). -Good luck handling `*'.*'`. -- cgit