Split man.test to make tests pass without oniguruma (#2722)

This commit is contained in:
itchyny authored and GitHub committed 2023-07-18 08:17:21 +09:00
1 parent 4b3090a9ab
commit 9e4c71558a
11 files changed
+91 -71

No files matched your search

+6 -6
View File
@@ -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
View File
@@ -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)