view tests/test_template_keywords.py @ 716:38ebf7714cdf

requiresoption: raise SkipTest if available This has the unfortunate (I guess?) side effect that you can no longer use pure unittest to run skipped tests if nose or unittest2 is installed.
author Augie Fackler <durin42@gmail.com>
date Sat, 02 Oct 2010 16:44:37 -0500
parents cb32d90f915e
children af817963897e
line wrap: on
line source

import test_util

import unittest

from mercurial import commands
from mercurial import ui
try:
    from mercurial import templatekw
    templatekw.keywords
except ImportError:
    templatekw = None


class CapturingUI(ui.ui):

    def __init__(self, *args, **kwds):
        super(CapturingUI, self).__init__(*args, **kwds)
        self._output = ""

    def write(self, msg, *args, **kwds):
        self._output += msg

class TestLogKeywords(test_util.TestBase):
    if templatekw:
        def test_svn_keywords(self):
            defaults = {'date': None, 'rev': None, 'user': None}
            repo = self._load_fixture_and_fetch('two_revs.svndump')

            # we want one commit that isn't from Subversion
            self.commitchanges([('foo', 'foo', 'frobnicate\n')])

            ui = CapturingUI()
            commands.log(ui, repo, template='{rev}:{svnrev} ', **defaults)
            self.assertEqual(ui._output, '0:2 1:3 2: ')
            ui = CapturingUI()
            commands.log(ui, repo, template='{rev}:{svnpath} ', **defaults)
            self.assertEqual(ui._output, '0:/trunk 1:/trunk 2: ')
            ui = CapturingUI()
            commands.log(ui, repo, template='{rev}:{svnuuid} ', **defaults)
            self.assertEqual(ui._output,
                             ('0:df2126f7-00ab-4d49-b42c-7e981dde0bcf '
                              '1:df2126f7-00ab-4d49-b42c-7e981dde0bcf '
                              '2: '))


def suite():
    all = [unittest.TestLoader().loadTestsFromTestCase(TestLogKeywords),]
    return unittest.TestSuite(all)