diff options
Diffstat (limited to 'noxfile.py')
-rw-r--r-- | noxfile.py | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 0000000..efb367e --- /dev/null +++ b/noxfile.py @@ -0,0 +1,169 @@ +# Copyright 2019 Google LLC +# +# 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 os +import pathlib +import shutil + +import nox + +CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute() + +BLACK_VERSION = "black==19.3b0" +BLACK_PATHS = [ + "google", + "tests", + "tests_async", + "noxfile.py", + "setup.py", + "docs/conf.py", +] + + +@nox.session(python="3.7") +def lint(session): + session.install("flake8", "flake8-import-order", "docutils", BLACK_VERSION) + session.install("-e", ".") + session.run("black", "--check", *BLACK_PATHS) + session.run( + "flake8", + "--import-order-style=google", + "--application-import-names=google,tests,system_tests", + "google", + "tests", + "tests_async", + ) + session.run( + "python", "setup.py", "check", "--metadata", "--restructuredtext", "--strict" + ) + + +@nox.session(python="3.8") +def blacken(session): + """Run black. + Format code to uniform standard. + The Python version should be consistent with what is + supplied in the Python Owlbot postprocessor. + + https://github.com/googleapis/synthtool/blob/master/docker/owlbot/python/Dockerfile + """ + session.install(BLACK_VERSION) + session.run("black", *BLACK_PATHS) + + +@nox.session(python=["3.6", "3.7", "3.8", "3.9", "3.10"]) +def unit(session): + constraints_path = str( + CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" + ) + session.install("-r", "testing/requirements.txt", "-c", constraints_path) + session.install("-e", ".", "-c", constraints_path) + session.run( + "pytest", + f"--junitxml=unit_{session.python}_sponge_log.xml", + "--cov=google.auth", + "--cov=google.oauth2", + "--cov=tests", + "--cov-report=term-missing", + "tests", + "tests_async", + ) + + +@nox.session(python=["2.7"]) +def unit_prev_versions(session): + constraints_path = str( + CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" + ) + session.install("-r", "testing/requirements.txt", "-c", constraints_path) + session.install("-e", ".", "-c", constraints_path) + session.run( + "pytest", + f"--junitxml=unit_{session.python}_sponge_log.xml", + "--cov=google.auth", + "--cov=google.oauth2", + "--cov=tests", + "tests", + ) + + +@nox.session(python="3.7") +def cover(session): + session.install("-r", "testing/requirements.txt") + session.install("-e", ".") + session.run( + "pytest", + "--cov=google.auth", + "--cov=google.oauth2", + "--cov=tests", + "--cov=tests_async", + "--cov-report=term-missing", + "tests", + "tests_async", + ) + session.run("coverage", "report", "--show-missing", "--fail-under=100") + + +@nox.session(python="3.7") +def docgen(session): + session.env["SPHINX_APIDOC_OPTIONS"] = "members,inherited-members,show-inheritance" + session.install("-r", "testing/requirements.txt") + session.install("sphinx") + session.install("-e", ".") + session.run("rm", "-r", "docs/reference") + session.run( + "sphinx-apidoc", + "--output-dir", + "docs/reference", + "--separate", + "--module-first", + "google", + ) + + +@nox.session(python="3.8") +def docs(session): + """Build the docs for this library.""" + + session.install("-e", ".[aiohttp]") + session.install("sphinx", "alabaster", "recommonmark", "sphinx-docstring-typing") + + shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True) + session.run( + "sphinx-build", + "-T", # show full traceback on exception + "-W", # warnings as errors + "-N", # no colors + "-b", + "html", + "-d", + os.path.join("docs", "_build", "doctrees", ""), + os.path.join("docs", ""), + os.path.join("docs", "_build", "html", ""), + ) + + +@nox.session(python="pypy") +def pypy(session): + session.install("-r", "test/requirements.txt") + session.install("-e", ".") + session.run( + "pytest", + f"--junitxml=unit_{session.python}_sponge_log.xml", + "--cov=google.auth", + "--cov=google.oauth2", + "--cov=tests", + "tests", + "tests_async", + ) |