/usr/share/pyshared/twisted/conch/test/test_text.py is in python-twisted-conch 1:11.1.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | # -*- test-case-name: twisted.conch.test.test_text -*-
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
from twisted.trial import unittest
from twisted.conch.insults import helper, text
A = text.attributes
class Serialization(unittest.TestCase):
def setUp(self):
self.attrs = helper.CharacterAttribute()
def testTrivial(self):
self.assertEqual(
text.flatten(A.normal['Hello, world.'], self.attrs),
'Hello, world.')
def testBold(self):
self.assertEqual(
text.flatten(A.bold['Hello, world.'], self.attrs),
'\x1b[1mHello, world.')
def testUnderline(self):
self.assertEqual(
text.flatten(A.underline['Hello, world.'], self.attrs),
'\x1b[4mHello, world.')
def testBlink(self):
self.assertEqual(
text.flatten(A.blink['Hello, world.'], self.attrs),
'\x1b[5mHello, world.')
def testReverseVideo(self):
self.assertEqual(
text.flatten(A.reverseVideo['Hello, world.'], self.attrs),
'\x1b[7mHello, world.')
def testMinus(self):
self.assertEqual(
text.flatten(
A.bold[A.blink['Hello', -A.bold[' world'], '.']],
self.attrs),
'\x1b[1;5mHello\x1b[0;5m world\x1b[1;5m.')
def testForeground(self):
self.assertEqual(
text.flatten(
A.normal[A.fg.red['Hello, '], A.fg.green['world!']],
self.attrs),
'\x1b[31mHello, \x1b[32mworld!')
def testBackground(self):
self.assertEqual(
text.flatten(
A.normal[A.bg.red['Hello, '], A.bg.green['world!']],
self.attrs),
'\x1b[41mHello, \x1b[42mworld!')
class EfficiencyTestCase(unittest.TestCase):
todo = ("flatten() isn't quite stateful enough to avoid emitting a few extra bytes in "
"certain circumstances, so these tests fail. The failures take the form of "
"additional elements in the ;-delimited character attribute lists. For example, "
"\\x1b[0;31;46m might be emitted instead of \\x[46m, even if 31 has already been "
"activated and no conflicting attributes are set which need to be cleared.")
def setUp(self):
self.attrs = helper.CharacterAttribute()
def testComplexStructure(self):
output = A.normal[
A.bold[
A.bg.cyan[
A.fg.red[
"Foreground Red, Background Cyan, Bold",
A.blink[
"Blinking"],
-A.bold[
"Foreground Red, Background Cyan, normal"]],
A.fg.green[
"Foreground Green, Background Cyan, Bold"]]]]
self.assertEqual(
text.flatten(output, self.attrs),
"\x1b[1;31;46mForeground Red, Background Cyan, Bold"
"\x1b[5mBlinking"
"\x1b[0;31;46mForeground Red, Background Cyan, normal"
"\x1b[1;32;46mForeground Green, Background Cyan, Bold")
def testNesting(self):
self.assertEqual(
text.flatten(A.bold['Hello, ', A.underline['world.']], self.attrs),
'\x1b[1mHello, \x1b[4mworld.')
self.assertEqual(
text.flatten(
A.bold[A.reverseVideo['Hello, ', A.normal['world'], '.']],
self.attrs),
'\x1b[1;7mHello, \x1b[0mworld\x1b[1;7m.')
|