Make strings unicode to fix test failures

Python enables unicode by default.  Various quoted strings used
in tests were not declared as unicode and so caused false failures.
This patch addresses this issue.

Signed-off-by: Matthew Thode <prometheanfire@gentoo.org>
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>

diff -rupN webapp-config-1.50.16/WebappConfig.orig/db.py webapp-config-1.50.16/WebappConfig/db.py
--- webapp-config-1.50.16/WebappConfig.orig/db.py	2012-06-17 11:10:15.964264617 -0500
+++ webapp-config-1.50.16/WebappConfig/db.py	2012-06-17 11:11:05.364265831 -0500
@@ -186,7 +186,7 @@ class WebappDB(AppHierarchy):
     >>> sb = [i[1] for i in b.list_locations().items()]
     >>> sb.sort(lambda x,y: cmp(x[0]+x[1],y[0]+y[1]))
     >>> sb
-    [['gallery', '1.4.4_p6'], ['gallery', '2.0_rc2'], ['horde', '3.0.5'], ['phpldapadmin', '0.9.7_alpha4']]
+    [[u'gallery', u'1.4.4_p6'], [u'gallery', u'2.0_rc2'], [u'horde', u'3.0.5'], [u'phpldapadmin', u'0.9.7_alpha4']]
 
     >>> c = WebappDB(here + '/tests/testfiles/webapps',
     ...              package = 'horde', version = '3.0.5')
@@ -572,7 +572,7 @@ class WebappSource(AppHierarchy):
         ...             'horde', '3.0.5')
         >>> d = a.get_source_directories('htdocs')
         >>> [i for i in d if i != '.svn']
-        ['dir1', 'dir2']
+        [u'dir1', u'dir2']
         '''
         dirs = []
 
@@ -604,7 +604,7 @@ class WebappSource(AppHierarchy):
         >>> a = WebappSource(here + '/tests/testfiles/share-webapps',
         ...             'horde', '3.0.5')
         >>> a.get_source_files('htdocs')
-        ['test1', 'test2']
+        [u'test1', u'test2']
         '''
 
         files = []
