Source code for test_autodoc

from argschema.autodoc import process_schemas
from test_first_test import (
    SimpleExtension,
    ExampleRecursiveSchema,
    RecursiveSchema,
    MyShorterExtension,
)
from fields.test_slice import SliceSchema
from argschema.argschema_parser import ArgSchemaParser
import argschema
from test_argschema_parser import MyParser
import rstcheck
import docutils.utils


[docs]def validate_rst_lines(lines, level=docutils.utils.Reporter.WARNING_LEVEL): """validates a set of lines that would make up an rst file using rstcheck Parameters ========== lines: list[str] a list of lines that would compose some restructuredText level: docutils.utils.Reporter.WARNING_LEVEL the reporting level to hold this to Returns ======= None Raises ====== AssertionError If the lines contain any errors above the level """ long_string = "\n".join(lines) results = list(rstcheck.check(long_string, report_level=level)) print(results) assert len(results) == 0
[docs]def test_autodoc(): lines = [] process_schemas(None, "class", "SimpleExtension", SimpleExtension, None, lines) assert ( " This schema is designed to be a schema_type for an ArgSchemaParser object" in lines ) validate_rst_lines(lines)
[docs]def test_autodoc_nested(): lines = [] process_schemas( None, "class", "ExampleRecursiveSchema", ExampleRecursiveSchema, None, lines ) nested_field = next(line for line in lines if "RecursiveSchema`" in line) assert "dict" in nested_field validate_rst_lines(lines)
[docs]def test_autodoc_slice(): lines = [] process_schemas(None, "class", "SliceSchema", SliceSchema, None, lines) slice_field = next(line for line in lines if "argschema.fields.slice.Slice" in line) assert ("unicode" in slice_field) or ("str" in slice_field) validate_rst_lines(lines)
[docs]def test_autodoc_recursive_nested(): lines = [] process_schemas(None, "class", "RecursiveSchema", RecursiveSchema, None, lines) nested_field = next(line for line in lines if "RecursiveSchema`," in line) assert "list" in nested_field validate_rst_lines(lines)
[docs]def test_autodoc_list(): lines = [] process_schemas( None, "class", "MyShorterExtension", MyShorterExtension, None, lines ) list_field = next(line for line in lines if "List" in line) assert "int" in list_field validate_rst_lines(lines)
[docs]def test_autodoc_argschemaparser(): lines = [] process_schemas(None, "class", "ArgSchemaParser", ArgSchemaParser, None, lines) assert " This class takes a ArgSchema as an input to parse inputs" in lines validate_rst_lines(lines)
[docs]def test_autodoc_myparser(): lines = [] process_schemas(None, "class", "MyParser", MyParser, None, lines) assert " This class takes a ArgSchema as an input to parse inputs" in lines default_line = next(line for line in lines if "default schema of type" in line) assert ":class:`~test_argschema_parser.MySchema`" in default_line validate_rst_lines(lines)
[docs]class SchemaWithQuotedDescriptions(argschema.ArgSchema): a = argschema.fields.Int( required=True, description='something that is "quoted" is problematic' )
[docs]class MyModule(argschema.ArgSchemaParser): default_schema = SchemaWithQuotedDescriptions def __init__(self, *args, **kwargs): super(MyModule, self).__init__(*args, **kwargs)
[docs]def test_autodoc_quotes(): lines = [] process_schemas( None, "class", "SchemaWithQuotedDescriptions", SchemaWithQuotedDescriptions, None, lines, ) validate_rst_lines(lines)
[docs]def test_new_default_schema(): lines = [] process_schemas(None, "class", "MyModule", MyModule, None, lines) validate_rst_lines(lines)