Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Sep 5, 2023. It is now read-only.

Commit 90e43a8

Browse filesBrowse files
test(python): use constraints files to check dependency lower bounds
Use a constraints file when installing dependencies for system and unit tests nox sessions. https://pip.pypa.io/en/stable/user_guide/#constraints-files > Constraints files are requirements files that **only control which version of a requirement is installed, not whether it is installed or not**. Their syntax and contents is nearly identical to Requirements Files. There is one key difference: Including a package in a constraints file does not trigger installation of the package. ``` testing ├── constraints-3.10.txt ├── constraints-3.11.txt ├── constraints-3.6.txt ├── constraints-3.7.txt ├── constraints-3.8.txt └── constraints-3.9.txt ``` Going forward, one constraints file (currently 3.6) will be populated with every library requirement and extra listed in the `setup.py`. The constraints file will pin each requirement to the lower bound. This ensures that library maintainers will see test failures if they forget to update a lower bound on a dependency. See googleapis/python-bigquery#263 for an example Source-Author: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com> Source-Date: Tue Mar 23 10:52:02 2021 -0600 Source-Repo: googleapis/synthtool Source-Sha: 86ed43d4f56e6404d068e62e497029018879c771 Source-Link: googleapis/synthtool@86ed43d
1 parent 7af1dfe commit 90e43a8
Copy full SHA for 90e43a8

File tree

Expand file treeCollapse file tree

2 files changed

+16
-10
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+16
-10
lines changed

‎noxfile.py

Copy file name to clipboardExpand all lines: noxfile.py
+14-8Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
from __future__ import absolute_import
2020
import os
21+
import pathlib
2122
import shutil
2223

2324
import nox
@@ -30,6 +31,8 @@
3031
SYSTEM_TEST_PYTHON_VERSIONS = ["3.8"]
3132
UNIT_TEST_PYTHON_VERSIONS = ["3.6", "3.7", "3.8", "3.9"]
3233

34+
CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute()
35+
3336
# 'docfx' is excluded since it only needs to run in 'docs-presubmit'
3437
nox.options.sessions = [
3538
"unit",
@@ -84,13 +87,15 @@ def lint_setup_py(session):
8487

8588
def default(session):
8689
# Install all test dependencies, then install this package in-place.
87-
session.install("asyncmock", "pytest-asyncio")
8890

89-
session.install(
90-
"mock", "pytest", "pytest-cov",
91+
constraints_path = str(
92+
CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt"
9193
)
94+
session.install("asyncmock", "pytest-asyncio", "-c", constraints_path)
9295

93-
session.install("-e", ".")
96+
session.install("mock", "pytest", "pytest-cov", "-c", constraints_path)
97+
98+
session.install("-e", ".", "-c", constraints_path)
9499

95100
# Run py.test against the unit tests.
96101
session.run(
@@ -117,6 +122,9 @@ def unit(session):
117122
@nox.session(python=SYSTEM_TEST_PYTHON_VERSIONS)
118123
def system(session):
119124
"""Run the system test suite."""
125+
constraints_path = str(
126+
CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt"
127+
)
120128
system_test_path = os.path.join("tests", "system.py")
121129
system_test_folder_path = os.path.join("tests", "system")
122130

@@ -141,10 +149,8 @@ def system(session):
141149

142150
# Install all test dependencies, then install this package into the
143151
# virtualenv's dist-packages.
144-
session.install(
145-
"mock", "pytest", "google-cloud-testutils",
146-
)
147-
session.install("-e", ".")
152+
session.install("mock", "pytest", "google-cloud-testutils", "-c", constraints_path)
153+
session.install("-e", ".", "-c", constraints_path)
148154

149155
# Run py.test against the system tests.
150156
if system_test_exists:

‎synth.metadata

Copy file name to clipboardExpand all lines: synth.metadata
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@
1919
"git": {
2020
"name": "synthtool",
2121
"remote": "https://github.com/googleapis/synthtool.git",
22-
"sha": "f5c5904fb0c6aa3b3730eadf4e5a4485afc65726"
22+
"sha": "86ed43d4f56e6404d068e62e497029018879c771"
2323
}
2424
},
2525
{
2626
"git": {
2727
"name": "synthtool",
2828
"remote": "https://github.com/googleapis/synthtool.git",
29-
"sha": "f5c5904fb0c6aa3b3730eadf4e5a4485afc65726"
29+
"sha": "86ed43d4f56e6404d068e62e497029018879c771"
3030
}
3131
}
3232
],

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.