|
5 | 5 | import time |
6 | 6 | import uuid |
7 | 7 | from subprocess import check_output |
| 8 | +from typing import Optional |
8 | 9 |
|
9 | 10 | import pytest |
10 | 11 | import requests |
@@ -66,7 +67,7 @@ def gitlab_url(docker_ip: str, gitlab_docker_port: int) -> str: |
66 | 67 | def reset_gitlab(gl: gitlab.Gitlab) -> None: |
67 | 68 | """Delete resources (such as projects, groups, users) that shouldn't |
68 | 69 | exist.""" |
69 | | - if is_gitlab_ee(gl): |
| 70 | + if helpers.get_gitlab_plan(gl): |
70 | 71 | logging.info("GitLab EE detected") |
71 | 72 | # NOTE(jlvillal): By default in GitLab EE it will wait 7 days before |
72 | 73 | # deleting a group. Disable delayed group/project deletion. |
@@ -280,21 +281,27 @@ def gl(gitlab_config): |
280 | 281 | return instance |
281 | 282 |
|
282 | 283 |
|
283 | | -def is_gitlab_ee(gl: gitlab.Gitlab) -> bool: |
284 | | - """Determine if we are running with GitLab EE as opposed to GitLab CE""" |
285 | | - try: |
286 | | - license = gl.get_license() |
287 | | - except gitlab.exceptions.GitlabLicenseError: |
288 | | - license = None |
289 | | - # If we have a license then we assume we are running on GitLab EE |
290 | | - if license: |
291 | | - return True |
292 | | - return False |
| 284 | +@pytest.fixture(scope="session") |
| 285 | +def gitlab_plan(gl: gitlab.Gitlab) -> Optional[str]: |
| 286 | + return helpers.get_gitlab_plan(gl) |
293 | 287 |
|
294 | 288 |
|
295 | | -@pytest.fixture(scope="session") |
296 | | -def gitlab_ee(gl) -> bool: |
297 | | - return is_gitlab_ee(gl=gl) |
| 289 | +@pytest.fixture(autouse=True) |
| 290 | +def gitlab_premium(gitlab_plan, request) -> None: |
| 291 | + if gitlab_plan in ("premium", "ultimate"): |
| 292 | + return |
| 293 | + |
| 294 | + if request.node.get_closest_marker("gitlab_ultimate"): |
| 295 | + pytest.skip("Test requires GitLab Premium plan") |
| 296 | + |
| 297 | + |
| 298 | +@pytest.fixture(autouse=True) |
| 299 | +def gitlab_ultimate(gitlab_plan, request) -> None: |
| 300 | + if gitlab_plan == "ultimate": |
| 301 | + return |
| 302 | + |
| 303 | + if request.node.get_closest_marker("gitlab_ultimate"): |
| 304 | + pytest.skip("Test requires GitLab Ultimate plan") |
298 | 305 |
|
299 | 306 |
|
300 | 307 | @pytest.fixture(scope="session") |
|
0 commit comments