| 61 | |
| 62 | |
| 63 | def _setup_for_driver( |
| 64 | session: nox.Session, |
| 65 | cmd: List[str], |
| 66 | basename: str, |
| 67 | greenlet: bool = False, |
| 68 | ) -> None: |
| 69 | |
| 70 | class="cm"># install driver deps listed out in pyproject.toml |
| 71 | nogreenlet_deps = fclass="st">"tests-{basename.replace(&class="cm">#x27;_', '-')}" |
| 72 | greenlet_deps = fclass="st">"tests-{basename.replace(&class="cm">#x27;_', '-')}-asyncio" |
| 73 | |
| 74 | deps = nox.project.dependency_groups( |
| 75 | pyproject, |
| 76 | (greenlet_deps if greenlet else nogreenlet_deps), |
| 77 | ) |
| 78 | if deps: |
| 79 | session.install(*deps) |
| 80 | |
| 81 | class="cm"># set up top level ``--db`` sent to pytest command line, which looks |
| 82 | class="cm"># up a base URL in the [db] section of setup.cfg. Environment variable |
| 83 | class="cm"># substitution used by CI is also available. |
| 84 | |
| 85 | class="cm"># e.g. TOX_POSTGRESQL, TOX_MYSQL, etc. |
| 86 | dburl_env = fclass="st">"TOX_{basename.upper()}" |
| 87 | class="cm"># e.g. --db=postgresql, --db=mysql, etc. |
| 88 | default_dburl = fclass="st">"--db={basename}" |
| 89 | cmd.extend(os.environ.get(dburl_env, default_dburl).split()) |
| 90 | |
| 91 | class="cm"># set up extra drivers using --dbdriver. this first looks in |
| 92 | class="cm"># an environment variable before making use of the DB_CLI_NAMES |
| 93 | class="cm"># lookup table |
| 94 | |
| 95 | class="cm"># e.g. EXTRA_PG_DRIVERS, EXTRA_MYSQL_DRIVERS, etc. |
| 96 | if basename == class="st">"postgresql": |
| 97 | extra_driver_env = class="st">"EXTRA_PG_DRIVERS" |
| 98 | else: |
| 99 | extra_driver_env = fclass="st">"EXTRA_{basename.upper()}_DRIVERS" |
| 100 | env_dbdrivers = os.environ.get(extra_driver_env, None) |
| 101 | if env_dbdrivers: |
| 102 | cmd.extend(env_dbdrivers.split()) |
| 103 | return |
| 104 | |
| 105 | class="cm"># use fixed names in DB_CLI_NAMES |
| 106 | extra_drivers: Dict[str, Set[str]] = DB_CLI_NAMES[basename] |
| 107 | dbdrivers = extra_drivers[class="st">"nogreenlet"] |
| 108 | if greenlet: |
| 109 | dbdrivers.update(extra_drivers[class="st">"greenlet"]) |
| 110 | |
| 111 | class="cm"># use equals sign so that we avoid |
| 112 | class="cm"># https://github.com/pytest-dev/pytest/issues/13913 |
| 113 | cmd.extend([fclass="st">"--dbdriver={dbdriver}" for dbdriver in dbdrivers]) |
| 114 | |
| 115 | |
| 116 | pyproject = nox.project.load_toml(class="st">"pyproject.toml") |