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  )