tests/test_update.py @ 16aa2def1d5b default tip

Update to work with Python 3

The Hamster Wheel of Backwards Incompatibility turns ever onward.  This probably
breaks support for Python 2, but at this point I don't care.  I just can't
summon up the willpower to do anything more than the most basic unfucking of
this thing that's been finished for 11 years but still breaks constantly because
of Mercurial's API churn and Python 3 setting the world on fire.

                                                                                    The
_  _ ____ _  _ ____ ___ ____ ____    _ _ _ _  _ ____ ____ _       ____ ____    ___  ____ ____ _  _ _ _ _ ____ ____ ___  ____    _ _  _ ____ ____ _  _ ___  ____ ___ _ ___  _ _    _ ___ _   _
|__| |__| |\/| [__   |  |___ |__/    | | | |__| |___ |___ |       |  | |___    |__] |__| |    |_/  | | | |__| |__/ |  \ [__     | |\ | |    |  | |\/| |__] |__|  |  | |__] | |    |  |   \_/
|  | |  | |  | ___]  |  |___ |  \    |_|_| |  | |___ |___ |___    |__| |       |__] |  | |___ | \_ |_|_| |  | |  \ |__/ ___]    | | \| |___ |__| |  | |    |  |  |  | |__] | |___ |  |    |
                                                                                turns forever
author Steve Losh <steve@stevelosh.com>
date Tue, 06 Apr 2021 12:55:48 -0400
parents 705378546da2
children (none)
'''Test output of {update}.'''

from nose import *
from util import *


@with_setup(setup_sandbox, teardown_sandbox)
def test_empty_repo():
    output = prompt(fs='{update}')
    assert output == ''
    
    output = prompt(fs='{ need to update? {update}}')
    assert output == ''


@with_setup(setup_sandbox, teardown_sandbox)
def test_single_branch():
    hg_commit()
    
    output = prompt(fs='{update}')
    assert output == ''
    
    output = prompt(fs='{ need to update? {update}}')
    assert output == ''
    
    hg_commit()
    
    output = prompt(fs='{update}')
    assert output == ''
    
    output = prompt(fs='{ need to update? {update}}')
    assert output == ''
    
    hg_update(0)
    
    output = prompt(fs='{update}')
    assert output == '^'
    
    output = prompt(fs='{ need to update? {update}}')
    assert output == ' need to update? ^'


@with_setup(setup_sandbox, teardown_sandbox)
def test_multiple_branches():
    hg_commit()
    hg_commit()
    hg_commit()
    
    hg_update(0)
    hg_commit('two.txt')
    hg_commit('two.txt')
    
    #  @    4
    #  |
    #  o    3 
    #  |
    #  | o  2
    #  | |
    #  | o  1
    #  |/
    #  |
    #  o    0
    
    hg_log()
    
    hg_update(4)
    output = prompt(fs='{update}')
    assert output == ''
    
    hg_update(3)
    output = prompt(fs='{update}')
    assert output == '^'
    
    # This test case matches the behavior of Mercurial, but it seems a bit
    # unintuitive to me.
    hg_update(2)
    output = prompt(fs='{update}')
    assert output == '^'
    
    hg_update(1)
    output = prompt(fs='{update}')
    assert output == '^'
    
    hg_update(0)
    output = prompt(fs='{update}')
    assert output == '^'


@with_setup(setup_sandbox, teardown_sandbox)
def test_multiple_named_branches():
    hg_commit()
    hg_commit()
    hg_commit()
    
    hg_update(0)
    hg_branch('test')
    hg_commit('two.txt')
    hg_commit('two.txt')
    
    #  @    4 (test)
    #  |
    #  o    3 (test)
    #  |
    #  | o  2 (default)
    #  | |
    #  | o  1 (default)
    #  |/
    #  |
    #  o    0 (default)
    
    hg_log()
    
    hg_update(4)
    output = prompt(fs='{update}')
    assert output == ''
    
    hg_update(3)
    output = prompt(fs='{update}')
    assert output == '^'
    
    hg_update(2)
    output = prompt(fs='{update}')
    assert output == ''
    
    hg_update(1)
    output = prompt(fs='{update}')
    assert output == '^'
    
    hg_update(0)
    output = prompt(fs='{update}')
    assert output == '^'