view tests/test-filelog.py @ 17401:a826b1d7f5b2

zsh completion: add new options for existing commands * backout: add --tool; * bisect: add --extend; * bookmarks: add --inactive; * branches: add --closed; * bundle: add --rev, --all, --branch; * cat: add --decode; * clone: add --updaterev, --branch, --pull and use common-with-qclone opts; * commit: add --close-branch; * diff: add --change, --reverse, --stat, --text, --unified; * export: add --rev; * grep: add --date; * heads: add --topo, --closed; * help: add --extension, --command, --keywords; complete additional help topics also, not commands only; * identify: add --bookmark and remote_opts; * import: add --no-commit, --exact, --import-branch, --date, --user, --similarity and commit options; * log: add --user, --date, --stat, --git, --graph; * manifest: add --rev; * push: add --new-branch; * resolve: add --all, --no-status, --tool and pattern options; * revert: add --date; * serve: add --prefix, --web-conf, --pid-file, --cmdserver, --certificate; * status: add --change; * tag: add --force, --edit, --remove; * tip: add --git; * update: add --check, --date.
author Nikolaj Sjujskij <sterkrig@myopera.com>
date Thu, 16 Aug 2012 19:03:01 +0400
parents d76ba2090e0c
children 73e3e368bd42
line wrap: on
line source

#!/usr/bin/env python
"""
Tests the behaviour of filelog w.r.t. data starting with '\1\n'
"""
from mercurial import ui, hg
from mercurial.node import nullid, hex

myui = ui.ui()
repo = hg.repository(myui, path='.', create=True)

fl = repo.file('foobar')

def addrev(text, renamed=False):
    if renamed:
        # data doesnt matter. Just make sure filelog.renamed() returns True
        meta = dict(copyrev=hex(nullid), copy='bar')
    else:
        meta = {}

    lock = t = None
    try:
        lock = repo.lock()
        t = repo.transaction('commit')
        node = fl.add(text, meta, t, 0, nullid, nullid)
        return node
    finally:
        if t:
            t.close()
        if lock:
            lock.release()

def error(text):
    print 'ERROR: ' + text

textwith = '\1\nfoo'
without = 'foo'

node = addrev(textwith)
if not textwith == fl.read(node):
    error('filelog.read for data starting with \\1\\n')
if fl.cmp(node, textwith) or not fl.cmp(node, without):
    error('filelog.cmp for data starting with \\1\\n')
if fl.size(0) != len(textwith):
    error('FIXME: This is a known failure of filelog.size for data starting '
        'with \\1\\n')

node = addrev(textwith, renamed=True)
if not textwith == fl.read(node):
    error('filelog.read for a renaming + data starting with \\1\\n')
if fl.cmp(node, textwith) or not fl.cmp(node, without):
    error('filelog.cmp for a renaming + data starting with \\1\\n')
if fl.size(1) != len(textwith):
    error('filelog.size for a renaming + data starting with \\1\\n')

print 'OK.'