1# Test class and utilities for functional tests
2#
3# Copyright 2018, 2024 Red Hat, Inc.
4#
5# Original Author (Avocado-based tests):
6#  Cleber Rosa <crosa@redhat.com>
7#
8# Adaption for standalone version:
9#  Thomas Huth <thuth@redhat.com>
10#
11# This work is licensed under the terms of the GNU GPL, version 2 or
12# later.  See the COPYING file in the top-level directory.
13
14import os
15from pathlib import Path
16
17
18def _source_dir():
19    # Determine top-level directory of the QEMU sources
20    return Path(__file__).parent.parent.parent.parent
21
22def _build_dir():
23    root = os.getenv('QEMU_BUILD_ROOT')
24    if root is not None:
25        return Path(root)
26    # Makefile.mtest only exists in build dir, so if it is available, use CWD
27    if os.path.exists('Makefile.mtest'):
28        return Path(os.getcwd())
29
30    root = os.path.join(_source_dir(), 'build')
31    if os.path.exists(root):
32        return Path(root)
33
34    raise Exception("Cannot identify build dir, set QEMU_BUILD_ROOT")
35
36BUILD_DIR = _build_dir()
37