Ejemplo n.º 1
0
def test_status_with_multiple_branches(caplog, store_mock):
    """Support having multiple branches."""
    caplog.set_level(logging.INFO, logger="charmcraft.commands")

    tstamp_with_timezone = parser.parse('2020-07-03T20:30:40Z')
    channel_map = [
        Release(revision=5, channel='latest/beta', expires_at=None),
        Release(revision=12,
                channel='latest/beta/branch-1',
                expires_at=tstamp_with_timezone),
        Release(revision=15,
                channel='latest/beta/branch-2',
                expires_at=tstamp_with_timezone),
    ]
    channels = _build_channels()
    channels.extend([
        Channel(name='latest/beta/branch-1',
                fallback='latest/beta',
                track='latest',
                risk='beta',
                branch='branch-1'),
        Channel(name='latest/beta/branch-2',
                fallback='latest/beta',
                track='latest',
                risk='beta',
                branch='branch-2'),
    ])
    revisions = [
        _build_revision(revno=5, version='5.1'),
        _build_revision(revno=12, version='ver.12'),
        _build_revision(revno=15, version='15.0.0'),
    ]
    store_mock.list_releases.return_value = (channel_map, channels, revisions)

    args = Namespace(name='testcharm')
    StatusCommand('group').run(args)

    assert store_mock.mock_calls == [
        call.list_releases('testcharm'),
    ]

    expected = [
        "Track    Channel        Version    Revision    Expires at",
        "latest   stable         -          -",
        "         candidate      -          -",
        "         beta           5.1        5",
        "         edge           ↑          ↑",
        "         beta/branch-1  ver.12     12          2020-07-03T20:30:40+00:00",
        "         beta/branch-2  15.0.0     15          2020-07-03T20:30:40+00:00",
    ]
    assert expected == [rec.message for rec in caplog.records]
Ejemplo n.º 2
0
def _build_channels(track='latest'):
    """Helper to build simple channels structure."""
    channels = []
    risks = ['stable', 'candidate', 'beta', 'edge']
    for risk, fback in zip(risks, [None] + risks):
        name = "/".join((track, risk))
        fallback = None if fback is None else "/".join((track, fback))
        channels.append(Channel(name=name, fallback=fallback, track=track, risk=risk, branch=None))
    return channels