generated from jCloud/repository-template
Feat(cli): add base command-line interface #16
No files matched your search
@@ -0,0 +1,34 @@
|
||||
# Copyright 2026 jCloud
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
def test_cli():
|
||||
result = subprocess.run(
|
||||
[
|
||||
sys.executable,
|
||||
'-m',
|
||||
'jcloud_docsgen',
|
||||
'--help'
|
||||
],
|
||||
capture_output = True,
|
||||
text = True
|
||||
)
|
||||
stdout = result.stdout.lower()
|
||||
assert \
|
||||
'usage:' in stdout and \
|
||||
'positional arguments' in stdout and \
|
||||
'options' in stdout and \
|
||||
'--help' in stdout
|
||||
@@ -0,0 +1,20 @@
|
||||
# Module `pkg.module`
|
||||
|
||||
## Function `f`
|
||||
|
||||
Does something.
|
||||
|
||||
|
||||
### Parameters
|
||||
|
||||
| Parameter | Type | Kind | Default value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `a` | `int` | normal | `42` | A parameter. |
|
||||
|
||||
<details><summary><h3 style="display:inline">Docstring</h3></summary>Does something.
|
||||
|
||||
:param a: A parameter.
|
||||
:type a: int
|
||||
|
||||
:return: A string.
|
||||
:rtype: str</details>
|
||||
@@ -0,0 +1,11 @@
|
||||
def f(a: int = 42) -> str:
|
||||
'''
|
||||
Does something.
|
||||
|
||||
:param a: A parameter.
|
||||
:type a: int
|
||||
|
||||
:return: A string.
|
||||
:rtype: str
|
||||
'''
|
||||
...
|
||||
@@ -0,0 +1,34 @@
|
||||
# Copyright 2026 jCloud
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import pytest
|
||||
from jcloud_docsgen.cli.cli import create_argument_parser
|
||||
|
||||
@pytest.mark.parametrize('lang', [
|
||||
'javascript',
|
||||
'Python',
|
||||
'PYTHON'
|
||||
])
|
||||
def test_language_error(lang):
|
||||
parser = create_argument_parser()
|
||||
|
||||
with pytest.raises(SystemExit):
|
||||
parser.parse_args([lang])
|
||||
|
||||
@pytest.mark.parametrize('lang', [
|
||||
'python'
|
||||
])
|
||||
def test_language_success(lang):
|
||||
parser = create_argument_parser()
|
||||
parser.parse_args([lang])
|
||||
@@ -0,0 +1,64 @@
|
||||
# Copyright 2026 jCloud
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import pathlib
|
||||
import pytest
|
||||
from jcloud_docsgen.cli.cli import create_argument_parser, main as cli_main
|
||||
|
||||
def test_sections_error():
|
||||
parser = create_argument_parser()
|
||||
|
||||
with pytest.raises(SystemExit):
|
||||
parser.parse_args([
|
||||
'python',
|
||||
'-s',
|
||||
'param' # correct: `params`
|
||||
])
|
||||
|
||||
with pytest.raises(SystemExit):
|
||||
parser.parse_args([
|
||||
'python',
|
||||
'-s',
|
||||
'params',
|
||||
'docstrng' # correct: `docstring`
|
||||
])
|
||||
|
||||
def test_sections_success():
|
||||
parser = create_argument_parser()
|
||||
|
||||
parser.parse_args([
|
||||
'python',
|
||||
'-s',
|
||||
'params'
|
||||
])
|
||||
parser.parse_args([
|
||||
'python',
|
||||
'-s',
|
||||
'params',
|
||||
'docstring'
|
||||
])
|
||||
|
||||
def test_docs_generation(expectdir):
|
||||
with expectdir('python_project') as output_dir:
|
||||
output_dir: pathlib.Path
|
||||
input_dir = pathlib.Path(__file__).parent / 'python_project/project'
|
||||
cli_main([
|
||||
'python',
|
||||
'-s',
|
||||
'params',
|
||||
'docstring',
|
||||
'-HTo',
|
||||
str(output_dir),
|
||||
str(input_dir)
|
||||
])
|
||||
Reference in new issue
Block a user