From 838538b4805d09f08ca658971fc44eae652d3132 Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Tue, 20 Nov 2018 15:43:56 -0800 Subject: [PATCH] add templating to asset synth.py (#6606) * add templating to asset synth.py --- packages/google-cloud-asset/.flake8 | 12 +++ packages/google-cloud-asset/noxfile.py | 111 ++++++++++++++++++++++--- packages/google-cloud-asset/synth.py | 4 + 3 files changed, 115 insertions(+), 12 deletions(-) create mode 100644 packages/google-cloud-asset/.flake8 diff --git a/packages/google-cloud-asset/.flake8 b/packages/google-cloud-asset/.flake8 new file mode 100644 index 000000000000..1f44a90f8195 --- /dev/null +++ b/packages/google-cloud-asset/.flake8 @@ -0,0 +1,12 @@ +[flake8] +exclude = + # Exclude generated code. + **/proto/** + **/gapic/** + *_pb2.py + + # Standard linting exemptions. + __pycache__, + .git, + *.pyc, + conf.py diff --git a/packages/google-cloud-asset/noxfile.py b/packages/google-cloud-asset/noxfile.py index 1903b9cd88f0..08b970965bea 100644 --- a/packages/google-cloud-asset/noxfile.py +++ b/packages/google-cloud-asset/noxfile.py @@ -20,29 +20,116 @@ import nox -LOCAL_DEPS = ( - os.path.join('..', 'api_core'), -) +LOCAL_DEPS = (os.path.join("..", "api_core"),) + def default(session): # Install all test dependencies, then install this package in-place. - session.install('pytest', 'mock') + session.install("mock", "pytest", "pytest-cov") for local_dep in LOCAL_DEPS: - session.install('-e', local_dep) - session.install('-e', '.') + session.install("-e", local_dep) + session.install("-e", ".") # Run py.test against the unit tests. - session.run('py.test', '--quiet', os.path.join('tests', 'unit')) + session.run( + "py.test", + "--quiet", + "--cov=google.cloud", + "--cov=tests.unit", + "--cov-append", + "--cov-config=.coveragerc", + "--cov-report=", + "--cov-fail-under=86", + os.path.join("tests", "unit"), + *session.posargs, + ) -@nox.session(python=['2.7', '3.5', '3.6', '3.7']) +@nox.session(python=["2.7", "3.5", "3.6", "3.7"]) def unit(session): """Run the unit test suite.""" default(session) -@nox.session(python='3.6') + +@nox.session(python=["2.7", "3.7"]) +def system(session): + """Run the system test suite.""" + system_test_path = os.path.join("tests", "system.py") + # Sanity check: Only run tests if the environment variable is set. + if not os.environ.get("GOOGLE_APPLICATION_CREDENTIALS", ""): + session.skip("Credentials must be set via environment variable") + # Sanity check: only run tests if found. + if not os.path.exists(system_test_path): + session.skip("System tests were not found") + + # Use pre-release gRPC for system tests. + session.install("--pre", "grpcio") + + # Install all test dependencies, then install this package into the + # virtualenv's dist-packages. + session.install("mock", "pytest") + for local_dep in LOCAL_DEPS: + session.install("-e", local_dep) + session.install("-e", "../test_utils/") + session.install("-e", ".") + + # Run py.test against the system tests. + session.run("py.test", "--quiet", system_test_path, *session.posargs) + + +@nox.session(python="3.7") +def blacken(session): + """Run black. + + Format code to uniform standard. + """ + session.install("black") + session.run( + "black", + "google", + "tests", + "docs", + "--exclude", + ".*/proto/.*|.*/gapic/.*|.*/.*_pb2.py", + ) + + +@nox.session(python="3.7") +def lint(session): + """Run linters. + + Returns a failure if the linters find linting errors or sufficiently + serious code quality issues. + """ + session.install("flake8", "black", *LOCAL_DEPS) + session.install(".") + session.run( + "black", + "--check", + "google", + "tests", + "docs", + "--exclude", + ".*/proto/.*|.*/gapic/.*|.*/.*_pb2.py", + ) + session.run("flake8", "google", "tests") + + +@nox.session(python="3.7") def lint_setup_py(session): """Verify that setup.py is valid (including RST check).""" - session.install('docutils', 'pygments') - session.run('python', 'setup.py', 'check', '--restructuredtext', - '--strict') + session.install("docutils", "pygments") + session.run("python", "setup.py", "check", "--restructuredtext", "--strict") + + +@nox.session(python="3.7") +def cover(session): + """Run the final coverage report. + + This outputs the coverage report aggregating coverage from the unit + test runs (not system test runs), and then erases coverage data. + """ + session.install("coverage", "pytest-cov") + session.run("coverage", "report", "--show-missing", "--fail-under=85") + + session.run("coverage", "erase") diff --git a/packages/google-cloud-asset/synth.py b/packages/google-cloud-asset/synth.py index 279a7ad79a82..5a122e3dd05c 100644 --- a/packages/google-cloud-asset/synth.py +++ b/packages/google-cloud-asset/synth.py @@ -39,6 +39,10 @@ s.move(library, excludes=excludes) +templated_files = gcp.CommonTemplates().py_library( + unit_cov_level=86, cov_level=85) +s.move(templated_files) + s.replace( "google/cloud/asset_v1beta1/proto/assets_pb2.py", "from google.iam.v1 import policy_pb2 as",