def setUp(self): self.fakeout = FakeStreamFormatter() self.fakeerr = FakeStreamFormatter() self.formatter = self.newFormatter()
class BaseFormatterTest(object): prefix = () suffix = ('\n', ) def setUp(self): self.fakeout = FakeStreamFormatter() self.fakeerr = FakeStreamFormatter() self.formatter = self.newFormatter() @property def verify_formatterClass(self): class state_verifying_class(self.formatterClass): def format(internal_self, *args, **kwds): autoline = self.fakeout.autoline try: ret = self.formatterClass.format(internal_self, *args, **kwds) except Exception as e: self.assertEqual( autoline, self.fakeout.autoline, msg="exception thrown %s, autoline was %s, now is %s" % (e, autoline, self.fakeout.autoline)) raise self.assertEqual(autoline, self.fakeout.autoline, msg="autoline was %s, now is %s" % (autoline, self.fakeout.autoline)) return ret return state_verifying_class def newFormatter(self, **kwargs): disable_method_checks = kwargs.pop("disable_method_checks", False) kwargs.setdefault("out", self.fakeout) kwargs.setdefault("err", self.fakeerr) if not disable_method_checks: kls = self.verify_formatterClass else: kls = self.formatterClass return kls(**kwargs) def assertOut(self, *args, **kwargs): stringlist = [] objectlist = [] args = list(args) prefix = kwargs.setdefault("prefix", self.prefix) if isinstance(prefix, tuple): args = list(prefix) + args elif isinstance(prefix, list): args = prefix + args else: args.insert(0, prefix) suffix = kwargs.setdefault("suffix", self.suffix) if isinstance(suffix, tuple): args = args + list(suffix) elif isinstance(suffix, list): args = args + suffix else: args.append(suffix) for arg in args: if isinstance(arg, unicode): stringlist.append(arg.encode('ascii')) elif isinstance(arg, bytes): stringlist.append(arg) else: objectlist.append(b''.join(stringlist)) stringlist = [] objectlist.append(arg) objectlist.append(b''.join(stringlist)) # Hack because a list with an empty string in is True if objectlist == [b'']: objectlist = [] self.assertEqual( self.fakeout.stream, objectlist, '\n' + '\n'.join( difflib.unified_diff(list(repr(s) for s in objectlist), list( repr(s) for s in self.fakeout.stream), 'expected', 'actual', lineterm=''))) self.fakeout.resetstream() def test_end(self): # Sub-classes should override this if they print something in end() self.formatter.format(FakeOp(FakeMutatedPkg('dev-util/diffball-1.1'))) self.fakeout.resetstream() self.formatter.end() self.assertOut(suffix=())
class BaseFormatterTest(object): prefix = () suffix = ('\n',) def setUp(self): self.fakeout = FakeStreamFormatter() self.fakeerr = FakeStreamFormatter() self.formatter = self.newFormatter() @property def verify_formatterClass(self): class state_verifying_class(self.formatterClass): def format(internal_self, *args, **kwds): autoline = self.fakeout.autoline try: ret = self.formatterClass.format(internal_self, *args, **kwds) except Exception as e: self.assertEqual(autoline, self.fakeout.autoline, msg= "exception thrown %s, autoline was %s, now is %s" % (e, autoline, self.fakeout.autoline)) raise self.assertEqual(autoline, self.fakeout.autoline, msg= "autoline was %s, now is %s" % (autoline, self.fakeout.autoline)) return ret return state_verifying_class def newFormatter(self, **kwargs): disable_method_checks = kwargs.pop("disable_method_checks", False) kwargs.setdefault("out", self.fakeout) kwargs.setdefault("err", self.fakeerr) if not disable_method_checks: kls = self.verify_formatterClass else: kls = self.formatterClass return kls(**kwargs) def assertOut(self, *args, **kwargs): stringlist = [] objectlist = [] args = list(args) prefix = kwargs.setdefault("prefix", self.prefix) if isinstance(prefix, tuple): args = list(prefix) + args elif isinstance(prefix, list): args = prefix + args else: args.insert(0, prefix) suffix = kwargs.setdefault("suffix", self.suffix) if isinstance(suffix, tuple): args = args + list(suffix) elif isinstance(suffix, list): args = args + suffix else: args.append(suffix) for arg in args: if isinstance(arg, unicode): stringlist.append(arg.encode('ascii')) elif isinstance(arg, bytes): stringlist.append(arg) else: objectlist.append(b''.join(stringlist)) stringlist = [] objectlist.append(arg) objectlist.append(b''.join(stringlist)) # Hack because a list with an empty string in is True if objectlist == [b'']: objectlist = [] self.assertEqual(self.fakeout.stream, objectlist, '\n' + '\n'.join( difflib.unified_diff( list(repr(s) for s in objectlist), list(repr(s) for s in self.fakeout.stream), 'expected', 'actual', lineterm=''))) self.fakeout.resetstream() def test_end(self): # Sub-classes should override this if they print something in end() self.formatter.format(FakeOp(FakeMutatedPkg('dev-util/diffball-1.1'))) self.fakeout.resetstream() self.formatter.end() self.assertOut(suffix=())