bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 989
by Martin Pool - add trivial test for show_log function | 1 | # Copyright (C) 2005 by Canonical Ltd
 | 
| 2 | ||
| 3 | # This program is free software; you can redistribute it and/or modify
 | |
| 4 | # it under the terms of the GNU General Public License as published by
 | |
| 5 | # the Free Software Foundation; either version 2 of the License, or
 | |
| 6 | # (at your option) any later version.
 | |
| 7 | ||
| 8 | # This program is distributed in the hope that it will be useful,
 | |
| 9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| 10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| 11 | # GNU General Public License for more details.
 | |
| 12 | ||
| 13 | # You should have received a copy of the GNU General Public License
 | |
| 14 | # along with this program; if not, write to the Free Software
 | |
| 15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
| 16 | ||
| 998
by Martin Pool - more branch log test cases | 17 | import os | 
| 18 | ||
| 989
by Martin Pool - add trivial test for show_log function | 19 | from bzrlib.selftest import BzrTestBase | 
| 998
by Martin Pool - more branch log test cases | 20 | from bzrlib.log import LogFormatter, show_log, LongLogFormatter | 
| 989
by Martin Pool - add trivial test for show_log function | 21 | from bzrlib.branch import Branch | 
| 22 | ||
| 990
by Martin Pool - more testing for log function | 23 | class _LogEntry(object): | 
| 24 |     # should probably move into bzrlib.log?
 | |
| 25 |     pass
 | |
| 26 | ||
| 27 | ||
| 989
by Martin Pool - add trivial test for show_log function | 28 | class LogCatcher(LogFormatter): | 
| 29 | """Pull log messages into list rather than displaying them. | |
| 30 | ||
| 31 |     For ease of testing we save log messages here rather than actually
 | |
| 32 |     formatting them, so that we can precisely check the result without
 | |
| 33 |     being too dependent on the exact formatting.
 | |
| 34 | ||
| 35 |     We should also test the LogFormatter.
 | |
| 36 |     """
 | |
| 37 | def __init__(self): | |
| 38 | super(LogCatcher, self).__init__(to_file=None) | |
| 39 | self.logs = [] | |
| 40 | ||
| 41 | ||
| 42 | def show(self, revno, rev, delta): | |
| 998
by Martin Pool - more branch log test cases | 43 | le = _LogEntry() | 
| 990
by Martin Pool - more testing for log function | 44 | le.revno = revno | 
| 45 | le.rev = rev | |
| 46 | le.delta = delta | |
| 47 | self.logs.append(le) | |
| 989
by Martin Pool - add trivial test for show_log function | 48 | |
| 49 | ||
| 50 | class SimpleLogTest(BzrTestBase): | |
| 998
by Martin Pool - more branch log test cases | 51 | def checkDelta(self, delta, **kw): | 
| 52 | """Check the filenames touched by a delta are as expected.""" | |
| 53 | for n in 'added', 'removed', 'renamed', 'modified', 'unchanged': | |
| 54 | expected = kw.get(n, []) | |
| 55 | ||
| 56 |             # tests are written with unix paths; fix them up for windows
 | |
| 57 | if os.sep != '/': | |
| 58 | expected = [x.replace('/', os.sep) for x in expected] | |
| 59 | ||
| 60 |             # strip out only the path components
 | |
| 61 | got = [x[0] for x in getattr(delta, n)] | |
| 62 | self.assertEquals(expected, got) | |
| 63 | ||
| 64 | ||
| 989
by Martin Pool - add trivial test for show_log function | 65 | def runTest(self): | 
| 66 | eq = self.assertEquals | |
| 67 | ass = self.assert_ | |
| 68 | ||
| 69 | b = Branch('.', init=True) | |
| 70 | ||
| 71 | lf = LogCatcher() | |
| 72 | show_log(b, lf) | |
| 73 |         # no entries yet
 | |
| 74 | eq(lf.logs, []) | |
| 75 | ||
| 990
by Martin Pool - more testing for log function | 76 | |
| 77 | b.commit('empty commit') | |
| 78 | lf = LogCatcher() | |
| 79 | show_log(b, lf, verbose=True) | |
| 80 | eq(len(lf.logs), 1) | |
| 81 | eq(lf.logs[0].revno, 1) | |
| 82 | eq(lf.logs[0].rev.message, 'empty commit') | |
| 83 | d = lf.logs[0].delta | |
| 84 | self.log('log delta: %r' % d) | |
| 998
by Martin Pool - more branch log test cases | 85 | self.checkDelta(d) | 
| 86 | ||
| 87 | ||
| 88 | self.build_tree(['hello']) | |
| 89 | b.add('hello') | |
| 90 | b.commit('add one file') | |
| 91 |         # log using regular thing
 | |
| 92 | show_log(b, LongLogFormatter(self.TEST_LOG)) | |
| 93 | ||
| 94 |         # get log as data structure
 | |
| 95 | lf = LogCatcher() | |
| 96 | show_log(b, lf, verbose=True) | |
| 97 | eq(len(lf.logs), 2) | |
| 98 | self.log('log entries:') | |
| 99 | for logentry in lf.logs: | |
| 100 | self.log('%4d %s' % (logentry.revno, logentry.rev.message)) | |
| 101 | ||
| 102 |         # first one is most recent
 | |
| 103 | logentry = lf.logs[0] | |
| 104 | eq(logentry.revno, 2) | |
| 105 | eq(logentry.rev.message, 'add one file') | |
| 106 | d = logentry.delta | |
| 107 | self.log('log 2 delta: %r' % d) | |
| 108 |         # self.checkDelta(d, added=['hello'])
 | |
| 989
by Martin Pool - add trivial test for show_log function | 109 |