~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_selftest.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-10-01 12:31:03 UTC
  • mfrom: (3731.3.5 allow_debug_fixes)
  • Revision ID: pqm@pqm.ubuntu.com-20081001123103-9powbklax4nmw09j
Fix the test suite when run with -Eallow_debug. (Andrew Bennetts)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1346
1346
 
1347
1347
    def test_debug_flags_sanitised(self):
1348
1348
        """The bzrlib debug flags should be sanitised by setUp."""
 
1349
        if 'allow_debug' in tests.selftest_debug_flags:
 
1350
            raise TestNotApplicable(
 
1351
                '-Eallow_debug option prevents debug flag sanitisation')
1349
1352
        # we could set something and run a test that will check
1350
1353
        # it gets santised, but this is probably sufficient for now:
1351
1354
        # if someone runs the test with -Dsomething it will error.
1352
1355
        self.assertEqual(set(), bzrlib.debug.debug_flags)
1353
1356
 
 
1357
    def change_selftest_debug_flags(self, new_flags):
 
1358
        orig_selftest_flags = tests.selftest_debug_flags
 
1359
        self.addCleanup(self._restore_selftest_debug_flags, orig_selftest_flags)
 
1360
        tests.selftest_debug_flags = set(new_flags)
 
1361
        
 
1362
    def _restore_selftest_debug_flags(self, flags):
 
1363
        tests.selftest_debug_flags = flags
 
1364
 
 
1365
    def test_allow_debug_flag(self):
 
1366
        """The -Eallow_debug flag prevents bzrlib.debug.debug_flags from being
 
1367
        sanitised (i.e. cleared) before running a test.
 
1368
        """
 
1369
        self.change_selftest_debug_flags(set(['allow_debug']))
 
1370
        bzrlib.debug.debug_flags = set(['a-flag'])
 
1371
        class TestThatRecordsFlags(TestCase):
 
1372
            def test_foo(nested_self):
 
1373
                self.flags = set(bzrlib.debug.debug_flags)
 
1374
        test = TestThatRecordsFlags('test_foo')
 
1375
        test.run(self.make_test_result())
 
1376
        self.assertEqual(set(['a-flag']), self.flags)
 
1377
 
 
1378
    def test_debug_flags_restored(self):
 
1379
        """The bzrlib debug flags should be restored to their original state
 
1380
        after the test was run, even if allow_debug is set.
 
1381
        """
 
1382
        self.change_selftest_debug_flags(set(['allow_debug']))
 
1383
        # Now run a test that modifies debug.debug_flags.
 
1384
        bzrlib.debug.debug_flags = set(['original-state'])
 
1385
        class TestThatModifiesFlags(TestCase):
 
1386
            def test_foo(self):
 
1387
                bzrlib.debug.debug_flags = set(['modified'])
 
1388
        test = TestThatModifiesFlags('test_foo')
 
1389
        test.run(self.make_test_result())
 
1390
        self.assertEqual(set(['original-state']), bzrlib.debug.debug_flags)
 
1391
 
 
1392
    def make_test_result(self):
 
1393
        return bzrlib.tests.TextTestResult(
 
1394
            self._log_file, descriptions=0, verbosity=1)
 
1395
 
1354
1396
    def inner_test(self):
1355
1397
        # the inner child test
1356
1398
        note("inner_test")
1359
1401
        # the outer child test
1360
1402
        note("outer_start")
1361
1403
        self.inner_test = TestTestCase("inner_child")
1362
 
        result = bzrlib.tests.TextTestResult(self._log_file,
1363
 
                                        descriptions=0,
1364
 
                                        verbosity=1)
 
1404
        result = self.make_test_result()
1365
1405
        self.inner_test.run(result)
1366
1406
        note("outer finish")
1367
1407
 
1379
1419
        # the outer child test
1380
1420
        original_trace = bzrlib.trace._trace_file
1381
1421
        outer_test = TestTestCase("outer_child")
1382
 
        result = bzrlib.tests.TextTestResult(self._log_file,
1383
 
                                        descriptions=0,
1384
 
                                        verbosity=1)
 
1422
        result = self.make_test_result()
1385
1423
        outer_test.run(result)
1386
1424
        self.assertEqual(original_trace, bzrlib.trace._trace_file)
1387
1425