Split man.test to make tests pass without oniguruma (#2722)
This commit is contained in:
1 parent
4b3090a9ab
commit
9e4c71558a
11 files changed
+91
-71
No files matched your search
+6
-6
@@ -5,22 +5,22 @@ The jq website, manpages and some of the tests are generated from this
|
||||
directory. The manual is a YAML file in `content/manual`.
|
||||
|
||||
To build the documentation (including building the jq manpage), you'll
|
||||
need python3 and pipenv. You can install pipenv like so:
|
||||
need `python3` and `pipenv`. You can install `pipenv` like so:
|
||||
|
||||
pip install pipenv
|
||||
|
||||
Though, you may need to say pip3 instead, depending on your system. Once
|
||||
you have pipenv installed, you can install the dependencies by running
|
||||
`pipenv install` from the `docs` directory.
|
||||
Though, you may need to say `pip3` instead, depending on your system. Once
|
||||
you have `pipenv` installed, you can install the dependencies by running
|
||||
`pipenv sync` from the `docs` directory.
|
||||
|
||||
Also, you may need to run `virtualenv -p /usr/bin/python3 venv/` and
|
||||
then `source venv/bin/activate`, and only then `pipenv install`.
|
||||
then `source venv/bin/activate`, and only then `pipenv sync`.
|
||||
|
||||
Once this is done, rerun `./configure` in the jq root directory and then
|
||||
the Makefile will be able to generate the jq manpage. You can also just
|
||||
run `pipenv run build_manpage.py` in the `docs` directory to build the
|
||||
`jq.1` page manually, and `pipenv run build_mantests.py` to build the
|
||||
contents of `tests/man.test`.
|
||||
contents of `tests/man.test` and `tests/manonig.test`.
|
||||
|
||||
To build the website, run `pipenv run ./build_website.py` from inside
|
||||
the `docs` directory.
|
||||
+14
-6
@@ -1,13 +1,21 @@
|
||||
#!/usr/bin/env python3
|
||||
import yaml
|
||||
import re
|
||||
|
||||
with open("content/manual/manual.yml") as f:
|
||||
manual = yaml.safe_load(f)
|
||||
regex_program_pattern = re.compile(
|
||||
r'\b(?:test|match|capture|scan|split|splits|sub|gsub)\s*\(')
|
||||
|
||||
with open('content/manual/manual.yml') as source, \
|
||||
open('../tests/man.test', 'w') as man, \
|
||||
open('../tests/manonig.test', 'w') as manonig:
|
||||
manual = yaml.safe_load(source)
|
||||
for section in manual.get('sections', []):
|
||||
for entry in section.get('entries', []):
|
||||
for example in entry.get('examples', []):
|
||||
print(example.get('program', '').replace('\n', ' '))
|
||||
print(example.get('input', ''))
|
||||
program = example.get('program', '').replace('\n', ' ')
|
||||
out = manonig if regex_program_pattern.search(program) else man
|
||||
print(program, file=out)
|
||||
print(example.get('input', ''), file=out)
|
||||
for s in example.get('output', []):
|
||||
print(s)
|
||||
print('')
|
||||
print(s, file=out)
|
||||
print('', file=out)
|
||||
Reference in new issue
Block a user