forked from mirrors/gecko-dev
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly. To produce this patch I did all of the following: 1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions. 2. Run ./mach lint --linter black --fix 3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks. 4. Make some ad-hoc manual updates to `testing/marionette/client/setup.py`, `testing/marionette/harness/setup.py`, and `testing/firefox-ui/harness/setup.py`, which have hard-coded regexes that break after the reformat. 5. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023). # ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D94045
150 lines
5.4 KiB
Python
150 lines
5.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
"""
|
|
There are some basic tests run as part of the Decision task to make sure
|
|
documentation exists for taskgraph functionality.
|
|
These functions are defined in taskgraph.generator and call
|
|
taskgraph.util.verify.verify_docs with different parameters to do the
|
|
actual checking.
|
|
"""
|
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
import os.path
|
|
|
|
import pytest
|
|
import taskgraph.util.verify
|
|
from taskgraph.util.verify import DocPaths, verify_docs
|
|
from taskgraph import GECKO
|
|
from mozunit import main
|
|
|
|
FF_DOCS_BASE = os.path.join(GECKO, "taskcluster", "docs")
|
|
EXTRA_DOCS_BASE = os.path.abspath(os.path.join(os.path.dirname(__file__), "docs"))
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_single_doc_path(monkeypatch):
|
|
"""Set a single path containing documentation"""
|
|
mocked_documentation_paths = DocPaths()
|
|
mocked_documentation_paths.add(FF_DOCS_BASE)
|
|
monkeypatch.setattr(
|
|
taskgraph.util.verify, "documentation_paths", mocked_documentation_paths
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_two_doc_paths(monkeypatch):
|
|
"""Set two paths containing documentation"""
|
|
mocked_documentation_paths = DocPaths()
|
|
mocked_documentation_paths.add(FF_DOCS_BASE)
|
|
mocked_documentation_paths.add(EXTRA_DOCS_BASE)
|
|
monkeypatch.setattr(
|
|
taskgraph.util.verify, "documentation_paths", mocked_documentation_paths
|
|
)
|
|
|
|
|
|
@pytest.mark.usefixtures("mock_single_doc_path")
|
|
class PyTestSingleDocPath:
|
|
"""
|
|
Taskcluster documentation for Firefox is in a single directory. Check the tests
|
|
running at build time to make sure documentation exists, actually work themselves.
|
|
"""
|
|
|
|
def test_heading(self):
|
|
"""
|
|
Look for a headings in filename matching identifiers. This is used when making sure
|
|
documentation exists for kinds and attributes.
|
|
"""
|
|
verify_docs(
|
|
filename="kinds.rst",
|
|
identifiers=["build", "packages", "toolchain"],
|
|
appearing_as="heading",
|
|
)
|
|
with pytest.raises(Exception, match="missing from doc file"):
|
|
verify_docs(
|
|
filename="kinds.rst",
|
|
identifiers=["build", "packages", "badvalue"],
|
|
appearing_as="heading",
|
|
)
|
|
|
|
def test_inline_literal(self):
|
|
"""
|
|
Look for inline-literals in filename. Used when checking documentation for decision
|
|
task parameters and run-using functions.
|
|
"""
|
|
verify_docs(
|
|
filename="parameters.rst",
|
|
identifiers=["base_repository", "head_repository", "owner"],
|
|
appearing_as="inline-literal",
|
|
)
|
|
with pytest.raises(Exception, match="missing from doc file"):
|
|
verify_docs(
|
|
filename="parameters.rst",
|
|
identifiers=["base_repository", "head_repository", "badvalue"],
|
|
appearing_as="inline-literal",
|
|
)
|
|
|
|
|
|
@pytest.mark.usefixtures("mock_two_doc_paths")
|
|
class PyTestTwoDocPaths:
|
|
"""
|
|
Thunderbird extends Firefox's taskgraph with additional kinds. The documentation
|
|
for Thunderbird kinds are in its repository, and documentation_paths will have
|
|
two places to look for files. Run the same tests as for a single documentation
|
|
path, and cover additional possible scenarios.
|
|
"""
|
|
|
|
def test_heading(self):
|
|
"""
|
|
Look for a headings in filename matching identifiers. This is used when
|
|
making sure documentation exists for kinds and attributes.
|
|
The first test looks for headings that are all within the first doc path,
|
|
the second test is new and has a heading found in the second path.
|
|
The final check has a identifier that will not match and should
|
|
produce an error.
|
|
"""
|
|
verify_docs(
|
|
filename="kinds.rst",
|
|
identifiers=["build", "packages", "toolchain"],
|
|
appearing_as="heading",
|
|
)
|
|
verify_docs(
|
|
filename="kinds.rst",
|
|
identifiers=["build", "packages", "newkind"],
|
|
appearing_as="heading",
|
|
)
|
|
with pytest.raises(Exception, match="missing from doc file"):
|
|
verify_docs(
|
|
filename="kinds.rst",
|
|
identifiers=["build", "packages", "badvalue"],
|
|
appearing_as="heading",
|
|
)
|
|
|
|
def test_inline_literal(self):
|
|
"""
|
|
Look for inline-literals in filename. Used when checking documentation for decision
|
|
task parameters and run-using functions. As with the heading tests,
|
|
the second check looks for an identifier in the added documentation path.
|
|
"""
|
|
verify_docs(
|
|
filename="parameters.rst",
|
|
identifiers=["base_repository", "head_repository", "owner"],
|
|
appearing_as="inline-literal",
|
|
)
|
|
verify_docs(
|
|
filename="parameters.rst",
|
|
identifiers=["base_repository", "head_repository", "newparameter"],
|
|
appearing_as="inline-literal",
|
|
)
|
|
with pytest.raises(Exception, match="missing from doc file"):
|
|
verify_docs(
|
|
filename="parameters.rst",
|
|
identifiers=["base_repository", "head_repository", "badvalue"],
|
|
appearing_as="inline-literal",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|