/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_weave.py

  • Committer: Andrew Bennetts
  • Date: 2008-08-12 14:53:26 UTC
  • mto: This revision was merged to the branch mainline in revision 3624.
  • Revision ID: andrew.bennetts@canonical.com-20080812145326-yx693x2jc4rcovb7
Move the notes on writing tests out of HACKING into a new file, and improve
them.

Many of the testing notes in the HACKING file were in duplicated in two places
in that file!  This change removes that duplication.  It also adds new sections
on “Where should I put a new test?” and “TestCase and its subclasses”, and
others like “Test feature dependencies” have been expanded.  The whole document
has generally been edited to be a bit more coherent. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
18
18
# TODO: tests regarding version names
19
 
# TODO: rbc 20050108 test that join does not leave an inconsistent weave
 
19
# TODO: rbc 20050108 test that join does not leave an inconsistent weave 
20
20
#       if it fails.
21
21
 
22
22
"""test suite for weave algorithm"""
121
121
                          'text0',
122
122
                          ['basis'],         # not the right parents
123
123
                          TEXT_0)
124
 
 
 
124
        
125
125
 
126
126
class InsertLines(TestBase):
127
127
    """Store a revision that adds one line to the original.
170
170
              ['text0', 'text1', 'text3'],
171
171
              ['line 1', 'aaa', 'middle line', 'bbb', 'line 2', 'ccc'])
172
172
 
173
 
        self.assertEqual(k.annotate('text4'),
 
173
        self.assertEqual(k.annotate('text4'), 
174
174
                         [('text0', 'line 1'),
175
175
                          ('text4', 'aaa'),
176
176
                          ('text3', 'middle line'),
189
189
        base_text = ['one', 'two', 'three', 'four']
190
190
 
191
191
        k.add_lines('text0', [], base_text)
192
 
 
 
192
        
193
193
        texts = [['one', 'two', 'three'],
194
194
                 ['two', 'three', 'four'],
195
195
                 ['one', 'four'],
226
226
                ]
227
227
        ################################### SKIPPED
228
228
        # Weave.get doesn't trap this anymore
229
 
        return
 
229
        return 
230
230
 
231
231
        self.assertRaises(WeaveFormatError,
232
232
                          k.get_lines,
233
 
                          0)
 
233
                          0)        
234
234
 
235
235
 
236
236
class CannedDelete(TestBase):
278
278
                'line to be deleted',
279
279
                (']', 1),
280
280
                ('{', 1),
281
 
                'replacement line',
 
281
                'replacement line',                
282
282
                ('}', 1),
283
283
                'last line',
284
284
                ('}', 0),
321
321
 
322
322
        ################################### SKIPPED
323
323
        # Weave.get doesn't trap this anymore
324
 
        return
 
324
        return 
325
325
 
326
326
 
327
327
        self.assertRaises(WeaveFormatError,
399
399
                          '  added in version 1',
400
400
                          '  also from v1',
401
401
                          '}'])
402
 
 
 
402
                       
403
403
        self.assertEqual(k.get_lines(2),
404
404
                         ['foo {',
405
405
                          '  added in v2',
411
411
                          '  added in v2',
412
412
                          '  also from v1',
413
413
                          '}'])
414
 
 
 
414
                         
415
415
 
416
416
class DeleteLines2(TestBase):
417
417
    """Test recording revisions that delete lines.
493
493
                ('}', 1),
494
494
                ('{', 2),
495
495
                "alternative second line",
496
 
                ('}', 2),
 
496
                ('}', 2),                
497
497
                ]
498
498
 
499
499
        k._sha1s = [sha_string('first line')
521
521
 
522
522
        text0 = ['cheddar', 'stilton', 'gruyere']
523
523
        text1 = ['cheddar', 'blue vein', 'neufchatel', 'chevre']
524
 
 
 
524
        
525
525
        k.add_lines('text0', [], text0)
526
526
        k.add_lines('text1', ['text0'], text1)
527
527
 
609
609
            A Jug of Wine, a Loaf of Bread, -- and Thou
610
610
            Beside me singing in the Wilderness --
611
611
            Oh, Wilderness were Paradise enow!""",
612
 
 
 
612
            
613
613
            """A Book of Verses underneath the Bough,
614
614
            A Jug of Wine, a Loaf of Bread, -- and Thou
615
615
            Beside me singing in the Wilderness --
724
724
 
725
725
class InstrumentedWeave(Weave):
726
726
    """Keep track of how many times functions are called."""
727
 
 
 
727
    
728
728
    def __init__(self, weave_name=None):
729
729
        self._extract_count = 0
730
730
        Weave.__init__(self, weave_name=weave_name)
753
753
 
754
754
 
755
755
class TestWeaveFile(TestCaseInTempDir):
756
 
 
 
756
    
757
757
    def test_empty_file(self):
758
758
        f = open('empty.weave', 'wb+')
759
759
        try: