| import os |
| import pytest |
| from buildstream.testing import cli |
| from tests.testutils.site import IS_LINUX |
| |
| from buildstream import _yaml |
| from buildstream._exceptions import ErrorDomain |
| |
| |
| # Project directory |
| DATA_DIR = os.path.join( |
| os.path.dirname(os.path.realpath(__file__)), |
| "missing-dependencies", |
| ) |
| |
| |
| @pytest.mark.skipif(not IS_LINUX, reason='Only available on Linux') |
| @pytest.mark.datafiles(DATA_DIR) |
| def test_missing_brwap_has_nice_error_message(cli, datafiles): |
| project = str(datafiles) |
| element_path = os.path.join(project, 'elements', 'element.bst') |
| |
| # Write out our test target |
| element = { |
| 'kind': 'script', |
| 'depends': [ |
| { |
| 'filename': 'base.bst', |
| 'type': 'build', |
| }, |
| ], |
| 'config': { |
| 'commands': [ |
| 'false', |
| ], |
| }, |
| } |
| _yaml.dump(element, element_path) |
| |
| # Build without access to host tools, this should fail with a nice error |
| result = cli.run( |
| project=project, args=['build', 'element.bst'], env={'PATH': ''}) |
| result.assert_task_error(ErrorDomain.SANDBOX, 'unavailable-local-sandbox') |
| assert "not found" in result.stderr |
| |
| |
| @pytest.mark.skipif(not IS_LINUX, reason='Only available on Linux') |
| @pytest.mark.datafiles(DATA_DIR) |
| def test_old_brwap_has_nice_error_message(cli, datafiles, tmp_path): |
| bwrap = tmp_path.joinpath('bin/bwrap') |
| bwrap.parent.mkdir() |
| with bwrap.open('w') as fp: |
| fp.write(''' |
| #!/bin/sh |
| echo bubblewrap 0.0.1 |
| '''.strip()) |
| |
| bwrap.chmod(0o755) |
| |
| project = str(datafiles) |
| element_path = os.path.join(project, 'elements', 'element3.bst') |
| |
| # Write out our test target |
| element = { |
| 'kind': 'script', |
| 'depends': [ |
| { |
| 'filename': 'base.bst', |
| 'type': 'build', |
| }, |
| ], |
| 'config': { |
| 'commands': [ |
| 'false', |
| ], |
| }, |
| } |
| _yaml.dump(element, element_path) |
| |
| # Build without access to host tools, this should fail with a nice error |
| result = cli.run( |
| project=project, |
| args=['--debug', '--verbose', 'build', 'element3.bst'], |
| env={'PATH': str(tmp_path.joinpath('bin'))}) |
| result.assert_task_error(ErrorDomain.SANDBOX, 'unavailable-local-sandbox') |
| assert "too old" in result.stderr |