Exemple #1
0
def test_revisions_name_from_metadata_ok(store_mock):
    """The charm name is retrieved succesfully from the metadata."""
    store_mock.list_revisions.return_value = []
    args = Namespace(name=None)
    with patch('charmcraft.commands.store.get_name_from_metadata') as mock:
        mock.return_value = 'test-name'
        ListRevisionsCommand('group').run(args)

    assert store_mock.mock_calls == [
        call.list_revisions('test-name'),
    ]
Exemple #2
0
def test_revisions_simple(caplog, store_mock):
    """Happy path of one result from the Store."""
    caplog.set_level(logging.INFO, logger="charmcraft.commands")

    store_response = [
        Revision(
            revision=1, version='v1', created_at=datetime.datetime(2020, 7, 3, 20, 30, 40),
            status='accepted', errors=[]),
    ]
    store_mock.list_revisions.return_value = store_response

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

    assert store_mock.mock_calls == [
        call.list_revisions('testcharm'),
    ]
    expected = [
        "Revision    Version    Created at    Status",
        "1           v1         2020-07-03    accepted",
    ]
    assert expected == [rec.message for rec in caplog.records]
Exemple #3
0
def test_release_revision_guessing_ok(caplog, store_mock):
    """Release after guessing the revision."""
    caplog.set_level(logging.INFO, logger="charmcraft.commands")

    # make the store to return some revisions badly ordered so we're sure we're getting the max
    tstamp = datetime.datetime(2020, 7, 3, 20, 30, 40)
    store_response = [
        Revision(revision=1, version='v1', created_at=tstamp, status='accepted', errors=[]),
        Revision(revision=3, version='v1', created_at=tstamp, status='accepted', errors=[]),
        Revision(revision=2, version='v1', created_at=tstamp, status='accepted', errors=[]),
    ]
    store_mock.list_revisions.return_value = store_response

    channels = ['somechannel']
    args = Namespace(name='testcharm', revision=None, channels=channels)
    ReleaseCommand('group').run(args)

    assert store_mock.mock_calls == [
        call.list_revisions('testcharm'),
        call.release('testcharm', 3, channels),
    ]

    expected = "Revision 3 of charm 'testcharm' released to somechannel"
    assert [expected] == [rec.message for rec in caplog.records]