summaryrefslogtreecommitdiffstats
path: root/pym/portage/tests/lafilefixer
diff options
context:
space:
mode:
authorSebastian Luther <SebastianLuther@gmx.de>2010-07-12 10:41:32 +0200
committerZac Medico <zmedico@gentoo.org>2010-07-12 02:34:06 -0700
commit76118ef9b746ca3ba644504b6ddb13906bc2e2f0 (patch)
tree4f1000c2d2570f12dc86684671c13093f14433ce /pym/portage/tests/lafilefixer
parent32264c30d8fc23f08f30f1488a1fa68d1f2cfc34 (diff)
downloadportage-76118ef9b746ca3ba644504b6ddb13906bc2e2f0.tar.gz
portage-76118ef9b746ca3ba644504b6ddb13906bc2e2f0.tar.bz2
portage-76118ef9b746ca3ba644504b6ddb13906bc2e2f0.zip
Let emerge fix .la files
Triggered by FEATURES="lafilefixing" (enabled by default) Includes a QA warning for invalid .la files.
Diffstat (limited to 'pym/portage/tests/lafilefixer')
-rw-r--r--pym/portage/tests/lafilefixer/__init__.py0
-rw-r--r--pym/portage/tests/lafilefixer/__test__0
-rw-r--r--pym/portage/tests/lafilefixer/test_lafilefixer.py134
3 files changed, 134 insertions, 0 deletions
diff --git a/pym/portage/tests/lafilefixer/__init__.py b/pym/portage/tests/lafilefixer/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/pym/portage/tests/lafilefixer/__init__.py
diff --git a/pym/portage/tests/lafilefixer/__test__ b/pym/portage/tests/lafilefixer/__test__
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/pym/portage/tests/lafilefixer/__test__
diff --git a/pym/portage/tests/lafilefixer/test_lafilefixer.py b/pym/portage/tests/lafilefixer/test_lafilefixer.py
new file mode 100644
index 000000000..5e4e840f3
--- /dev/null
+++ b/pym/portage/tests/lafilefixer/test_lafilefixer.py
@@ -0,0 +1,134 @@
+# test_lafilefixer.py -- Portage Unit Testing Functionality
+# Copyright 2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+from portage.tests import TestCase
+from portage.exception import InvalidData
+
+class test_lafilefixer(TestCase):
+
+ def get_test_cases_clean(self):
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' -lm'\n" + \
+ "current=6\n" + \
+ "age=0\n" + \
+ "revision=2\n" + \
+ "installed=yes\n" + \
+ "dlopen=''\n" + \
+ "dlpreopen=''\n" + \
+ "libdir='/usr/lib64'\n"
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' -lm'\n" + \
+ "current=6\n" + \
+ "age=0\n" + \
+ "revision=2\n" + \
+ "installed=yes\n" + \
+ "dlopen=''\n" + \
+ "dlpreopen=''\n" + \
+ "libdir='/usr/lib64'\n"
+ yield "dependency_libs=' liba.la /usr/lib64/bar.la -lc'\n"
+
+ def get_test_cases_update(self):
+ #.la -> -l*
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' /usr/lib64/liba.la /usr/lib64/libb.la -lc'\n", \
+ "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' -L/usr/lib64 -la -lb -lc'\n"
+ #move stuff into inherited_linker_flags
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' /usr/lib64/liba.la -pthread /usr/lib64/libb.la -lc'\n" + \
+ "inherited_linker_flags=''\n", \
+ "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' -L/usr/lib64 -la -lb -lc'\n" + \
+ "inherited_linker_flags=' -pthread'\n"
+ #reorder
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' /usr/lib64/liba.la -R/usr/lib64 /usr/lib64/libb.la -lc'\n", \
+ "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' -R/usr/lib64 -L/usr/lib64 -la -lb -lc'\n"
+ #remove duplicates from dependency_libs (the original version didn't do it for inherited_linker_flags)
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' /usr/lib64/liba.la /usr/lib64/libc.la -pthread -mt" + \
+ " -L/usr/lib -R/usr/lib64 -lc /usr/lib64/libb.la -lc'\n" +\
+ "inherited_linker_flags=' -pthread -pthread'\n", \
+ "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' -R/usr/lib64 -L/usr/lib64 -L/usr/lib -la -lc -lb'\n" +\
+ "inherited_linker_flags=' -pthread -pthread -mt'\n"
+ #-L rewriting
+ yield "dependency_libs=' -L/usr/X11R6/lib'\n", \
+ "dependency_libs=' -L/usr/lib'\n"
+ yield "dependency_libs=' -L/usr/local/lib'\n", \
+ "dependency_libs=' -L/usr/lib'\n"
+ yield "dependency_libs=' -L/usr/lib64/pkgconfig/../..'\n", \
+ "dependency_libs=' -L/usr'\n"
+ yield "dependency_libs=' -L/usr/lib/pkgconfig/..'\n", \
+ "dependency_libs=' -L/usr/lib'\n"
+ yield "dependency_libs=' -L/usr/lib/pkgconfig/../.. -L/usr/lib/pkgconfig/..'\n", \
+ "dependency_libs=' -L/usr -L/usr/lib'\n"
+
+ def get_test_cases_broken(self):
+ yield ""
+ #no dependency_libs
+ yield "dlname='libfoo.so.1'\n" + \
+ "current=6\n" + \
+ "age=0\n" + \
+ "revision=2\n"
+ #borken dependency_libs
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' /usr/lib64/liba.la /usr/lib64/libb.la -lc' \n"
+ #borken dependency_libs
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' /usr/lib64/liba.la /usr/lib64/libb.la -lc\n"
+ #crap in dependency_libs
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' /usr/lib64/liba.la /usr/lib64/libb.la -lc /-lstdc++'\n"
+ #dependency_libs twice
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "dependency_libs=' /usr/lib64/liba.la /usr/lib64/libb.la -lc /-lstdc++'\n" +\
+ "dependency_libs=' /usr/lib64/liba.la /usr/lib64/libb.la -lc /-lstdc++'\n"
+ #inherited_linker_flags twice
+ yield "dlname='libfoo.so.1'\n" + \
+ "library_names='libfoo.so.1.0.2 libfoo.so.1 libfoo.so'\n" + \
+ "old_library='libpdf.a'\n" + \
+ "inherited_linker_flags=''\n" +\
+ "inherited_linker_flags=''\n"
+
+ def testlafilefixer(self):
+ from portage.util.lafilefixer import _parse_lafile_contents, rewrite_lafile
+
+ for clean_contents in self.get_test_cases_clean():
+ self.assertEqual(rewrite_lafile(clean_contents), (False, None))
+
+ for original_contents, fixed_contents in self.get_test_cases_update():
+ self.assertEqual(rewrite_lafile(original_contents), (True, fixed_contents))
+
+ for broken_contents in self.get_test_cases_broken():
+ self.assertRaises(InvalidData, rewrite_lafile, broken_contents)