Chandan Singh pushed to branch chandan/deps at BuildStream / buildstream
Commits:
-
9b6c18e4
by Chandan Singh at 2019-02-12T10:20:52Z
3 changed files:
Changes:
| ... | ... | @@ -440,6 +440,9 @@ def show(app, elements, deps, except_, order, format_): |
| 440 | 440 |
%{public} Public domain data
|
| 441 | 441 |
%{workspaced} If the element is workspaced
|
| 442 | 442 |
%{workspace-dirs} A list of workspace directories
|
| 443 |
+ %{deps} A list of all dependencies
|
|
| 444 |
+ %{build-deps} A list of build dependencies
|
|
| 445 |
+ %{runtime-deps} A list of runtime dependencies
|
|
| 443 | 446 |
|
| 444 | 447 |
The value of the %{symbol} without the leading '%' character is understood
|
| 445 | 448 |
as a pythonic formatting string, so python formatting features apply,
|
| ... | ... | @@ -27,7 +27,7 @@ from ruamel import yaml |
| 27 | 27 |
import click
|
| 28 | 28 |
|
| 29 | 29 |
from . import Profile
|
| 30 |
-from .. import Element, Consistency
|
|
| 30 |
+from .. import Element, Consistency, Scope
|
|
| 31 | 31 |
from .. import _yaml
|
| 32 | 32 |
from .. import __version__ as bst_version
|
| 33 | 33 |
from .._exceptions import ImplError
|
| ... | ... | @@ -435,6 +435,27 @@ class LogLine(Widget): |
| 435 | 435 |
line = p.fmt_subst(
|
| 436 | 436 |
line, 'workspace-dirs', '')
|
| 437 | 437 |
|
| 438 |
+ # Dependencies
|
|
| 439 |
+ if "%{deps" in format_:
|
|
| 440 |
+ deps = [e.name for e in element.dependencies(Scope.ALL, recurse=False)]
|
|
| 441 |
+ line = p.fmt_subst(
|
|
| 442 |
+ line, 'deps',
|
|
| 443 |
+ yaml.safe_dump(deps, default_style=None).rstrip('\n'))
|
|
| 444 |
+ |
|
| 445 |
+ # Build Dependencies
|
|
| 446 |
+ if "%{build-deps" in format_:
|
|
| 447 |
+ build_deps = [e.name for e in element.dependencies(Scope.BUILD, recurse=False)]
|
|
| 448 |
+ line = p.fmt_subst(
|
|
| 449 |
+ line, 'build-deps',
|
|
| 450 |
+ yaml.safe_dump(build_deps, default_style=False).rstrip('\n'))
|
|
| 451 |
+ |
|
| 452 |
+ # Runtime Dependencies
|
|
| 453 |
+ if "%{runtime-deps" in format_:
|
|
| 454 |
+ runtime_deps = [e.name for e in element.dependencies(Scope.RUN, recurse=False)]
|
|
| 455 |
+ line = p.fmt_subst(
|
|
| 456 |
+ line, 'runtime-deps',
|
|
| 457 |
+ yaml.safe_dump(runtime_deps, default_style=False).rstrip('\n'))
|
|
| 458 |
+ |
|
| 438 | 459 |
report += line + '\n'
|
| 439 | 460 |
|
| 440 | 461 |
return report.rstrip('\n')
|
| ... | ... | @@ -400,3 +400,28 @@ def test_exceed_max_recursion_depth(cli, tmpdir, dependency_depth): |
| 400 | 400 |
assert result.exit_code == -1
|
| 401 | 401 |
|
| 402 | 402 |
shutil.rmtree(project_path)
|
| 403 |
+ |
|
| 404 |
+ |
|
| 405 |
+###############################################################
|
|
| 406 |
+# Testing format symbols #
|
|
| 407 |
+###############################################################
|
|
| 408 |
+@pytest.mark.datafiles(os.path.join(DATA_DIR, 'project'))
|
|
| 409 |
+@pytest.mark.parametrize("dep_kind, expected_deps", [
|
|
| 410 |
+ ('%{deps}', '[import-dev.bst, import-bin.bst]'),
|
|
| 411 |
+ ('%{build-deps}', '[import-dev.bst]'),
|
|
| 412 |
+ ('%{runtime-deps}', '[import-bin.bst]')
|
|
| 413 |
+])
|
|
| 414 |
+def test_format_deps(cli, datafiles, dep_kind, expected_deps):
|
|
| 415 |
+ project = os.path.join(datafiles.dirname, datafiles.basename)
|
|
| 416 |
+ target = 'checkout-deps.bst'
|
|
| 417 |
+ result = cli.run(project=project, silent=True, args=[
|
|
| 418 |
+ 'show',
|
|
| 419 |
+ '--deps', 'none',
|
|
| 420 |
+ '--format', '%{name}: ' + dep_kind,
|
|
| 421 |
+ target])
|
|
| 422 |
+ result.assert_success()
|
|
| 423 |
+ |
|
| 424 |
+ expected = '{name}: {deps}'.format(name=target, deps=expected_deps)
|
|
| 425 |
+ if result.output.strip() != expected:
|
|
| 426 |
+ raise AssertionError("Expected output:\n{}\nInstead received output:\n{}"
|
|
| 427 |
+ .format(expected, result.output))
|
