github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/clients/python-wrapper/tests/integration/conftest.py (about) 1 import os 2 import re 3 import time 4 import uuid 5 from pathlib import Path 6 7 import pytest 8 9 from lakefs import client 10 from lakefs.repository import Repository 11 12 TEST_STORAGE_NAMESPACE_BASE = os.getenv("STORAGE_NAMESPACE", "").rstrip("/") 13 14 15 def get_storage_namespace(test_name): 16 return f"{TEST_STORAGE_NAMESPACE_BASE}/{uuid.uuid1()}/{test_name}" 17 18 19 def _setup_repo(namespace, name, default_branch): 20 clt = client.Client() 21 repo_name = name + str(int(time.time())) 22 repo = Repository(repo_name, clt) 23 repo.create(storage_namespace=namespace, default_branch=default_branch) 24 return clt, repo 25 26 27 @pytest.fixture(name="test_name") 28 def fixture_test_name(request): 29 return re.sub(r'[_\[\]]', "-", request.node.name.lower()) 30 31 32 @pytest.fixture(name="storage_namespace") 33 def fixture_storage_namespace(test_name): 34 return get_storage_namespace(test_name) 35 36 37 @pytest.fixture() 38 def setup_repo(storage_namespace, test_name, default_branch="main"): 39 return _setup_repo(storage_namespace, test_name, default_branch) 40 41 42 @pytest.fixture(scope="session") 43 def setup_branch_with_commits(): 44 _, repo = _setup_repo(get_storage_namespace("branch-with-commits"), 45 "branch-with-commits", 46 "main") 47 branch = repo.branch("test_branch").create("main") 48 commit_num = 199 49 for i in range(commit_num): 50 obj = branch.object("test1") 51 if not i % 2: 52 obj.upload("test_data") 53 else: 54 obj.delete() 55 branch.commit(f"commit {commit_num - i - 1}") 56 return branch 57 58 59 @pytest.fixture(name="pre_sign", scope="function") 60 def fixture_pre_sign(request): 61 clt = client.Client() 62 if request.param and not clt.storage_config.pre_sign_support: 63 pytest.skip("Storage adapter does not support pre-sign mode") 64 return request.param 65 66 67 FIXTURE_DIR = Path(__file__).parent.parent.resolve() / 'test_files' 68 TEST_DATA = pytest.mark.datafiles( 69 FIXTURE_DIR / 'data.csv', 70 FIXTURE_DIR / 'data.json', 71 FIXTURE_DIR / 'data.yaml', 72 FIXTURE_DIR / 'data.xml', 73 FIXTURE_DIR / 'data.parquet', 74 FIXTURE_DIR / 'waving-axolotl.gif', 75 )