|
10 | 10 | # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11 | 11 | # ANY KIND, either express or implied. See the License for the specific
|
12 | 12 | # language governing permissions and limitations under the License.
|
13 |
| -from nose.tools import assert_true |
| 13 | +import pytest |
14 | 14 | import botocore.session
|
15 | 15 | from botocore import xform_name
|
16 | 16 | from botocore.exceptions import DataNotFoundError
|
|
19 | 19 | from boto3.docs.service import ServiceDocumenter
|
20 | 20 |
|
21 | 21 |
|
22 |
| -def test_docs_generated(): |
23 |
| - """Verify we can generate the appropriate docs for all services""" |
| 22 | +@pytest.fixture |
| 23 | +def botocore_session(): |
| 24 | + return botocore.session.get_session() |
| 25 | + |
| 26 | +@pytest.fixture |
| 27 | +def boto3_session(): |
| 28 | + return boto3.Session(region_name='us-east-1') |
| 29 | + |
| 30 | +def all_services(): |
24 | 31 | botocore_session = botocore.session.get_session()
|
25 | 32 | session = boto3.Session(region_name='us-east-1')
|
26 | 33 | for service_name in session.get_available_services():
|
27 |
| - generated_docs = ServiceDocumenter( |
28 |
| - service_name, session=session).document_service() |
29 |
| - generated_docs = generated_docs.decode('utf-8') |
30 |
| - client = boto3.client(service_name, 'us-east-1') |
| 34 | + yield service_name |
| 35 | + |
| 36 | + |
| 37 | +@pytest.fixture |
| 38 | +def available_resources(): |
| 39 | + session = boto3.Session(region_name='us-east-1') |
| 40 | + return session.get_available_resources() |
| 41 | + |
31 | 42 |
|
32 |
| - # Check that all of the services have the appropriate title |
33 |
| - yield (_assert_has_title, generated_docs, client) |
| 43 | +@pytest.mark.parametrize('service_name', all_services()) |
| 44 | +def test_documentation( |
| 45 | + boto3_session, botocore_session, available_resources, service_name |
| 46 | +): |
| 47 | + generated_docs = ServiceDocumenter( |
| 48 | + service_name, session=boto3_session).document_service() |
| 49 | + generated_docs = generated_docs.decode('utf-8') |
| 50 | + client = boto3.client(service_name, 'us-east-1') |
34 | 51 |
|
35 |
| - # Check that all services have the client documented. |
36 |
| - yield (_assert_has_client_documentation, generated_docs, service_name, |
37 |
| - client) |
| 52 | + # Check that all of the services have the appropriate title |
| 53 | + _assert_has_title(generated_docs, client) |
38 | 54 |
|
39 |
| - # If the client can paginate, make sure the paginators are documented. |
40 |
| - try: |
41 |
| - paginator_model = botocore_session.get_paginator_model( |
| 55 | + |
| 56 | + # Check that all services have the client documented. |
| 57 | + _assert_has_client_documentation(generated_docs, service_name, client) |
| 58 | + |
| 59 | + |
| 60 | + #If the service has resources, make sure the service resource |
| 61 | + #is at least documented. |
| 62 | + if service_name in available_resources: |
| 63 | + |
| 64 | + resource = boto3.resource(service_name, 'us-east-1') |
| 65 | + _assert_has_resource_documentation( |
| 66 | + generated_docs, service_name, resource |
| 67 | + ) |
| 68 | + |
| 69 | + # If the client can paginate, make sure the paginators are documented. |
| 70 | + try: |
| 71 | + paginator_model = botocore_session.get_paginator_model( |
42 | 72 | service_name)
|
43 |
| - yield (_assert_has_paginator_documentation, generated_docs, |
44 |
| - service_name, client, |
45 |
| - sorted(paginator_model._paginator_config)) |
46 |
| - except DataNotFoundError: |
47 |
| - pass |
48 |
| - |
49 |
| - # If the client has waiters, make sure the waiters are documented |
50 |
| - if client.waiter_names: |
51 |
| - waiter_model = botocore_session.get_waiter_model(service_name) |
52 |
| - yield (_assert_has_waiter_documentation, generated_docs, |
53 |
| - service_name, client, waiter_model) |
54 |
| - |
55 |
| - # If the service has resources, make sure the service resource |
56 |
| - # is at least documented. |
57 |
| - if service_name in session.get_available_resources(): |
58 |
| - resource = boto3.resource(service_name, 'us-east-1') |
59 |
| - yield (_assert_has_resource_documentation, generated_docs, |
60 |
| - service_name, resource) |
| 73 | + _assert_has_paginator_documentation( |
| 74 | + generated_docs, service_name, client, |
| 75 | + sorted(paginator_model._paginator_config) |
| 76 | + ) |
| 77 | + except DataNotFoundError: |
| 78 | + pass |
| 79 | + |
| 80 | + |
| 81 | + # If the client has waiters, make sure the waiters are documented. |
| 82 | + if client.waiter_names: |
| 83 | + waiter_model = botocore_session.get_waiter_model(service_name) |
| 84 | + _assert_has_waiter_documentation( |
| 85 | + generated_docs, service_name, client, waiter_model |
| 86 | + ) |
61 | 87 |
|
62 | 88 |
|
63 | 89 | def _assert_contains_lines_in_order(lines, contents):
|
64 | 90 | for line in lines:
|
65 |
| - assert_true(line in contents) |
| 91 | + assert line in contents |
66 | 92 | beginning = contents.find(line)
|
67 | 93 | contents = contents[(beginning + len(line)):]
|
68 | 94 |
|
|
0 commit comments