# Pylint doesn't play well with fixtures and dependency injection from pytest
# pylint: disable=redefined-outer-name

import os
import pytest

from buildstream.exceptions import ErrorDomain
from buildstream.testing import cli  # pylint: disable=unused-import

DATA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "stack")


#
# Assert that we have errors when trying to have runtime-only or
# build-only dependencies.
#
@pytest.mark.datafiles(DATA_DIR)
@pytest.mark.parametrize("target", ["build-only-stack.bst", "runtime-only-stack.bst",])
def test_require_build_and_run(cli, datafiles, target):
    project = str(datafiles)
    result = cli.run(project=project, args=["show", target])
    result.assert_main_error(ErrorDomain.ELEMENT, "stack-requires-build-and-run")
