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
|
#!/usr/bin/python
import apt
import logging
import sys
import unittest
sys.path.insert(0,"../")
from softwarecenter.utils import normalize_package_description
class TestAppDescriptionNormalize(unittest.TestCase):
""" tests the description noramlization """
def test_description_parser_regression_test_moppet(self):
# this is a regression test for the description parser
# there is a bug that after GAME FEATURES the bullet list
# is not actually displayed
s = """A challenging 3D block puzzle game.
Puzzle Moppet is a challenging 3D puzzle game featuring a diminutive and apparently mute creature who is lost in a mysterious floating landscape.
GAME FEATURES
* Save the Moppet from itself
"""
description_text = normalize_package_description(s)
self.assertEqual(
description_text,
"""A challenging 3D block puzzle game.\n
Puzzle Moppet is a challenging 3D puzzle game featuring a diminutive and apparently mute creature who is lost in a mysterious floating landscape.\n
GAME FEATURES
* Save the Moppet from itself""")
def test_description_parser_selected(self):
cache = apt.Cache()
self.assertEqual(
normalize_package_description(cache["arista"].description),
"""Arista is a simple multimedia transcoder, it focuses on being easy to use by making complex task of encoding for various devices simple.\n
Users should pick an input and a target device, choose a file to save to and go. Features:\n
* Presets for iPod, computer, DVD player, PSP, Playstation 3, and more.
* Live preview to see encoded quality.
* Automatically discover available DVD media and Video 4 Linux (v4l) devices.
* Rip straight from DVD media easily (requires libdvdcss).
* Rip straight from v4l devices.
* Simple terminal client for scripting.
* Automatic preset updating.""")
# note: bullet indentation
self.assertEqual(
normalize_package_description(cache["aa3d"].description),
"""This program generates the well-known and popular random dot stereograms in ASCII art.\n
Features:\n
* High quality ASCII art stereogram rendering
* Highly configurable
* User friendly command line interface (including full online help)""")
def test_description_parser_all(self):
import re
def descr_cmp_filter(s):
new = s
for k in [r"\n\s*- ", r"\n\s*\* ", r"\n\s*o ",
# actually kill off all remaining whitespace
r"\s"]:
new = re.sub(k, "", new)
return new
# test that all descriptions are parsable without failure
cache = apt.Cache()
for pkg in cache:
if pkg.candidate:
# gather the text in there
description_processed = normalize_package_description(pkg.description)
self.assertEqual(descr_cmp_filter(pkg.description),
descr_cmp_filter(description_processed),
"pkg '%s' diverge:\n%s\n\n%s\n" % (
pkg.name,
descr_cmp_filter(pkg.description),
descr_cmp_filter(description_processed)))
def test_htmlize(self):
from softwarecenter.utils import htmlize_package_description
s = """A challenging 3D block puzzle game.
Puzzle Moppet is a challenging 3D puzzle game featuring a diminutive and apparently mute creature who is lost in a mysterious floating landscape.
GAME FEATURES
* Save the Moppet from itself
"""
description_text = htmlize_package_description(s)
self.assertEqual(
description_text,
"""<p tabindex="0">A challenging 3D block puzzle game.</p><p tabindex="0">Puzzle Moppet is a challenging 3D puzzle game featuring a diminutive and apparently mute creature who is lost in a mysterious floating landscape.</p><p tabindex="0">GAME FEATURES</p><ul><li>Save the Moppet from itself</li></ul>""")
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
unittest.main()
|