[Notes] [Git][BuildStream/buildstream][chandan/deps] _frontend: Allow printing dependencies using `bst show`



Title: GitLab

Chandan Singh pushed to branch chandan/deps at BuildStream / buildstream

Commits:

3 changed files:

Changes:

  • buildstream/_frontend/cli.py
    ... ... @@ -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,
    

  • buildstream/_frontend/widget.py
    ... ... @@ -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')
    

  • tests/frontend/show.py
    ... ... @@ -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))



  • [Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]