deb-mock/behave/environment.py
robojerk 4c0dcb2522
Some checks failed
Build Deb-Mock Package / build (push) Successful in 54s
Lint Code / Lint All Code (push) Failing after 1s
Test Deb-Mock Build / test (push) Failing after 36s
enhance: Add comprehensive .gitignore for deb-mock project
- Add mock-specific build artifacts (chroot/, mock-*, mockroot/)
- Include package build files (*.deb, *.changes, *.buildinfo)
- Add development tools (.coverage, .pytest_cache, .tox)
- Include system files (.DS_Store, Thumbs.db, ._*)
- Add temporary and backup files (*.tmp, *.bak, *.backup)
- Include local configuration overrides (config.local.yaml, .env.local)
- Add test artifacts and documentation builds
- Comprehensive coverage for Python build system project

This ensures build artifacts, chroot environments, and development
tools are properly ignored in version control.
2025-08-18 23:37:49 -07:00

79 lines
2.2 KiB
Python

"""
Global configuration for Mock's behave tests
"""
import os
import pwd
import random
import shutil
import string
import tempfile
import requests
from testlib.mock import Mock
from testlib.commands import no_output
def _random_string(length):
return ''.join(random.choices(string.ascii_lowercase + string.digits,
k=length))
def _download(context, url):
print(f'Downloading {url}')
req = requests.get(url, timeout=60)
filename = os.path.join(context.workdir, os.path.basename(url))
with open(filename, 'wb') as dfd:
dfd.write(req.content)
return filename
def _download_rpm(context, rpm):
files = {
"always-installable":
"repo/always-installable-1-0.fc32.noarch.rpm",
"buildrequires-always-installable":
"buildrequires-always-installable-1-0.src.rpm",
}
return _download(context, "/".join([context.test_storage, files[rpm]]))
def before_all(context):
""" executed before all the testing starts, only once per behave run """
context.uniqueext = _random_string(8)
context.uniqueext_used = False
# detect the default used chroot from default.cfg link
default_config = os.readlink("/etc/mock/default.cfg")
context.chroot = default_config[:-4] # drop cfg suffix
context.test_storage = (
"https://github.com/"
"rpm-software-management/mock-test-data/raw/main/")
context.download = lambda url: _download(context, url)
context.download_rpm = lambda rpm: _download_rpm(context, rpm)
context.next_mock_options = []
def _cleanup_workdir(context):
shutil.rmtree(context.workdir)
context.workdir = None
context.custom_config = ""
def before_scenario(context, _scenario):
""" execute before - once for each - scenario """
context.workdir = tempfile.mkdtemp(prefix="mock-behave-tests-")
context.custom_config = ""
context.add_cleanup(_cleanup_workdir, context)
context.mock = Mock(context)
context.add_repos = []
context.current_user = pwd.getpwuid(os.getuid())[0]
def after_scenario(context, _scenario):
""" execute after - and for each - scenario """
with no_output():
context.mock.clean()