1826
1821
# testtools doesn't know about addNotSupported, so it just gets
1827
1822
# considered as a skip
1828
1823
result = self._run_test('test_missing_feature')
1829
reasons = _get_skip_reasons(result)
1824
reasons = result.skip_reasons
1830
1825
self.assertEqual({str(missing_feature)}, set(reasons))
1831
1826
skips = reasons[str(missing_feature)]
1832
1827
self.assertEqual(1, len(skips))
2246
2241
content, result = self.run_subunit_stream('test_skip')
2247
2242
self.assertNotContainsRe(content, b'(?m)^log$')
2248
2243
self.assertNotContainsRe(content, b'this test will be skipped')
2249
reasons = _get_skip_reasons(result)
2244
reasons = result.skip_reasons
2250
2245
self.assertEqual({'reason'}, set(reasons))
2251
2246
skips = reasons['reason']
2252
2247
self.assertEqual(1, len(skips))
2258
2253
content, result = self.run_subunit_stream('test_missing_feature')
2259
2254
self.assertNotContainsRe(content, b'(?m)^log$')
2260
2255
self.assertNotContainsRe(content, b'missing the feature')
2261
reasons = _get_skip_reasons(result)
2256
reasons = result.skip_reasons
2262
2257
self.assertEqual({'_MissingFeature\n'}, set(reasons))
2263
2258
skips = reasons['_MissingFeature\n']
2264
2259
self.assertEqual(1, len(skips))
2295
2290
class TestRunBzr(tests.TestCase):
2300
def _run_bzr_core(self, argv, retcode=0, encoding=None, stdin=None,
2296
def _run_bzr_core(self, argv, encoding=None, stdin=None,
2297
stdout=None, stderr=None, working_dir=None):
2302
2298
"""Override _run_bzr_core to test how it is invoked by run_bzr.
2304
2300
Attempts to run bzr from inside this class don't actually run it.
2307
2303
only need to test that it passes the right parameters to run_bzr.
2309
2305
self.argv = list(argv)
2310
self.retcode = retcode
2311
2306
self.encoding = encoding
2312
2307
self.stdin = stdin
2313
2308
self.working_dir = working_dir
2314
return self.retcode, self.out, self.err
2309
stdout.write(self.out)
2310
stderr.write(self.err)
2316
2313
def test_run_bzr_error(self):
2317
2314
self.out = "It sure does!\n"
2318
2316
out, err = self.run_bzr_error(['^$'], ['rocks'], retcode=34)
2319
2317
self.assertEqual(['rocks'], self.argv)
2320
self.assertEqual(34, self.retcode)
2321
2318
self.assertEqual('It sure does!\n', out)
2322
2319
self.assertEqual(out, self.out)
2323
2320
self.assertEqual('', err)
2324
2321
self.assertEqual(err, self.err)
2326
2323
def test_run_bzr_error_regexes(self):
2328
self.err = b"bzr: ERROR: foobarbaz is not versioned"
2325
self.err = "bzr: ERROR: foobarbaz is not versioned"
2329
2327
out, err = self.run_bzr_error(
2330
[b"bzr: ERROR: foobarbaz is not versioned"],
2328
["bzr: ERROR: foobarbaz is not versioned"],
2331
2329
['file-id', 'foobarbaz'])
2333
2331
def test_encoding(self):
2334
2332
"""Test that run_bzr passes encoding to _run_bzr_core"""
2335
2333
self.run_bzr('foo bar')
2336
self.assertEqual(None, self.encoding)
2334
self.assertEqual(osutils.get_user_encoding(), self.encoding)
2337
2335
self.assertEqual(['foo', 'bar'], self.argv)
2339
2337
self.run_bzr('foo bar', encoding='baz')
2340
2338
self.assertEqual('baz', self.encoding)
2341
2339
self.assertEqual(['foo', 'bar'], self.argv)
2343
def test_retcode(self):
2344
"""Test that run_bzr passes retcode to _run_bzr_core"""
2345
# Default is retcode == 0
2346
self.run_bzr('foo bar')
2347
self.assertEqual(0, self.retcode)
2348
self.assertEqual(['foo', 'bar'], self.argv)
2350
self.run_bzr('foo bar', retcode=1)
2351
self.assertEqual(1, self.retcode)
2352
self.assertEqual(['foo', 'bar'], self.argv)
2354
self.run_bzr('foo bar', retcode=None)
2355
self.assertEqual(None, self.retcode)
2356
self.assertEqual(['foo', 'bar'], self.argv)
2358
self.run_bzr(['foo', 'bar'], retcode=3)
2359
self.assertEqual(3, self.retcode)
2360
self.assertEqual(['foo', 'bar'], self.argv)
2362
2341
def test_stdin(self):
2363
2342
# test that the stdin keyword to run_bzr is passed through to
2364
2343
# _run_bzr_core as-is. We do this by overriding