tests/test_node.py @ 5faf9b0ae984

bookmarks: check if bookmark is actually current

Mercurial doesn't remove the bookmarks.current file when updating away
from a bookmark, and repo._bookmarkcurrent() doesn't check whether the
bookmark read from bookmarks.current is actually current.

This patch prevents hg-prompt from reporting a current bookmark when the
bookmark in bookmarks.current isn't actually the working directory's
first parent. This matches the behavior of the `hg bookmarks` command.
author Kevin Bullock <kbullock@umn.edu>
date Tue, 05 Jul 2011 14:19:52 -0500
parents a85dc0c43f86
children (none)
'''Test output of {node}.'''

from nose import *
from util import *


def _parent_node():
    opts = { 'template': '{node}', 'rev': '.', 'date': None, 'user': None }
    
    _ui = get_sandbox_ui()
    _ui.pushbuffer()
    commands.log(_ui, get_sandbox_repo(), **opts)
    
    return _ui.popbuffer()


@with_setup(setup_sandbox, teardown_sandbox)
def test_node():
    output = prompt(fs='{node}')
    assert output == '0000000000000000000000000000000000000000'
    
    output = prompt(fs='{ at node {node}}')
    assert output == ' at node 0000000000000000000000000000000000000000'
    
    hg_commit()
    output = prompt(fs='{node}')
    assert output == _parent_node()
    
    hg_commit()
    output = prompt(fs='{node}')
    assert output == _parent_node()
    
    hg_update(0)
    output = prompt(fs='{node}')
    assert output == _parent_node()


@with_setup(setup_sandbox, teardown_sandbox)
def test_short_filter():
    output = prompt(fs='{node|short}')
    assert output == '0000000000000000000000000000000000000000'[:12]
    
    output = prompt(fs='{ at node {node|short}}')
    assert output == ' at node ' + '0000000000000000000000000000000000000000'[:12]
    
    hg_commit()
    output = prompt(fs='{node|short}')
    assert output == _parent_node()[:12]
    
    hg_commit()
    output = prompt(fs='{node|short}')
    assert output == _parent_node()[:12]
    
    hg_update(0)
    output = prompt(fs='{node|short}')
    assert output == _parent_node()[:12]


@with_setup(setup_sandbox, teardown_sandbox)
def test_merge_filter():
    hg_commit('one.txt')
    hg_commit('one.txt')
    node_to_merge = _parent_node()
    
    hg_update(0)
    hg_commit('two.txt')
    hg_merge(1)
    
    output = prompt(fs='{node|merge}')
    assert output == node_to_merge
    
    output = prompt(fs='{node|merge|short}')
    assert output == node_to_merge[:12]