* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-23 9:51 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-23 9:51 UTC (permalink / raw
To: gentoo-commits
commit: b91b96cc78bd2ee8917f898c83db7751a22bef59
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon May 23 09:51:30 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon May 23 09:51:30 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=b91b96cc
Drop grabmodule().
---
PMSTestSuite/library/__init__.py | 53 +++++++++++++------------------------
1 files changed, 19 insertions(+), 34 deletions(-)
diff --git a/PMSTestSuite/library/__init__.py b/PMSTestSuite/library/__init__.py
index 5c56ba6..8447d04 100644
--- a/PMSTestSuite/library/__init__.py
+++ b/PMSTestSuite/library/__init__.py
@@ -13,34 +13,6 @@
from PMSTestSuite.library.case import TestCase
-def grabmodule(modname, baseclass):
- """
- Import Python module <modname> and find subclasses of <baseclass> there.
-
- Returns an iterator over subclasses or raises one of the following
- exceptions:
- - ImportError if module import fails,
- - TypeError if no matching class is found.
- """
- mod = __import__(modname, {}, {}, ['.'], 0)
- fail = True
-
- for k in dir(mod):
- modvar = getattr(mod, k)
- # the !issubclass() check is necessary to omit TestLibrary class
- # imported for the subclass
- try:
- if issubclass(modvar, baseclass) and \
- not issubclass(baseclass, modvar):
- fail = False
- yield modvar
- except TypeError:
- pass
-
- if fail:
- raise TypeError('Unable to find a %s subclass in %s'
- % (baseclass.__name__, modname))
-
class TestLibrary(object):
""" Base class for a test library. """
@@ -51,10 +23,11 @@ class TestLibrary(object):
Returns an iterator over TestCase subclass instances or raises one
of the following exceptions:
- - ImportError if submodule import fails,
- - TypeError if no TestCase subclass is found in a submodule.
+ - ImportError if submodule import fails.
"""
+
for t in self.test_names:
+ # XXX: tests without a '.' in __init__?
modname, clsname = t.rsplit('.', 1)
modname = '%s.%s' % (self.modname, modname)
mod = __import__(modname, {}, {}, [clsname], 0)
@@ -76,9 +49,21 @@ def load_library(name):
"""
modname = 'PMSTestSuite.library.%s' % name
- cls = list(grabmodule(modname, TestLibrary))
- if len(cls) > 1:
- raise TypeError('%s ambiguous - more than a single TestLibrary subclass found.'
+ mod = __import__(modname, {}, {}, ['.'], 0)
+
+ for k in dir(mod):
+ modvar = getattr(mod, k)
+ # the !issubclass() check is necessary to omit TestLibrary class
+ # imported for the subclass
+ try:
+ if issubclass(modvar, TestLibrary) and \
+ not issubclass(TestLibrary, modvar):
+ cls = modvar
+ break
+ except TypeError:
+ pass
+ else:
+ raise TypeError('Unable to find a TestLibrary subclass in %s'
% modname)
- return cls[0](modname)
+ return cls(modname)
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-23 11:52 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-23 11:52 UTC (permalink / raw
To: gentoo-commits
commit: a237c87d8da957b3d0a1904294b1645ba9204d91
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon May 23 11:52:08 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon May 23 11:52:08 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=a237c87d
Add a simple ebuild generation code.
---
PMSTestSuite/library/__init__.py | 5 ++++-
PMSTestSuite/library/case.py | 36 +++++++++++++++++++++++++++++++++++-
2 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/PMSTestSuite/library/__init__.py b/PMSTestSuite/library/__init__.py
index 8447d04..ba6867a 100644
--- a/PMSTestSuite/library/__init__.py
+++ b/PMSTestSuite/library/__init__.py
@@ -9,6 +9,8 @@
>>> t = [x for x in l][0]
>>> t # doctest: +ELLIPSIS
<PMSTestSuite.library.test.random_test.ExampleCase object at ...>
+>>> t.get_output_files() # doctest: +ELLIPSIS
+{'pms-test/examplecase/examplecase-0.ebuild': ...}
"""
from PMSTestSuite.library.case import TestCase
@@ -32,7 +34,8 @@ class TestLibrary(object):
modname = '%s.%s' % (self.modname, modname)
mod = __import__(modname, {}, {}, [clsname], 0)
cls = getattr(mod, clsname)
- yield cls()
+ for i in cls.inst_all():
+ yield i
def __init__(self, modname):
self.modname = modname
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 6eb3f09..f2115e2 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -2,10 +2,44 @@
# (c) 2011 Michał Górny <mgorny@gentoo.org>
# Released under the terms of the 2-clause BSD license.
+ebuild_header = '''# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit pms-test
+
+'''
+
class TestCase(object):
""" Base class for a test case. """
pass
class EbuildTestCase(TestCase):
""" Test case using a single ebuild (per EAPI). """
- pass
+
+ @classmethod
+ def inst_all(cls, *args, **kwargs):
+ for eapi in cls.relevant_eapis:
+ kwargs['eapi'] = eapi
+ yield cls(*args, **kwargs)
+
+ def __init__(self, eapi):
+ self.eapi = eapi
+
+ def get_output_files(self):
+ pn = self.__class__.__name__.lower()
+ fn = 'pms-test/%s/%s-%s.ebuild' % (pn, pn, self.eapi)
+ contents = [ebuild_header]
+
+ for k, v in self.ebuild_vars.items():
+ contents.append('%s="%s"\n' % (k, v)) # XXX: escaping
+
+ for f, lines in self.phase_funcs.items():
+ if f == 'pkg_setup':
+ lines.insert(0, 'pms-test_pkg_setup')
+ contents.append('\n%s() {\n' % f)
+ for l in lines:
+ contents.append('\t%s\n' % l) # XXX: smarter tabs
+ contents.append('}\n')
+
+ return {fn: ''.join(contents)}
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-24 8:11 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-24 8:11 UTC (permalink / raw
To: gentoo-commits
commit: f3554b599e4f59f2c31da7057b081689a02740d4
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue May 24 07:49:23 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue May 24 07:49:23 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=f3554b59
Use a class to lazily generate ebuild contents.
---
PMSTestSuite/library/__init__.py | 4 +++-
PMSTestSuite/library/case.py | 34 +++++++++++++++++++++-------------
2 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/PMSTestSuite/library/__init__.py b/PMSTestSuite/library/__init__.py
index ba6867a..b127108 100644
--- a/PMSTestSuite/library/__init__.py
+++ b/PMSTestSuite/library/__init__.py
@@ -9,8 +9,10 @@
>>> t = [x for x in l][0]
>>> t # doctest: +ELLIPSIS
<PMSTestSuite.library.test.random_test.ExampleCase object at ...>
->>> t.get_output_files() # doctest: +ELLIPSIS
+>>> files = t.get_output_files()
+>>> files # doctest: +ELLIPSIS
{'pms-test/examplecase/examplecase-0.ebuild': ...}
+>>> f = files.values()[0]
"""
from PMSTestSuite.library.case import TestCase
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index f2115e2..f6ae90b 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -27,19 +27,27 @@ class EbuildTestCase(TestCase):
self.eapi = eapi
def get_output_files(self):
- pn = self.__class__.__name__.lower()
- fn = 'pms-test/%s/%s-%s.ebuild' % (pn, pn, self.eapi)
- contents = [ebuild_header]
+ class EbuildTestCaseEbuildFile(object):
+ def __init__(self, parent):
+ self._parent = parent
+
+ def __str__(self):
+ contents = [ebuild_header]
+
+ for k, v in self._parent.ebuild_vars.items():
+ contents.append('%s="%s"\n' % (k, v)) # XXX: escaping
- for k, v in self.ebuild_vars.items():
- contents.append('%s="%s"\n' % (k, v)) # XXX: escaping
+ for f, lines in self._parent.phase_funcs.items():
+ if f == 'pkg_setup':
+ lines.insert(0, 'pms-test_pkg_setup')
+ contents.append('\n%s() {\n' % f)
+ for l in lines:
+ contents.append('\t%s\n' % l) # XXX: smarter tabs
+ contents.append('}\n')
- for f, lines in self.phase_funcs.items():
- if f == 'pkg_setup':
- lines.insert(0, 'pms-test_pkg_setup')
- contents.append('\n%s() {\n' % f)
- for l in lines:
- contents.append('\t%s\n' % l) # XXX: smarter tabs
- contents.append('}\n')
+ return ''.join(contents)
+
+ pn = self.__class__.__name__.lower()
+ fn = 'pms-test/%s/%s-%s.ebuild' % (pn, pn, self.eapi)
- return {fn: ''.join(contents)}
+ return {fn: EbuildTestCaseEbuildFile(self)}
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-24 8:11 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-24 8:11 UTC (permalink / raw
To: gentoo-commits
commit: a641f60b71f214376147384567d268d20dd18f5b
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue May 24 07:54:49 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue May 24 07:54:49 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=a641f60b
Add a minimal keyword-test for ebuild generation.
---
PMSTestSuite/library/__init__.py | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/__init__.py b/PMSTestSuite/library/__init__.py
index b127108..af7765f 100644
--- a/PMSTestSuite/library/__init__.py
+++ b/PMSTestSuite/library/__init__.py
@@ -13,6 +13,8 @@
>>> files # doctest: +ELLIPSIS
{'pms-test/examplecase/examplecase-0.ebuild': ...}
>>> f = files.values()[0]
+>>> str(f) # doctest: +ELLIPSIS
+'# Copyright 1999...inherit pms-test...pms-test_pkg_setup...die...'
"""
from PMSTestSuite.library.case import TestCase
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-24 8:11 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-24 8:11 UTC (permalink / raw
To: gentoo-commits
commit: db82b2a77ea002c6a82da3a895e9f3dd8d2366a3
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue May 24 08:11:05 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue May 24 08:11:25 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=db82b2a7
Docs for PMSTestSuite.library.case.
---
PMSTestSuite/library/case.py | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index f6ae90b..a3dcf4e 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -19,19 +19,35 @@ class EbuildTestCase(TestCase):
@classmethod
def inst_all(cls, *args, **kwargs):
+ """
+ Instantiate the test case for all relevant EAPIs.
+
+ Returns an iterator over a list of test case instances.
+ """
for eapi in cls.relevant_eapis:
kwargs['eapi'] = eapi
yield cls(*args, **kwargs)
def __init__(self, eapi):
+ """ Instiantate the test case for a particular EAPI. """
self.eapi = eapi
def get_output_files(self):
+ """
+ Get a dict of files to output in the repository for the test case.
+
+ Returns a dict with keys being filenames relative to the repository root
+ and associated values being classes evaluating to the file contents.
+ """
class EbuildTestCaseEbuildFile(object):
+ """ Lazy ebuild contents evaluator for EbuildTestCase. """
def __init__(self, parent):
+ """ Instantiate the evaluator for test case <parent>. """
+ assert(isinstance(parent, EbuildTestCase))
self._parent = parent
def __str__(self):
+ """ Return the ebuild contents as string. """
contents = [ebuild_header]
for k, v in self._parent.ebuild_vars.items():
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-24 14:28 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-24 14:28 UTC (permalink / raw
To: gentoo-commits
commit: f649f284cb33e439fc47b8d7014e78d98bb20a56
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue May 24 14:27:44 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue May 24 14:27:44 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=f649f284
Fix mutating phase func lines.
---
PMSTestSuite/library/case.py | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index a3dcf4e..05cd99e 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -54,9 +54,9 @@ class EbuildTestCase(TestCase):
contents.append('%s="%s"\n' % (k, v)) # XXX: escaping
for f, lines in self._parent.phase_funcs.items():
- if f == 'pkg_setup':
- lines.insert(0, 'pms-test_pkg_setup')
contents.append('\n%s() {\n' % f)
+ if f == 'pkg_setup':
+ contents.append('\tpms-test_pkg_setup\n')
for l in lines:
contents.append('\t%s\n' % l) # XXX: smarter tabs
contents.append('}\n')
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-25 20:40 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-25 20:40 UTC (permalink / raw
To: gentoo-commits
commit: fd6f6f613a327d4fcd757944c1871d7e14f3d90c
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed May 25 20:34:26 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed May 25 20:34:26 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=fd6f6f61
Declare phase funcs by default.
---
PMSTestSuite/library/case.py | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 05cd99e..9e72a2d 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -17,6 +17,12 @@ class TestCase(object):
class EbuildTestCase(TestCase):
""" Test case using a single ebuild (per EAPI). """
+ phase_funcs = dict([(func, []) for func in (
+ 'pkg_pretend', 'pkg_setup', 'src_unpack', 'src_prepare',
+ 'src_configure', 'src_compile', 'src_install',
+ 'pkg_preinst', 'pkg_postinst'
+ )])
+
@classmethod
def inst_all(cls, *args, **kwargs):
"""
@@ -54,6 +60,9 @@ class EbuildTestCase(TestCase):
contents.append('%s="%s"\n' % (k, v)) # XXX: escaping
for f, lines in self._parent.phase_funcs.items():
+ if not lines:
+ continue
+
contents.append('\n%s() {\n' % f)
if f == 'pkg_setup':
contents.append('\tpms-test_pkg_setup\n')
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-26 6:35 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-26 6:35 UTC (permalink / raw
To: gentoo-commits
commit: 9fb404f9c26c3007e158d5f597f03b0491b973fa
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu May 26 06:19:48 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu May 26 06:19:48 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=9fb404f9
Fix mutating shared phase funcs.
---
PMSTestSuite/library/case.py | 13 +++++++------
PMSTestSuite/library/standard | 2 +-
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 9e72a2d..084edd8 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -2,6 +2,13 @@
# (c) 2011 Michał Górny <mgorny@gentoo.org>
# Released under the terms of the 2-clause BSD license.
+# XXX: move to some consts module?
+phase_func_names = [
+ 'pkg_pretend', 'pkg_setup', 'src_unpack', 'src_prepare',
+ 'src_configure', 'src_compile', 'src_install',
+ 'pkg_preinst', 'pkg_postinst'
+]
+
ebuild_header = '''# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
@@ -17,12 +24,6 @@ class TestCase(object):
class EbuildTestCase(TestCase):
""" Test case using a single ebuild (per EAPI). """
- phase_funcs = dict([(func, []) for func in (
- 'pkg_pretend', 'pkg_setup', 'src_unpack', 'src_prepare',
- 'src_configure', 'src_compile', 'src_install',
- 'pkg_preinst', 'pkg_postinst'
- )])
-
@classmethod
def inst_all(cls, *args, **kwargs):
"""
diff --git a/PMSTestSuite/library/standard b/PMSTestSuite/library/standard
index a678eb2..ec868c9 160000
--- a/PMSTestSuite/library/standard
+++ b/PMSTestSuite/library/standard
@@ -1 +1 @@
-Subproject commit a678eb23b92b05685552da6a09642d14fdc38972
+Subproject commit ec868c966605b4d333240c27ed86811c1d154406
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-26 7:25 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-26 7:25 UTC (permalink / raw
To: gentoo-commits
commit: 8a0fabc3d56d57f69f86643d2add3ce535e9bd0d
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu May 26 07:22:23 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu May 26 07:22:23 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=8a0fabc3
Move class name -> PM code into separate function.
---
PMSTestSuite/library/case.py | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 2908342..02a3b9f 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -21,6 +21,15 @@ inherit pms-test
pn_re = re.compile('(.)([A-Z])')
+def cleanup_test_case_name(classname):
+ """
+ Create the ebuild PN from <classname>.
+ """
+
+ if classname.endswith('Test'):
+ classname = classname[:-4]
+ return pn_re.sub('\\1-\\2', classname).lower()
+
class TestCase(object):
""" Base class for a test case. """
pass
@@ -77,10 +86,7 @@ class EbuildTestCase(TestCase):
return ''.join(contents)
- pn = self.__class__.__name__
- if pn.endswith('Test'):
- pn = pn[:-4]
- pn = pn_re.sub('\\1-\\2', pn).lower()
+ pn = cleanup_test_case_name(self.__class__.__name__)
fn = 'pms-test/%s/%s-%s.ebuild' % (pn, pn, self.eapi)
return {fn: EbuildTestCaseEbuildFile(self)}
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-29 18:17 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-29 18:17 UTC (permalink / raw
To: gentoo-commits
commit: 3db0ba1d928414bedb4e697ff79464d59ab8a783
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun May 29 18:14:11 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun May 29 18:14:11 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=3db0ba1d
Initialize PN for test earlier and store it.
---
PMSTestSuite/library/case.py | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 120b71c..a9b27d3 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -60,6 +60,7 @@ class EbuildTestCase(TestCase):
def __init__(self, eapi):
""" Instiantate the test case for a particular EAPI. """
self.eapi = eapi
+ self.pn = cleanup_test_case_name(self.__class__.__name__)
def get_output_files(self):
"""
@@ -95,7 +96,7 @@ class EbuildTestCase(TestCase):
return ''.join(contents)
- pn = cleanup_test_case_name(self.__class__.__name__)
+ pn = self.pn
fn = 'pms-test/%s/%s-%s.ebuild' % (pn, pn, self.eapi)
return {fn: EbuildTestCaseEbuildFile(self)}
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-29 18:57 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-29 18:57 UTC (permalink / raw
To: gentoo-commits
commit: 5337c280c32ad6534c713adc5047920014c5a6a3
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun May 29 18:32:49 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun May 29 18:32:49 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=5337c280
Cache instantiated tests.
---
PMSTestSuite/library/__init__.py | 25 +++++++++++++++++--------
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/PMSTestSuite/library/__init__.py b/PMSTestSuite/library/__init__.py
index 52aa8d2..a473888 100644
--- a/PMSTestSuite/library/__init__.py
+++ b/PMSTestSuite/library/__init__.py
@@ -22,6 +22,8 @@ from PMSTestSuite.library.case import TestCase
class TestLibrary(object):
""" Base class for a test library. """
+ tests = None
+
def __iter__(self):
"""
Iterate over all the tests in a test library, loading its modules
@@ -32,14 +34,21 @@ class TestLibrary(object):
- ImportError if submodule import fails.
"""
- for t in self.test_names:
- # XXX: tests without a '.' in __init__?
- modname, clsname = t.rsplit('.', 1)
- modname = '%s.%s' % (self.modname, modname)
- mod = __import__(modname, {}, {}, [clsname], 0)
- cls = getattr(mod, clsname)
- for i in cls.inst_all():
- yield i
+ if self.tests is not None:
+ # tests already instantiated
+ for t in self.tests:
+ yield t
+ else:
+ self.tests = []
+ for t in self.test_names:
+ # XXX: tests without a '.' in __init__?
+ modname, clsname = t.rsplit('.', 1)
+ modname = '%s.%s' % (self.modname, modname)
+ mod = __import__(modname, {}, {}, [clsname], 0)
+ cls = getattr(mod, clsname)
+ for i in cls.inst_all():
+ self.tests.append(i)
+ yield i
def __init__(self, modname):
self.modname = modname
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-29 18:57 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-29 18:57 UTC (permalink / raw
To: gentoo-commits
commit: d817e9ddcfec5a573f5be2f61b41d731de299445
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun May 29 18:32:16 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun May 29 18:32:16 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=d817e9dd
Set EbuildTestCase.p as well.
---
PMSTestSuite/library/case.py | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index a9b27d3..1f8cf43 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -61,6 +61,7 @@ class EbuildTestCase(TestCase):
""" Instiantate the test case for a particular EAPI. """
self.eapi = eapi
self.pn = cleanup_test_case_name(self.__class__.__name__)
+ self.p = '%s-%s' % (self.pn, eapi)
def get_output_files(self):
"""
@@ -96,7 +97,6 @@ class EbuildTestCase(TestCase):
return ''.join(contents)
- pn = self.pn
- fn = 'pms-test/%s/%s-%s.ebuild' % (pn, pn, self.eapi)
+ fn = 'pms-test/%s/%s.ebuild' % (self.pn, self.p)
return {fn: EbuildTestCaseEbuildFile(self)}
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-29 18:57 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-29 18:57 UTC (permalink / raw
To: gentoo-commits
commit: 8c73247fd7fe389dba9edd6cab2a436ef3a0c2d9
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun May 29 18:57:12 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun May 29 18:57:12 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=8c73247f
Output EAPI in ebuilds.
---
PMSTestSuite/library/case.py | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 1f8cf43..103d822 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -15,6 +15,8 @@ ebuild_header = '''# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
+EAPI=%d
+
inherit pms-test
'''
@@ -79,7 +81,7 @@ class EbuildTestCase(TestCase):
def __str__(self):
""" Return the ebuild contents as string. """
- contents = [ebuild_header]
+ contents = [ebuild_header % self._parent.eapi]
for k, v in self._parent.ebuild_vars.items():
contents.append('%s="%s"\n' % (k, v)) # XXX: escaping
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-05-31 17:19 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-05-31 17:19 UTC (permalink / raw
To: gentoo-commits
commit: c62e5d679de8cb471208aa394a62b6c4ae1b5e82
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue May 31 17:19:29 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue May 31 17:19:29 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=c62e5d67
Update the library to use D-Bus.
---
PMSTestSuite/library/standard | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/PMSTestSuite/library/standard b/PMSTestSuite/library/standard
index ec868c9..1be532a 160000
--- a/PMSTestSuite/library/standard
+++ b/PMSTestSuite/library/standard
@@ -1 +1 @@
-Subproject commit ec868c966605b4d333240c27ed86811c1d154406
+Subproject commit 1be532a0d975ec2aebefc6e8bd6369b7b0e5146d
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-03 17:36 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-03 17:36 UTC (permalink / raw
To: gentoo-commits
commit: 9897ef14df1f728247856ecf17ee145fcaf18528
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 3 17:29:26 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jun 3 17:29:26 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=9897ef14
Support specifying additional inherits for test cases.
---
PMSTestSuite/library/case.py | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 8d70f93..30fd819 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -17,7 +17,7 @@ ebuild_header = '''# Copyright 1999-2011 Gentoo Foundation
EAPI=%d
-inherit pms-test
+inherit %s
'''
@@ -50,12 +50,16 @@ class EbuildTestCase(TestCase):
Test case using a single ebuild (per EAPI).
Properties:
+ - ebuild_vars - additional global variables (a list),
- expect_failure - if set to False (the default), the test is supposed
to merge successfully. Otherwise, the test ebuild is supposed to fail
- to merge (die).
+ to merge (die),
+ - inherits - additional eclasses to inherit (a list),
+ - phase_funcs - phase function contents (a dict of lists).
"""
expect_failure = False
+ inherits = []
@classmethod
def inst_all(cls, *args, **kwargs):
@@ -95,7 +99,8 @@ class EbuildTestCase(TestCase):
def __str__(self):
""" Return the ebuild contents as string. """
- contents = [ebuild_header % self._parent.eapi]
+ contents = [ebuild_header % (self._parent.eapi,
+ ' '.join(['pms-test'] + self._parent.inherits))]
for k, v in self._parent.ebuild_vars.items():
contents.append('%s="%s"\n' % (k, v)) # XXX: escaping
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-07 17:22 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-07 17:22 UTC (permalink / raw
To: gentoo-commits
commit: b3632fa191a094b8e6f0212b6d0d29f0597ffe4c
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 7 17:22:25 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jun 7 17:22:25 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=b3632fa1
Don't expect pms-test_pkg_setup anymore.
---
PMSTestSuite/library/__init__.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/PMSTestSuite/library/__init__.py b/PMSTestSuite/library/__init__.py
index bcf8f6f..545a211 100644
--- a/PMSTestSuite/library/__init__.py
+++ b/PMSTestSuite/library/__init__.py
@@ -14,7 +14,7 @@
{'pms-test/random-example/random-example-0.ebuild': ...}
>>> f = files.values()[0]
>>> str(f) # doctest: +ELLIPSIS
-'# Copyright 1999...inherit pms-test...pms-test_pkg_setup...die...'
+'# Copyright 1999...inherit pms-test...die...'
"""
from PMSTestSuite.library.case import TestCase
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-13 19:16 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-13 19:16 UTC (permalink / raw
To: gentoo-commits
commit: 4848a6e5cf8b0d5a76badd80f04d76aa0aa7cf0b
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 13 18:53:31 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jun 13 18:53:31 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=4848a6e5
Copy test lists and dicts when instantiating.
This way, we can avoid sharing data between different instances
of the test class and make modifying it much easier.
---
PMSTestSuite/library/case.py | 14 +++++++++++---
1 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index d063ce3..5f58b41 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -2,7 +2,7 @@
# (c) 2011 Michał Górny <mgorny@gentoo.org>
# Released under the terms of the 2-clause BSD license.
-import re
+import copy, re
# XXX: move to some consts module?
phase_func_names = [
@@ -50,16 +50,21 @@ class EbuildTestCase(TestCase):
Test case using a single ebuild (per EAPI).
Properties:
- - ebuild_vars - additional global variables (a list),
+ - ebuild_vars - additional global variables (a dict of strings),
- expect_failure - if set to False (the default), the test is supposed
to merge successfully. Otherwise, the test ebuild is supposed to fail
to merge (die),
- - inherits - additional eclasses to inherit (a list),
+ - inherits - additional eclasses to inherit (a list of strings),
- phase_funcs - phase function contents (a dict of lists).
+
+ The __init__() function is going to clone (deepcopy()) all the above
+ properties to allow modifying instance variables easily.
"""
+ ebuild_vars = {}
expect_failure = False
inherits = []
+ phase_funcs = {}
@classmethod
def inst_all(cls, *args, **kwargs):
@@ -83,6 +88,9 @@ class EbuildTestCase(TestCase):
self.pn = cleanup_test_case_name(self.__class__.__name__)
self.p = '%s-%s' % (self.pn, eapi)
+ for v in ('ebuild_vars', 'inherits', 'phase_funcs'):
+ setattr(self, v, copy.deepcopy(getattr(self, v)))
+
def get_output_files(self):
"""
Get a dict of files to output in the repository for the test case.
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-13 19:16 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-13 19:16 UTC (permalink / raw
To: gentoo-commits
commit: 3d16982edcdd1b9de22cec32fde91645a1e6378f
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 13 19:07:52 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jun 13 19:08:18 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=3d16982e
Add dependency output files to EbuildDependencyTestCases.
---
PMSTestSuite/library/depend_case.py | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/depend_case.py b/PMSTestSuite/library/depend_case.py
index 9e83f81..34de0bf 100644
--- a/PMSTestSuite/library/depend_case.py
+++ b/PMSTestSuite/library/depend_case.py
@@ -39,3 +39,10 @@ class EbuildDependencyTestCase(EbuildTestCase):
self.ebuild_vars[v] = ''
for o in obj_list:
self.ebuild_vars[v] += '\n\t=%s' % o.cpv
+
+ def get_output_files(self):
+ of = EbuildTestCase.get_output_files(self)
+ for o in self.depend_objs + self.rdepend_objs:
+ of.update(o.get_output_files())
+
+ return of
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-14 8:32 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-14 8:32 UTC (permalink / raw
To: gentoo-commits
commit: 0ab45433e1c2e28a592f4c2101a7c9f6a82a2277
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 14 07:23:21 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jun 14 07:26:07 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=0ab45433
Support test case object finalization.
This allows superclasses to perform additional modifications or checks
before outputting the files.
---
PMSTestSuite/library/case.py | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index d3e1126..291149b 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -43,7 +43,13 @@ def cleanup_test_case_name(classname):
class TestCase(object):
""" Base class for a test case. """
- pass
+
+ def _finalize(self):
+ """
+ Do any final modifications to test case data. Mark it finalized.
+ This function shall be called at most once per object.
+ """
+ self._finalized = True
class EbuildTestCase(TestCase):
"""
@@ -66,6 +72,8 @@ class EbuildTestCase(TestCase):
inherits = []
phase_funcs = {}
+ _finalized = False
+
@classmethod
def inst_all(cls, *args, **kwargs):
"""
@@ -127,6 +135,9 @@ class EbuildTestCase(TestCase):
return ''.join(contents)
+ if not self._finalized:
+ self._finalize()
+
fn = 'pms-test/%s/%s.ebuild' % (self.pn, self.p)
return {fn: EbuildTestCaseEbuildFile(self)}
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-14 8:32 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-14 8:32 UTC (permalink / raw
To: gentoo-commits
commit: 081caddccff7b449226277e6aa9cb34da7b96164
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 14 07:16:09 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jun 14 07:16:09 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=081caddc
Create empty phase functions for convenience.
---
PMSTestSuite/library/case.py | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 5f58b41..d3e1126 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -90,6 +90,9 @@ class EbuildTestCase(TestCase):
for v in ('ebuild_vars', 'inherits', 'phase_funcs'):
setattr(self, v, copy.deepcopy(getattr(self, v)))
+ for pf in phase_func_names:
+ if pf not in self.phase_funcs:
+ self.phase_funcs[pf] = []
def get_output_files(self):
"""
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-14 12:35 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-14 12:35 UTC (permalink / raw
To: gentoo-commits
commit: 2aec55d843e01e7eef52d867e174a69faf3e19ce
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 14 12:09:13 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jun 14 12:09:13 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=2aec55d8
Use properties to get EbuildTestCase PN/PV/P.
---
PMSTestSuite/library/case.py | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 33f66ac..8430d21 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -91,6 +91,18 @@ class EbuildTestCase(TestCase):
yield cls(*args, **kwargs)
@property
+ def pn(self):
+ return cleanup_test_case_name(self.__class__.__name__)
+
+ @property
+ def pv(self):
+ return self.eapi
+
+ @property
+ def p(self):
+ return '%s-%s' % (self.pn, self.pv)
+
+ @property
def cpv(self):
""" Return CPV for the test. """
return 'pms-test/%s' % self.p
@@ -98,8 +110,6 @@ class EbuildTestCase(TestCase):
def __init__(self, eapi):
""" Instiantate the test case for a particular EAPI. """
self.eapi = eapi
- self.pn = cleanup_test_case_name(self.__class__.__name__)
- self.p = '%s-%s' % (self.pn, eapi)
for v in ('ebuild_vars', 'inherits', 'phase_funcs'):
setattr(self, v, copy.deepcopy(getattr(self, v)))
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-16 19:49 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-16 19:49 UTC (permalink / raw
To: gentoo-commits
commit: 4ce7a1639489bd5e6777548b9a89c9d8d91012a4
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 16 19:30:16 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jun 16 19:30:16 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=4ce7a163
Support grabbing test count through len(test_library).
---
PMSTestSuite/library/__init__.py | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/__init__.py b/PMSTestSuite/library/__init__.py
index fe045f9..3c7f6b1 100644
--- a/PMSTestSuite/library/__init__.py
+++ b/PMSTestSuite/library/__init__.py
@@ -52,6 +52,14 @@ class TestLibrary(object):
self.tests.append(i)
yield i
+ def __len__(self):
+ if self.tests is None:
+ # pre-init, shouldn't be needed
+ for t in self:
+ pass
+
+ return len(self.tests)
+
def __init__(self, modname):
self.modname = modname
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-16 19:49 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-16 19:49 UTC (permalink / raw
To: gentoo-commits
commit: cbca0a6305bd26c900d883e9ba4115a726662582
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 16 19:39:14 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jun 16 19:39:14 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=cbca0a63
Set DESCRIPTION in _finalize() only for ebuild cases.
---
PMSTestSuite/library/case.py | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 8328a5f..d16cedd 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -44,6 +44,8 @@ def cleanup_test_case_name(classname):
class TestCase(object):
""" Base class for a test case. """
+ _finalized = False
+
def _finalize(self):
"""
Do any final modifications to test case data. Mark it finalized.
@@ -51,11 +53,6 @@ class TestCase(object):
"""
self._finalized = True
- if 'DESCRIPTION' not in self.ebuild_vars:
- descdoc = ' '.join(self.__doc__.split())
-
- self.ebuild_vars['DESCRIPTION'] = descdoc.rstrip('.')
-
def clean(self, pm):
"""
Schedule cleaning the test using PackageManager instance <pm>.
@@ -99,8 +96,6 @@ class EbuildTestCase(TestCase):
inherits = []
phase_funcs = {}
- _finalized = False
-
@classmethod
def inst_all(cls, *args, **kwargs):
"""
@@ -129,6 +124,14 @@ class EbuildTestCase(TestCase):
""" Return CPV for the test. """
return 'pms-test/%s' % self.p
+ def _finalize(self):
+ TestCase._finalize(self)
+
+ if 'DESCRIPTION' not in self.ebuild_vars:
+ descdoc = ' '.join(self.__doc__.split())
+
+ self.ebuild_vars['DESCRIPTION'] = descdoc.rstrip('.')
+
def __init__(self, eapi):
""" Instiantate the test case for a particular EAPI. """
self.eapi = eapi
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-17 5:59 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-17 5:59 UTC (permalink / raw
To: gentoo-commits
commit: 5788660e337207a42b0aa7562bc7e8dd1b176591
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 17 05:52:14 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jun 17 05:52:14 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=5788660e
Unmerge test dependencies as well.
---
PMSTestSuite/library/depend_case.py | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/depend_case.py b/PMSTestSuite/library/depend_case.py
index 34de0bf..e474010 100644
--- a/PMSTestSuite/library/depend_case.py
+++ b/PMSTestSuite/library/depend_case.py
@@ -40,6 +40,11 @@ class EbuildDependencyTestCase(EbuildTestCase):
for o in obj_list:
self.ebuild_vars[v] += '\n\t=%s' % o.cpv
+ def clean(self, pm):
+ EbuildTestCase.clean(self, pm)
+ for o in self.depend_objs + self.rdepend_objs:
+ o.clean(pm)
+
def get_output_files(self):
of = EbuildTestCase.get_output_files(self)
for o in self.depend_objs + self.rdepend_objs:
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-17 15:07 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-17 15:07 UTC (permalink / raw
To: gentoo-commits
commit: 9ff1355f482b6bf6301c09c8da136f55ec5cc163
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 17 15:00:33 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jun 17 15:00:33 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=9ff1355f
Use dependant test results to determine the dependency test result.
---
PMSTestSuite/library/depend_case.py | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/depend_case.py b/PMSTestSuite/library/depend_case.py
index e474010..c7a7c56 100644
--- a/PMSTestSuite/library/depend_case.py
+++ b/PMSTestSuite/library/depend_case.py
@@ -51,3 +51,9 @@ class EbuildDependencyTestCase(EbuildTestCase):
of.update(o.get_output_files())
return of
+
+ def check_result(self, pm):
+ res = EbuildTestCase.check_result(self, pm)
+ for o in self.depend_objs + self.rdepend_objs:
+ res &= o.check_result(pm)
+ return res
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-20 19:20 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-20 19:20 UTC (permalink / raw
To: gentoo-commits
commit: 1f52e33b1425eec4f65dfc61b69b84938feaac87
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 20 19:09:42 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jun 20 19:09:42 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=1f52e33b
Declare get_output_files() in TestCase.
---
PMSTestSuite/library/case.py | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 4126c26..dc33e99 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -53,6 +53,15 @@ class TestCase(object):
"""
self._finalized = True
+ def get_output_files(self):
+ """
+ Get a dict of files to output in the repository for the test case.
+
+ Returns a dict with keys being filenames relative to the repository root
+ and associated values evaluating to a file contents (as strings).
+ """
+ raise NotImplementedError('Please override TestCase.get_output_files()')
+
def clean(self, pm):
"""
Schedule cleaning the test using PackageManager instance <pm>.
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-23 21:14 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-23 21:14 UTC (permalink / raw
To: gentoo-commits
commit: d18c788c123ecd352ff76d12fb062fb5d096d1ea
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 23 21:04:46 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jun 23 21:04:46 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=d18c788c
EbuildDependencyTestCase: support PDEPEND as well.
---
PMSTestSuite/library/depend_case.py | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/PMSTestSuite/library/depend_case.py b/PMSTestSuite/library/depend_case.py
index ca111fb..5d80d3c 100644
--- a/PMSTestSuite/library/depend_case.py
+++ b/PMSTestSuite/library/depend_case.py
@@ -21,6 +21,7 @@ class EbuildDependencyTestCase(EbuildTestCase):
depend_classes = []
rdepend_classes = []
+ pdepend_classes = []
def __init__(self, eapi):
EbuildTestCase.__init__(self, eapi)
@@ -28,7 +29,8 @@ class EbuildDependencyTestCase(EbuildTestCase):
self.dependant_ebuilds = []
for class_list, v in ((self.depend_classes, 'DEPEND'),
- (self.rdepend_classes, 'RDEPEND')):
+ (self.rdepend_classes, 'RDEPEND'),
+ (self.pdepend_classes, 'PDEPEND')):
if v not in self.ebuild_vars:
self.ebuild_vars[v] = ''
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/
@ 2011-06-23 21:14 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-23 21:14 UTC (permalink / raw
To: gentoo-commits
commit: 12662825666c17d462e20d5610af926c0cea1db4
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 23 21:12:13 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jun 23 21:12:13 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=12662825
Fix adding a hyphen between two capital letters.
---
PMSTestSuite/library/case.py | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/PMSTestSuite/library/case.py b/PMSTestSuite/library/case.py
index 8d222df..9a0b37a 100644
--- a/PMSTestSuite/library/case.py
+++ b/PMSTestSuite/library/case.py
@@ -23,7 +23,7 @@ inherit %s
'''
-pn_re = re.compile('(.)([A-Z])')
+pn_re = re.compile('([^A-Z])([A-Z])')
def cleanup_test_case_name(classname):
"""
@@ -37,6 +37,8 @@ def cleanup_test_case_name(classname):
'test-zor'
>>> cleanup_test_case_name('veryRandomCamelCaseTest')
'very-random-camel-case'
+ >>> cleanup_test_case_name('RDependTest')
+ 'rdepend'
"""
if classname.endswith('Test'):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-06-29 17:52 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-29 17:52 UTC (permalink / raw
To: gentoo-commits
commit: 34e2d2cb95110c1155a96f385db7d95b93d942e5
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 29 17:05:40 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jun 29 17:05:40 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=34e2d2cb
Set defaults for supported_ and relevant_eapis.
---
pmstestsuite/library/case.py | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 0843677..e87f15d 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -2,7 +2,7 @@
# (c) 2011 Michał Górny <mgorny@gentoo.org>
# Released under the terms of the 2-clause BSD license.
-import copy, re
+import copy, random, re
from abc import ABCMeta, abstractmethod, abstractproperty
@@ -118,12 +118,12 @@ class EbuildTestCase(TestCase):
def supported_eapis(self):
"""
A list of EAPIs for which the test is able to run and gives
- predictible results.
+ predictible results. Defaults to all available EAPIs.
For example, if a feature is required in EAPI 3+ and optional
in earlier EAPIs, this variable should contain (3,4).
"""
- pass
+ return (0, 1, 2, 3, 4)
@property
def relevant_eapis(self):
@@ -131,8 +131,10 @@ class EbuildTestCase(TestCase):
A list of EAPIs for which the test should be run by default (in
non-thorough mode). This should list all the EAPIs where
a change of behaviour occurs.
+
+ When unset, defaults to a random element of .supported_eapis().
"""
- pass
+ return random.choice(self.supported_eapis)
@classmethod
def inst_all(cls, *args, **kwargs):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-06-29 17:52 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-29 17:52 UTC (permalink / raw
To: gentoo-commits
commit: 4b45ef360b363c7fc472e6d746ee68e70ee61837
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 29 17:30:32 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jun 29 17:32:35 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=4b45ef36
Support grabbing relevant_ and supported_eapis from a prop.
As Python doesn't supply us with class properties, we need a little
function to handle transforming them as necessary. Hopefully it won't be
an ugly hack as it uses the property object public API.
---
pmstestsuite/library/case.py | 23 +++++++++++++++++++----
1 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index e87f15d..3ab5197 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -114,8 +114,20 @@ class EbuildTestCase(TestCase):
inherits = []
phase_funcs = {}
+ @classmethod
+ def _eval_prop(cls, prop_or_obj):
+ """
+ Evaluate and return the value of a property when passed a property
+ object, or return the passed value otherwise.
+ """
+
+ if isinstance(prop_or_obj, property):
+ return prop_or_obj.fget(cls)
+ else:
+ return prop_or_obj
+
@property
- def supported_eapis(self):
+ def supported_eapis(cls):
"""
A list of EAPIs for which the test is able to run and gives
predictible results. Defaults to all available EAPIs.
@@ -126,7 +138,7 @@ class EbuildTestCase(TestCase):
return (0, 1, 2, 3, 4)
@property
- def relevant_eapis(self):
+ def relevant_eapis(cls):
"""
A list of EAPIs for which the test should be run by default (in
non-thorough mode). This should list all the EAPIs where
@@ -134,7 +146,7 @@ class EbuildTestCase(TestCase):
When unset, defaults to a random element of .supported_eapis().
"""
- return random.choice(self.supported_eapis)
+ return (random.choice(cls._eval_prop(cls.supported_eapis)),)
@classmethod
def inst_all(cls, *args, **kwargs):
@@ -143,7 +155,10 @@ class EbuildTestCase(TestCase):
Returns an iterator over a list of test case instances.
"""
- for eapi in cls.relevant_eapis:
+
+ # sadly, no @classproperty
+ # but property object attributes are official
+ for eapi in cls._eval_prop(cls.relevant_eapis):
kwargs['eapi'] = eapi
yield cls(*args, **kwargs)
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-06-29 17:52 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-29 17:52 UTC (permalink / raw
To: gentoo-commits
commit: 3c8e1b589caf1b71b68bc7516711e7e10bcd3e4c
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 29 16:57:41 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jun 29 16:57:41 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=3c8e1b58
Add supported_eapis variable for EbuildTestCase.
---
pmstestsuite/library/case.py | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 9a0b37a..0843677 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -114,6 +114,26 @@ class EbuildTestCase(TestCase):
inherits = []
phase_funcs = {}
+ @property
+ def supported_eapis(self):
+ """
+ A list of EAPIs for which the test is able to run and gives
+ predictible results.
+
+ For example, if a feature is required in EAPI 3+ and optional
+ in earlier EAPIs, this variable should contain (3,4).
+ """
+ pass
+
+ @property
+ def relevant_eapis(self):
+ """
+ A list of EAPIs for which the test should be run by default (in
+ non-thorough mode). This should list all the EAPIs where
+ a change of behaviour occurs.
+ """
+ pass
+
@classmethod
def inst_all(cls, *args, **kwargs):
"""
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-06-29 17:52 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-29 17:52 UTC (permalink / raw
To: gentoo-commits
commit: a90c5dcab9a1b5ae0c9b4a4246c307709754b9c6
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 29 17:39:00 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jun 29 17:39:00 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=a90c5dca
Support passing kwargs to the library constructor.
---
pmstestsuite/library/__init__.py | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pmstestsuite/library/__init__.py b/pmstestsuite/library/__init__.py
index 00891f6..a638b62 100644
--- a/pmstestsuite/library/__init__.py
+++ b/pmstestsuite/library/__init__.py
@@ -84,10 +84,10 @@ class TestLibrary(object):
""" Return common files necessary for the library (e.g. eclasses). """
return {}
-def load_library(name):
+def load_library(name, **kwargs):
"""
Try to load a test library <name>. Instiantiate the first TestLibrary
- subclass found there.
+ subclass found there. Pass kwargs to the __init__() function.
Returns a new TestLibrary subclass instance or raises one of the following
exceptions:
@@ -113,4 +113,4 @@ def load_library(name):
raise TypeError('Unable to find a TestLibrary subclass in %s'
% modname)
- return cls(modname)
+ return cls(modname, **kwargs)
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-06-29 17:52 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-29 17:52 UTC (permalink / raw
To: gentoo-commits
commit: 488599349fcf9b124ed3f04488bdb09704b2a793
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 29 17:42:55 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jun 29 17:42:55 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=48859934
EbuildTestCase: drop unused args to inst_all().
---
pmstestsuite/library/case.py | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 3ab5197..3eba089 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -149,7 +149,7 @@ class EbuildTestCase(TestCase):
return (random.choice(cls._eval_prop(cls.supported_eapis)),)
@classmethod
- def inst_all(cls, *args, **kwargs):
+ def inst_all(cls):
"""
Instantiate the test case for all relevant EAPIs.
@@ -159,8 +159,7 @@ class EbuildTestCase(TestCase):
# sadly, no @classproperty
# but property object attributes are official
for eapi in cls._eval_prop(cls.relevant_eapis):
- kwargs['eapi'] = eapi
- yield cls(*args, **kwargs)
+ yield cls(eapi = eapi)
@property
def pn(self):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-06-29 17:52 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-06-29 17:52 UTC (permalink / raw
To: gentoo-commits
commit: f35a14a1d1f8cc7e2b79fdb3ae3054f038e9d407
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 29 17:46:51 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jun 29 17:46:51 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=f35a14a1
Actually support the thorough mode.
---
pmstestsuite/library/__init__.py | 2 +-
pmstestsuite/library/case.py | 14 +++++++++-----
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/pmstestsuite/library/__init__.py b/pmstestsuite/library/__init__.py
index 6499e3f..d65958f 100644
--- a/pmstestsuite/library/__init__.py
+++ b/pmstestsuite/library/__init__.py
@@ -48,7 +48,7 @@ class TestLibrary(object):
modname = '%s.%s' % (self.modname, modname)
mod = __import__(modname, {}, {}, [clsname], 0)
cls = getattr(mod, clsname)
- for i in cls.inst_all():
+ for i in cls.inst_all(thorough = self.thorough):
self.tests.append(i)
yield i
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 3eba089..3327c33 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -149,16 +149,20 @@ class EbuildTestCase(TestCase):
return (random.choice(cls._eval_prop(cls.supported_eapis)),)
@classmethod
- def inst_all(cls):
+ def inst_all(cls, thorough = False):
"""
- Instantiate the test case for all relevant EAPIs.
+ Instantiate the test case for all relevant EAPIs. If in thorough
+ mode, assume all supported EAPIs are relevant.
Returns an iterator over a list of test case instances.
"""
- # sadly, no @classproperty
- # but property object attributes are official
- for eapi in cls._eval_prop(cls.relevant_eapis):
+ if thorough:
+ eapis = cls.supported_eapis
+ else:
+ eapis = cls.relevant_eapis
+
+ for eapi in cls._eval_prop(eapis):
yield cls(eapi = eapi)
@property
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-07-24 14:37 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-07-24 14:37 UTC (permalink / raw
To: gentoo-commits
commit: 8e3f05a32064e31e0662e27488ae639c5c1d8283
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 24 08:25:43 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Jul 24 14:38:22 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=8e3f05a3
Add a base class for eclass dep tests.
---
pmstestsuite/library/depend_case.py | 86 +++++++++++++++++++++++++++++++++++
1 files changed, 86 insertions(+), 0 deletions(-)
diff --git a/pmstestsuite/library/depend_case.py b/pmstestsuite/library/depend_case.py
index 6a6afc3..f5f7327 100644
--- a/pmstestsuite/library/depend_case.py
+++ b/pmstestsuite/library/depend_case.py
@@ -3,6 +3,7 @@
# Released under the terms of the 2-clause BSD license.
from pmstestsuite.library.case import EbuildTestCase
+from pmstestsuite.library.eclass_case import EclassTestCase
class EbuildDependencyTestCase(EbuildTestCase):
"""
@@ -69,3 +70,88 @@ class EbuildDependencyTestCase(EbuildTestCase):
for o in self.dependant_ebuilds:
res &= o.check_result(pm)
return res
+
+class EclassDependencyTestCase(EclassTestCase, EbuildDependencyTestCase):
+ """
+ Test case utilizing multiple ebuilds in order to check dependency
+ resolution in an eclass.
+
+ In order to perform a dependency test, please:
+
+ 1. create EbuildTestCase subclasses for the dependencies like usual,
+ 2. create EclassDependencyTestCase and refer to the classes created
+ above in depend_classes, rdepend_classes and eclass_*.
+
+ The class is going to set up all ebuilds, DEPEND and RDEPEND automagically.
+ However, you need to provide phase functions to perform the actual
+ dependency test (i.e. check whether the dependency was merged successfully).
+
+ @cvar depend_classes: classes for DEPEND generation
+ @type depend_classes: iterable(L{EbuildTestCase})
+ @cvar rdepend_classes: classes for RDEPEND generation
+ @type rdepend_classes: iterable(L{EbuildTestCase})
+ @cvar pdepend_classes: classes for PDEPEND generation
+ @type pdepend_classes: iterable(L{EbuildTestCase})
+ @cvar eclass_depend_classes: classes for eclass DEPEND generation
+ @type eclass_depend_classes: iterable(L{EbuildTestCase})
+ @cvar eclass_rdepend_classes: classes for eclass RDEPEND generation
+ @type eclass_rdepend_classes: iterable(L{EbuildTestCase})
+ @cvar eclass_pdepend_classes: classes for eclass PDEPEND generation
+ @type eclass_pdepend_classes: iterable(L{EbuildTestCase})
+ """
+
+ depend_classes = []
+ rdepend_classes = []
+ pdepend_classes = []
+ eclass_depend_classes = []
+ eclass_rdepend_classes = []
+ eclass_pdepend_classes = []
+
+ def __init__(self, eapi):
+ """
+ Instantiate the dependency test case and dependant sub-cases. Set
+ C{DEPEND}, C{RDEPEND} and C{PDEPEND}.
+ """
+
+ EclassTestCase.__init__(self, eapi)
+
+ self.dependant_ebuilds = []
+
+ for class_list, v in ((self.depend_classes, 'DEPEND'),
+ (self.rdepend_classes, 'RDEPEND'),
+ (self.pdepend_classes, 'PDEPEND')):
+ if v not in self.ebuild_vars:
+ self.ebuild_vars[v] = ''
+
+ for d in class_list:
+ o = d(eapi)
+ self.ebuild_vars[v] += '\n\t=%s' % o.cpv
+ self.dependant_ebuilds.append(o)
+
+ for class_list, v in ((self.eclass_depend_classes, 'DEPEND'),
+ (self.eclass_rdepend_classes, 'RDEPEND'),
+ (self.eclass_pdepend_classes, 'PDEPEND')):
+
+ ev = ''
+ for d in class_list:
+ o = d(eapi)
+ ev += '\n\t=%s' % o.cpv
+ self.dependant_ebuilds.append(o)
+ self.eclass_contents = '%s="%s"\n%s' % (v, ev,
+ self.eclass_contents)
+
+ def clean(self, pm):
+ EbuildDependencyTestCase.clean(self, pm)
+
+ def get_output_files(self):
+ of = EclassTestCase.get_output_files(self)
+ for o in self.dependant_ebuilds:
+ of.update(o.get_output_files())
+
+ return of
+
+ def check_result(self, pm):
+ res = EclassTestCase.check_result(self, pm)
+ for o in self.dependant_ebuilds:
+ res &= o.check_result(pm)
+ return res
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-02 18:53 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-02 18:53 UTC (permalink / raw
To: gentoo-commits
commit: e1e9de99067427288827b52c53a8de3871e930ef
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 2 18:12:15 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Aug 2 18:12:15 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=e1e9de99
Add .assertEqual()/.assertNotEqual() for the test cases.
---
pmstestsuite/library/case.py | 28 ++++++++++++++++++++++++++++
1 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index a11bafe..6a37524 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -154,6 +154,34 @@ class TestCase(ABCObject):
if needle not in container:
raise AssertionError(msg)
+ def assertEqual(self, value, expect, msg):
+ """
+ Assert that the value is equal to expected one.
+
+ @param value: the actual value
+ @type value: any
+ @param expect: the expected value
+ @type expect: any
+ @param msg: assertion description
+ @type msg: string
+ """
+ if value != expect:
+ raise AssertionError(msg)
+
+ def assertNotEqual(self, value, unallowed, msg):
+ """
+ Assert that the value is other than an unallowed one.
+
+ @param value: the actual value
+ @type value: any
+ @param expect: the unallowed value
+ @type expect: any
+ @param msg: assertion description
+ @type msg: string
+ """
+ if value == unallowed:
+ raise AssertionError(msg)
+
@abstractmethod
def check_result(self, pm):
"""
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-02 18:53 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-02 18:53 UTC (permalink / raw
To: gentoo-commits
commit: 9abfc2a16d5687cea4050dfa77ae3fa615bb9bab
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 2 18:11:51 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Aug 2 18:11:51 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=9abfc2a1
Remove double definition of assertTrue().
---
pmstestsuite/library/case.py | 12 ------------
1 files changed, 0 insertions(+), 12 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 0dd64b8..a11bafe 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -138,18 +138,6 @@ class TestCase(ABCObject):
if bool(cond) != expect:
raise AssertionError(msg)
- def assertTrue(self, cond, msg):
- """
- Assert that the condition evaluates to True.
-
- @param cond: the condition
- @type cond: bool
- @param msg: assertion description
- @type msg: string
- """
- if not cond:
- raise AssertionError(msg)
-
def assertContains(self, needle, container, msg = None):
"""
Assert the following condition: C{needle in container}.
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-02 18:53 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-02 18:53 UTC (permalink / raw
To: gentoo-commits
commit: 3988b15b0c30acd827bba1f96dc10d72cc5cbd8e
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 2 18:24:15 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Aug 2 18:24:15 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=3988b15b
Use test class names in str().
---
pmstestsuite/library/case.py | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 6a37524..956a1a3 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -314,7 +314,8 @@ class EbuildTestCase(TestCase):
def __str__(self):
""" Return freetext test description. """
- return '%s (%s)' % (self.p, self._stripped_docstring)
+ return '%s:%s (%s)' % (self.__class__.__name__, self.eapi,
+ self._stripped_docstring)
def __init__(self, eapi):
"""
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-02 18:53 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-02 18:53 UTC (permalink / raw
To: gentoo-commits
commit: c8f668f617583998ed87b85f051846036631dbef
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 2 18:54:02 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Aug 2 18:54:02 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=c8f668f6
Store assertion results.
---
pmstestsuite/library/case.py | 109 ++++++++++++++++++++++++++++++++++++++----
1 files changed, 100 insertions(+), 9 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 956a1a3..5295002 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -3,7 +3,7 @@
# Released under the terms of the 2-clause BSD license.
import copy, random, re
-from gentoopm.util import ABCObject
+from gentoopm.util import ABCObject, BoolCompat
from abc import ABCMeta, abstractmethod, abstractproperty
@@ -53,6 +53,92 @@ def cleanup_test_case_name(classname):
classname = classname[:-4]
return pn_re.sub('\\1-\\2', classname).lower()
+class AssertionResult(ABCObject, BoolCompat):
+ def __init__(self, name):
+ self._name = name
+
+ @property
+ def name(self):
+ return self._name
+
+ @abstractproperty
+ def expected(self):
+ pass
+
+ @abstractproperty
+ def actual(self):
+ pass
+
+ @abstractmethod
+ def __bool__(self):
+ pass
+
+ def __str__(self):
+ return '%s == %s' % (self.actual, self.expected)
+
+class BoolAssertionResult(AssertionResult):
+ def __init__(self, name, expect, cond):
+ AssertionResult.__init__(self, name)
+ self._expect = bool(expect)
+ self._cond = bool(cond)
+
+ @property
+ def expected(self):
+ return self._expect
+
+ @property
+ def actual(self):
+ return self._cond
+
+ def __bool__(self):
+ return self._cond == self._expect
+
+class ContainsAssertionResult(AssertionResult):
+ def __init__(self, name, needle, container):
+ AssertionResult.__init__(self, name)
+ self._cont = container
+ self._need = needle
+
+ @property
+ def expected(self):
+ return 'contains %s' % repr(self._need)
+
+ @property
+ def actual(self):
+ return repr(self._cont)
+
+ def __bool__(self):
+ return self._need in self._cont
+
+class EqualAssertionResult(AssertionResult):
+ def __init__(self, name, expect, value):
+ AssertionResult.__init__(self, name)
+ self._expect = expect
+ self._value = value
+
+ @property
+ def expected(self):
+ return repr(self._expect)
+
+ @property
+ def actual(self):
+ return repr(self._value)
+
+ def __bool__(self):
+ return self._value == self._expect
+
+class NotEqualAssertionResult(EqualAssertionResult):
+ def __bool__(self):
+ return self._value != self._expect
+
+ @property
+ def expected(self):
+ return 'not %s' % repr(self._expect)
+
+ def __str__(self):
+ return '%s != %s' % (self.actual,
+ repr(self._expect))
+
class TestCase(ABCObject):
"""
Base class for a test case.
@@ -64,6 +150,9 @@ class TestCase(ABCObject):
_finalized = False
+ def __init__(self):
+ self.assertions = []
+
def _finalize(self):
"""
Do any final modifications to test case data. Mark it finalized.
@@ -102,6 +191,11 @@ class TestCase(ABCObject):
"""
pass
+ def _append_assert(self, a):
+ self.assertions.append(a)
+ if not a:
+ raise AssertionError(str(a))
+
def assertTrue(self, cond, msg):
"""
Assert that the condition evaluates to True.
@@ -135,8 +229,7 @@ class TestCase(ABCObject):
@param msg: assertion description
@type msg: string
"""
- if bool(cond) != expect:
- raise AssertionError(msg)
+ self._append_assert(BoolAssertionResult(msg, expect, cond))
def assertContains(self, needle, container, msg = None):
"""
@@ -151,8 +244,7 @@ class TestCase(ABCObject):
"""
if msg is None:
msg = '%s in %s' % (repr(needle), repr(container))
- if needle not in container:
- raise AssertionError(msg)
+ self._append_assert(ContainsAssertionResult(msg, needle, container))
def assertEqual(self, value, expect, msg):
"""
@@ -165,8 +257,7 @@ class TestCase(ABCObject):
@param msg: assertion description
@type msg: string
"""
- if value != expect:
- raise AssertionError(msg)
+ self._append_assert(EqualAssertionResult(msg, expect, value))
def assertNotEqual(self, value, unallowed, msg):
"""
@@ -179,8 +270,7 @@ class TestCase(ABCObject):
@param msg: assertion description
@type msg: string
"""
- if value == unallowed:
- raise AssertionError(msg)
+ self._append_assert(NotEqualAssertionResult(msg, unallowed, value))
@abstractmethod
def check_result(self, pm):
@@ -324,6 +414,7 @@ class EbuildTestCase(TestCase):
@param eapi: the EAPI
@type eapi: string
"""
+ TestCase.__init__(self)
self.eapi = eapi
for v in ('ebuild_vars', 'inherits', 'phase_funcs'):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-03 8:17 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-03 8:17 UTC (permalink / raw
To: gentoo-commits
commit: 5a0e0675a2d75b907ea1578fb0c80e8279cb5b91
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 3 08:05:47 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Aug 3 08:05:47 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=5a0e0675
Drop '==' from .assertContains stringification.
---
pmstestsuite/library/case.py | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 5295002..80b4e4b 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -107,6 +107,9 @@ class ContainsAssertionResult(AssertionResult):
def actual(self):
return repr(self._cont)
+ def __str__(self):
+ return '%s %s' % (self.actual, self.expected)
+
def __bool__(self):
return self._need in self._cont
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-03 20:17 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-03 20:17 UTC (permalink / raw
To: gentoo-commits
commit: 52476d69f2c7f7b134bb3b5c4fdbb58cdf9b1efc
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 3 18:10:40 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Aug 3 18:10:40 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=52476d69
Assertions: use expected value on left side of comparisons.
This way, we can easily adjust __eq__() & __ne__() there.
---
pmstestsuite/library/case.py | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 80b4e4b..9ff757a 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -91,7 +91,7 @@ class BoolAssertionResult(AssertionResult):
return self._cond
def __bool__(self):
- return self._cond == self._expect
+ return self._expect == self._cond
class ContainsAssertionResult(AssertionResult):
def __init__(self, name, needle, container):
@@ -128,11 +128,11 @@ class EqualAssertionResult(AssertionResult):
return repr(self._value)
def __bool__(self):
- return self._value == self._expect
+ return self._expect == self._value
class NotEqualAssertionResult(EqualAssertionResult):
def __bool__(self):
- return self._value != self._expect
+ return self._expect != self._value
@property
def expected(self):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-03 20:17 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-03 20:17 UTC (permalink / raw
To: gentoo-commits
commit: 880baa08f9cbd31b15fe03e946d243c5fcb2464a
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 3 20:16:26 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Aug 3 20:16:26 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=880baa08
Commonize out some of dependency test case code.
---
pmstestsuite/library/depend_case.py | 106 ++++++++++++++++-------------------
1 files changed, 48 insertions(+), 58 deletions(-)
diff --git a/pmstestsuite/library/depend_case.py b/pmstestsuite/library/depend_case.py
index 793d7ce..1185a16 100644
--- a/pmstestsuite/library/depend_case.py
+++ b/pmstestsuite/library/depend_case.py
@@ -5,26 +5,13 @@
from pmstestsuite.library.case import EbuildTestCase
from pmstestsuite.library.eclass_case import EclassTestCase
-class EbuildDependencyTestCase(EbuildTestCase):
+class BaseDependencyTestCase(object):
"""
- Test case utilizing multiple ebuilds in order to check dependency
- resolution.
-
- In order to perform a dependency test, please:
-
- 1. create EbuildTestCase subclasses for the dependencies like usual,
- 2. create EbuildDependencyTestCase and refer to the classes created
- above in depend_classes or rdepend_classes.
-
- The class is going to set up all ebuilds, DEPEND and RDEPEND automagically.
- However, you need to provide phase functions to perform the actual
- dependency test (i.e. check whether the dependency was merged successfully).
-
- @cvar depend_classes: classes for DEPEND generation
+ @cvar depend_classes: classes for C{DEPEND} generation
@type depend_classes: iterable(L{EbuildTestCase})
- @cvar rdepend_classes: classes for RDEPEND generation
+ @cvar rdepend_classes: classes for C{RDEPEND} generation
@type rdepend_classes: iterable(L{EbuildTestCase})
- @cvar pdepend_classes: classes for PDEPEND generation
+ @cvar pdepend_classes: classes for C{PDEPEND} generation
@type pdepend_classes: iterable(L{EbuildTestCase})
"""
@@ -32,14 +19,12 @@ class EbuildDependencyTestCase(EbuildTestCase):
rdepend_classes = []
pdepend_classes = []
- def __init__(self, eapi):
+ def __init__(self, *args, **kwargs):
"""
Instantiate the dependency test case and dependant sub-cases. Set
C{DEPEND}, C{RDEPEND} and C{PDEPEND}.
"""
- EbuildTestCase.__init__(self, eapi)
-
self.dependant_ebuilds = []
for class_list, v in ((self.depend_classes, 'DEPEND'),
@@ -49,28 +34,56 @@ class EbuildDependencyTestCase(EbuildTestCase):
self.ebuild_vars[v] = ''
for d in class_list:
- o = d(eapi)
+ o = d(*args, **kwargs)
self.ebuild_vars[v] += '\n\t=%s' % o.cpv
self.dependant_ebuilds.append(o)
def clean(self, pm):
- EbuildTestCase.clean(self, pm)
for o in self.dependant_ebuilds:
o.clean(pm)
- def get_output_files(self):
- of = EbuildTestCase.get_output_files(self)
+ def _append_output_files(self, of):
for o in self.dependant_ebuilds:
of.update(o.get_output_files())
+ def check_result(self, pm):
+ for o in self.dependant_ebuilds:
+ o.check_result(pm)
+
+class EbuildDependencyTestCase(BaseDependencyTestCase, EbuildTestCase):
+ """
+ Test case utilizing multiple ebuilds in order to check dependency
+ resolution.
+
+ In order to perform a dependency test, please:
+
+ 1. create EbuildTestCase subclasses for the dependencies like usual,
+ 2. create EbuildDependencyTestCase and refer to the classes created
+ above in depend_classes or rdepend_classes.
+
+ The class is going to set up all ebuilds, DEPEND and RDEPEND automagically.
+ However, you need to provide phase functions to perform the actual
+ dependency test (i.e. check whether the dependency was merged successfully).
+ """
+
+ def __init__(self, *args, **kwargs):
+ EbuildTestCase.__init__(self, *args, **kwargs)
+ BaseDependencyTestCase.__init__(self, *args, **kwargs)
+
+ def clean(self, pm):
+ EbuildTestCase.clean(self, pm)
+ BaseDependencyTestCase.clean(self, pm)
+
+ def get_output_files(self):
+ of = EbuildTestCase.get_output_files(self)
+ BaseDependencyTestCase._append_output_files(self, of)
return of
def check_result(self, pm):
EbuildTestCase.check_result(self, pm)
- for o in self.dependant_ebuilds:
- o.check_result(pm)
+ BaseDependencyTestCase.check_result(self, pm)
-class EclassDependencyTestCase(EclassTestCase, EbuildDependencyTestCase):
+class EclassDependencyTestCase(BaseDependencyTestCase, EclassTestCase):
"""
Test case utilizing multiple ebuilds in order to check dependency
resolution in an eclass.
@@ -85,12 +98,6 @@ class EclassDependencyTestCase(EclassTestCase, EbuildDependencyTestCase):
However, you need to provide phase functions to perform the actual
dependency test (i.e. check whether the dependency was merged successfully).
- @cvar depend_classes: classes for DEPEND generation
- @type depend_classes: iterable(L{EbuildTestCase})
- @cvar rdepend_classes: classes for RDEPEND generation
- @type rdepend_classes: iterable(L{EbuildTestCase})
- @cvar pdepend_classes: classes for PDEPEND generation
- @type pdepend_classes: iterable(L{EbuildTestCase})
@cvar eclass_depend_classes: classes for eclass DEPEND generation
@type eclass_depend_classes: iterable(L{EbuildTestCase})
@cvar eclass_rdepend_classes: classes for eclass RDEPEND generation
@@ -99,33 +106,18 @@ class EclassDependencyTestCase(EclassTestCase, EbuildDependencyTestCase):
@type eclass_pdepend_classes: iterable(L{EbuildTestCase})
"""
- depend_classes = []
- rdepend_classes = []
- pdepend_classes = []
eclass_depend_classes = []
eclass_rdepend_classes = []
eclass_pdepend_classes = []
- def __init__(self, eapi):
+ def __init__(self, *args, **kwargs):
"""
Instantiate the dependency test case and dependant sub-cases. Set
C{DEPEND}, C{RDEPEND} and C{PDEPEND}.
"""
- EclassTestCase.__init__(self, eapi)
-
- self.dependant_ebuilds = []
-
- for class_list, v in ((self.depend_classes, 'DEPEND'),
- (self.rdepend_classes, 'RDEPEND'),
- (self.pdepend_classes, 'PDEPEND')):
- if v not in self.ebuild_vars:
- self.ebuild_vars[v] = ''
-
- for d in class_list:
- o = d(eapi)
- self.ebuild_vars[v] += '\n\t=%s' % o.cpv
- self.dependant_ebuilds.append(o)
+ EclassTestCase.__init__(self, *args, **kwargs)
+ BaseDependencyTestCase.__init__(self, *args, **kwargs)
for class_list, v in ((self.eclass_depend_classes, 'DEPEND'),
(self.eclass_rdepend_classes, 'RDEPEND'),
@@ -133,23 +125,21 @@ class EclassDependencyTestCase(EclassTestCase, EbuildDependencyTestCase):
ev = ''
for d in class_list:
- o = d(eapi)
+ o = d(*args, **kwargs)
ev += '\n\t=%s' % o.cpv
self.dependant_ebuilds.append(o)
self.eclass_contents = '%s="%s"\n%s' % (v, ev,
self.eclass_contents)
def clean(self, pm):
- EbuildDependencyTestCase.clean(self, pm)
+ EclassTestCase.clean(self, pm)
+ BaseDependencyTestCase.clean(self, pm)
def get_output_files(self):
of = EclassTestCase.get_output_files(self)
- for o in self.dependant_ebuilds:
- of.update(o.get_output_files())
-
+ BaseDependencyTestCase._append_output_files(self, of)
return of
def check_result(self, pm):
EclassTestCase.check_result(self, pm)
- for o in self.dependant_ebuilds:
- o.check_result(pm)
+ BaseDependencyTestCase.check_result(self, pm)
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-06 14:25 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-06 14:25 UTC (permalink / raw
To: gentoo-commits
commit: 79af36f94cc8096e81026536c204a99faca57dcb
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 6 14:14:26 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Aug 6 14:14:26 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=79af36f9
Support passing 'undefined' to assertions.
---
pmstestsuite/library/case.py | 40 ++++++++++++++++++++++++++++------------
1 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 55dfa43..4502571 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -212,7 +212,7 @@ class TestCase(ABCObject):
if not a.undefined and not a:
raise AssertionError(str(a))
- def assertTrue(self, cond, msg):
+ def assertTrue(self, cond, msg, undefined = False):
"""
Assert that the condition evaluates to True.
@@ -220,10 +220,12 @@ class TestCase(ABCObject):
@type cond: bool
@param msg: assertion description
@type msg: string
+ @param undefined: whether the result is undefined
+ @type undefined: bool
"""
- self.assertBool(True, cond, msg)
+ self.assertBool(True, cond, msg, undefined)
- def assertFalse(self, cond, msg):
+ def assertFalse(self, cond, msg, undefined = False):
"""
Assert that the condition evaluates to False.
@@ -231,10 +233,12 @@ class TestCase(ABCObject):
@type cond: bool
@param msg: assertion description
@type msg: string
+ @param undefined: whether the result is undefined
+ @type undefined: bool
"""
- self.assertBool(False, cond, msg)
+ self.assertBool(False, cond, msg, undefined)
- def assertBool(self, expect, cond, msg):
+ def assertBool(self, expect, cond, msg, undefined = False):
"""
Assert that the condition evaluates to expected boolean result.
@@ -244,10 +248,13 @@ class TestCase(ABCObject):
@type cond: bool
@param msg: assertion description
@type msg: string
+ @param undefined: whether the result is undefined
+ @type undefined: bool
"""
- self._append_assert(BoolAssertionResult(msg, expect, cond))
+ self._append_assert(BoolAssertionResult(msg, expect, cond),
+ undefined = undefined)
- def assertContains(self, needle, container, msg = None):
+ def assertContains(self, needle, container, msg = None, undefined = False):
"""
Assert the following condition: C{needle in container}.
@@ -257,12 +264,15 @@ class TestCase(ABCObject):
@type container: iterable
@param msg: assertion description or C{None} for default one
@type msg: string/C{None}
+ @param undefined: whether the result is undefined
+ @type undefined: bool
"""
if msg is None:
msg = '%s in %s' % (repr(needle), repr(container))
- self._append_assert(ContainsAssertionResult(msg, needle, container))
+ self._append_assert(ContainsAssertionResult(msg, needle, container),
+ undefined = undefined)
- def assertEqual(self, value, expect, msg):
+ def assertEqual(self, value, expect, msg, undefined = False):
"""
Assert that the value is equal to expected one.
@@ -272,10 +282,13 @@ class TestCase(ABCObject):
@type expect: any
@param msg: assertion description
@type msg: string
+ @param undefined: whether the result is undefined
+ @type undefined: bool
"""
- self._append_assert(EqualAssertionResult(msg, expect, value))
+ self._append_assert(EqualAssertionResult(msg, expect, value),
+ undefined = undefined)
- def assertNotEqual(self, value, unallowed, msg):
+ def assertNotEqual(self, value, unallowed, msg, undefined = False):
"""
Assert that the value is other than an unallowed one.
@@ -285,8 +298,11 @@ class TestCase(ABCObject):
@type expect: any
@param msg: assertion description
@type msg: string
+ @param undefined: whether the result is undefined
+ @type undefined: bool
"""
- self._append_assert(NotEqualAssertionResult(msg, unallowed, value))
+ self._append_assert(NotEqualAssertionResult(msg, unallowed, value),
+ undefined = undefined)
@abstractmethod
def check_result(self, pm):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-06 14:25 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-06 14:25 UTC (permalink / raw
To: gentoo-commits
commit: 45ad5a275babd570743c09eaefa59bf0d55163fc
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 6 14:20:27 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Aug 6 14:25:21 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=45ad5a27
Support 'None' as actual assertion result.
---
pmstestsuite/library/case.py | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 4502571..6cf7ebd 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -89,7 +89,7 @@ class BoolAssertionResult(AssertionResult):
def __init__(self, name, expect, cond):
AssertionResult.__init__(self, name)
self._expect = bool(expect)
- self._cond = bool(cond)
+ self._cond = bool(cond) if cond is not None else None
@property
def expected(self):
@@ -97,9 +97,11 @@ class BoolAssertionResult(AssertionResult):
@property
def actual(self):
- return self._cond
+ return self._cond if self._cond is not None else '?'
def __bool__(self):
+ if self._cond is None:
+ return False
return self._expect == self._cond
class ContainsAssertionResult(AssertionResult):
@@ -114,12 +116,14 @@ class ContainsAssertionResult(AssertionResult):
@property
def actual(self):
- return repr(self._cont)
+ return repr(self._cont) if self._cont is not None else '?'
def __str__(self):
return '%s %s' % (self.actual, self.expected)
def __bool__(self):
+ if self._cont is None:
+ return False
return self._need in self._cont
class EqualAssertionResult(AssertionResult):
@@ -134,13 +138,15 @@ class EqualAssertionResult(AssertionResult):
@property
def actual(self):
- return repr(self._value)
+ return repr(self._value) if self._value is not None else '?'
def __bool__(self):
return self._expect == self._value
class NotEqualAssertionResult(EqualAssertionResult):
def __bool__(self):
+ if self._value is None:
+ return False
return self._expect != self._value
@property
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-06 14:26 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-06 14:26 UTC (permalink / raw
To: gentoo-commits
commit: b88ac72d0c043605688d306dadfbffaf0362dbda
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 6 14:27:39 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Aug 6 14:27:39 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=b88ac72d
Fix random.choice() failure.
---
pmstestsuite/library/case.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 6cf7ebd..06d7c2f 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -390,7 +390,7 @@ class EbuildTestCase(TestCase):
@type: iterable(iterable(string))
"""
- return (known_eapis,)
+ return (tuple(known_eapis),)
@classmethod
def inst_all(cls, thorough = False, undefined = False):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-11 8:53 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-11 8:53 UTC (permalink / raw
To: gentoo-commits
commit: 4f7717a20f5f6cc473be837deeca1fe0a1c9a1be
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 11 08:48:35 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Aug 11 08:48:35 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=4f7717a2
Store short test names.
---
pmstestsuite/library/__init__.py | 6 +++---
pmstestsuite/library/case.py | 31 ++++++++++++++++++++-----------
2 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/pmstestsuite/library/__init__.py b/pmstestsuite/library/__init__.py
index 473e9b0..3f7554b 100644
--- a/pmstestsuite/library/__init__.py
+++ b/pmstestsuite/library/__init__.py
@@ -27,13 +27,13 @@ from pmstestsuite.library.case import TestCase
class TestLibrary(ABCObject):
"""
Base class for a test library.
-
+
@ivar tests: cache of instantiated tests
@type tests: list(L{TestCase})
"""
tests = None
-
+
@abstractproperty
def test_names(self):
"""
@@ -66,7 +66,7 @@ class TestLibrary(ABCObject):
mod = __import__(modname, {}, {}, [clsname], 0)
cls = getattr(mod, clsname)
for i in cls.inst_all(thorough = self.thorough,
- undefined = self.undefined):
+ undefined = self.undefined, short_name = t):
self.tests.append(i)
yield i
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 06d7c2f..76011e9 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -168,8 +168,22 @@ class TestCase(ABCObject):
_finalized = False
- def __init__(self):
+ def __init__(self, short_name):
self.assertions = []
+ self._short_name = short_name
+
+ @property
+ def short_name(self):
+ return self._short_name
+
+ @property
+ def _stripped_docstring(self):
+ descdoc = ' '.join(self.__doc__.split())
+ return descdoc.rstrip('.')
+
+ def __str__(self):
+ """ Return freetext test description. """
+ return '%s (%s)' % (self.short_name, self._stripped_docstring)
def _finalize(self):
"""
@@ -393,7 +407,7 @@ class EbuildTestCase(TestCase):
return (tuple(known_eapis),)
@classmethod
- def inst_all(cls, thorough = False, undefined = False):
+ def inst_all(cls, short_name, thorough = False, undefined = False):
"""
Instantiate the test case, choosing a single EAPI from each EAPI group
listed in L{supported_eapis}. If thorough mode is enabled, all EAPIs
@@ -421,7 +435,7 @@ class EbuildTestCase(TestCase):
eapis = [random.choice(x) for x in supported_eapis]
for eapi in eapis:
- yield cls(eapi = eapi)
+ yield cls(eapi = eapi, short_name = short_name)
@property
def pn(self):
@@ -444,11 +458,6 @@ class EbuildTestCase(TestCase):
""" Return atom for the test. """
return pm.Atom('=%s' % self.cpv)
- @property
- def _stripped_docstring(self):
- descdoc = ' '.join(self.__doc__.split())
- return descdoc.rstrip('.')
-
def _finalize(self):
TestCase._finalize(self)
@@ -457,17 +466,17 @@ class EbuildTestCase(TestCase):
def __str__(self):
""" Return freetext test description. """
- return '%s:%s (%s)' % (self.__class__.__name__, self.eapi,
+ return '%s:%s (%s)' % (self.short_name, self.eapi,
self._stripped_docstring)
- def __init__(self, eapi):
+ def __init__(self, eapi, short_name):
"""
Instiantate the test case for a particular EAPI.
@param eapi: the EAPI
@type eapi: string
"""
- TestCase.__init__(self)
+ TestCase.__init__(self, short_name)
self.eapi = eapi
for v in ('ebuild_vars', 'inherits', 'phase_funcs'):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-11 8:54 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-11 8:54 UTC (permalink / raw
To: gentoo-commits
commit: e37e4b216c78b00e89b19b71869b99ee4f363eb7
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 11 08:55:50 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Aug 11 08:55:50 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=e37e4b21
Support passing random args to EclassTestCase().
---
pmstestsuite/library/eclass_case.py | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pmstestsuite/library/eclass_case.py b/pmstestsuite/library/eclass_case.py
index 864a983..582e05a 100644
--- a/pmstestsuite/library/eclass_case.py
+++ b/pmstestsuite/library/eclass_case.py
@@ -22,8 +22,8 @@ class EclassTestCase(EbuildTestCase):
"""
pass
- def __init__(self, eapi):
- EbuildTestCase.__init__(self, eapi)
+ def __init__(self, *args, **kwargs):
+ EbuildTestCase.__init__(self, *args, **kwargs)
self.inherits.append(self.pn)
def get_output_files(self):
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-11 22:09 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-11 22:09 UTC (permalink / raw
To: gentoo-commits
commit: e4d476b68d9606a87ca66d9f8b31128227cff0ae
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 11 21:53:19 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Aug 11 21:53:19 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=e4d476b6
FIXUP!
---
pmstestsuite/library/case.py | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 76011e9..00a6cd4 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -67,6 +67,14 @@ class AssertionResult(ABCObject, BoolCompat):
return self._name
@property
+ def prefix(self):
+ return None
+
+ @property
+ def unprefixed_name(self):
+ return self.name
+
+ @property
def undefined(self):
return self._undefined
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-11 22:09 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-11 22:09 UTC (permalink / raw
To: gentoo-commits
commit: 07fb0188ef5b99c66b416953223d16a12e792f68
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 11 21:38:42 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Aug 11 21:38:42 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=07fb0188
Prefix dep assertions and add them to assert list.
---
pmstestsuite/library/depend_case.py | 45 ++++++++++++++++++++++++++++++++--
1 files changed, 42 insertions(+), 3 deletions(-)
diff --git a/pmstestsuite/library/depend_case.py b/pmstestsuite/library/depend_case.py
index 1185a16..55e49cc 100644
--- a/pmstestsuite/library/depend_case.py
+++ b/pmstestsuite/library/depend_case.py
@@ -2,9 +2,44 @@
# (c) 2011 Michał Górny <mgorny@gentoo.org>
# Released under the terms of the 2-clause BSD license.
-from pmstestsuite.library.case import EbuildTestCase
+from pmstestsuite.library.case import EbuildTestCase, AssertionResult
from pmstestsuite.library.eclass_case import EclassTestCase
+class DepWrappedAssertion(AssertionResult):
+ def __init__(self, assertion, prefix):
+ self._assert = assertion
+ self._prefix = prefix
+
+ @property
+ def name(self):
+ return '[%s] %s' % (self._prefix, self._assert.name)
+
+ @property
+ def prefix(self):
+ return self._prefix
+
+ @property
+ def unprefixed_name(self):
+ return self._assert.name
+
+ @property
+ def undefined(self):
+ return self._assert.undefined
+
+ @property
+ def expected(self):
+ return self._assert.expected
+
+ @property
+ def actual(self):
+ return self._assert.actual
+
+ def __bool__(self):
+ return bool(self._assert)
+
+ def __str__(self):
+ return str(self._assert)
+
class BaseDependencyTestCase(object):
"""
@cvar depend_classes: classes for C{DEPEND} generation
@@ -33,8 +68,9 @@ class BaseDependencyTestCase(object):
if v not in self.ebuild_vars:
self.ebuild_vars[v] = ''
- for d in class_list:
+ for i, d in enumerate(class_list):
o = d(*args, **kwargs)
+ o._dep_prefix = '%s %d' % (v[:-3], i)
self.ebuild_vars[v] += '\n\t=%s' % o.cpv
self.dependant_ebuilds.append(o)
@@ -49,6 +85,8 @@ class BaseDependencyTestCase(object):
def check_result(self, pm):
for o in self.dependant_ebuilds:
o.check_result(pm)
+ self.assertions.extend([DepWrappedAssertion(x, o._dep_prefix)
+ for x in o.assertions])
class EbuildDependencyTestCase(BaseDependencyTestCase, EbuildTestCase):
"""
@@ -124,8 +162,9 @@ class EclassDependencyTestCase(BaseDependencyTestCase, EclassTestCase):
(self.eclass_pdepend_classes, 'PDEPEND')):
ev = ''
- for d in class_list:
+ for i, d in enumerate(class_list):
o = d(*args, **kwargs)
+ o._dep_prefix = 'eclass %s %d' % (v[:-3], i)
ev += '\n\t=%s' % o.cpv
self.dependant_ebuilds.append(o)
self.eclass_contents = '%s="%s"\n%s' % (v, ev,
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2011-08-12 20:55 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2011-08-12 20:55 UTC (permalink / raw
To: gentoo-commits
commit: 2ab344aeddbc7c068395ecf62089764c15f90a61
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 12 20:51:19 2011 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Aug 12 20:51:19 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=2ab344ae
Use relative imports in module loader.
---
pmstestsuite/library/__init__.py | 9 ++++-----
1 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/pmstestsuite/library/__init__.py b/pmstestsuite/library/__init__.py
index 349b98b..eb5bade 100644
--- a/pmstestsuite/library/__init__.py
+++ b/pmstestsuite/library/__init__.py
@@ -63,7 +63,7 @@ class TestLibrary(ABCObject):
# XXX: tests without a '.' in __init__?
modname, clsname = t.rsplit('.', 1)
modname = '%s.%s' % (self.modname, modname)
- mod = __import__(modname, {}, {}, [clsname], 0)
+ mod = __import__(modname, fromlist=[clsname], globals=globals(), level=1)
cls = getattr(mod, clsname)
for i in cls.inst_all(thorough = self.thorough,
undefined = self.undefined, short_name = t):
@@ -118,8 +118,7 @@ def load_library(name, **kwargs):
@raise TypeError: if no matching class is found in the module
"""
- modname = 'pmstestsuite.library.%s' % name
- mod = __import__(modname, {}, {}, ['.'], 0)
+ mod = __import__(name, fromlist=['.'], globals=globals(), level=1)
for k in dir(mod):
modvar = getattr(mod, k)
@@ -134,6 +133,6 @@ def load_library(name, **kwargs):
pass
else:
raise TypeError('Unable to find a TestLibrary subclass in %s'
- % modname)
+ % name)
- return cls(modname, **kwargs)
+ return cls(name, **kwargs)
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2012-01-02 22:26 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2012-01-02 22:26 UTC (permalink / raw
To: gentoo-commits
commit: aab56e031241f43cd811e5ab2bdacd12950d3d17
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 2 22:27:06 2012 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan 2 22:27:06 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=aab56e03
Introduce expect_started to fix D-Bus dependency cases.
---
pmstestsuite/library/case.py | 8 +++++++-
pmstestsuite/library/depend_case.py | 1 +
2 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 90406a0..e007cf6 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -451,6 +451,10 @@ class EbuildTestCase(TestCase):
to merge successfully. Otherwise, the test ebuild is supposed to fail
to merge (die)
@type expect_failure: bool
+ @ivar expect_started: if set to True (the default), the test is supposed
+ to be started (ack via D-Bus). Otherwise, the test ebuild is supposed
+ to not ever start
+ @type expect_started: bool
@ivar inherits: additional eclasses to inherit
@type inherits: list (string)
@ivar phase_funcs: phase function contents
@@ -459,6 +463,7 @@ class EbuildTestCase(TestCase):
ebuild_vars = {}
expect_failure = False
+ expect_started = True
inherits = []
phase_funcs = {}
@@ -694,5 +699,6 @@ class EbuildTestCase(TestCase):
merged = self.atom(pm) in pm.installed
self.assertBool(not self.expect_failure, merged,
'package merged')
- self.assertTrue(self.dbus_started, 'build started')
+ self.assertBool(self.expect_started, self.dbus_started,
+ 'build started')
self.check_dbus_result(self._pop_dbus_output(), pm)
diff --git a/pmstestsuite/library/depend_case.py b/pmstestsuite/library/depend_case.py
index 3f34ca7..d03f973 100644
--- a/pmstestsuite/library/depend_case.py
+++ b/pmstestsuite/library/depend_case.py
@@ -67,6 +67,7 @@ class BaseDependencyTestCase(object):
"""
self.dependant_ebuilds = []
+ self.expect_started = not self.expect_failure
for class_list, v in ((self.depend_classes, 'DEPEND'),
(self.rdepend_classes, 'RDEPEND'),
^ permalink raw reply related [flat|nested] 52+ messages in thread
* [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/
@ 2012-01-03 15:52 Michał Górny
0 siblings, 0 replies; 52+ messages in thread
From: Michał Górny @ 2012-01-03 15:52 UTC (permalink / raw
To: gentoo-commits
commit: 6b0b371c056d926103bff2759e3e633aae778217
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 3 12:11:20 2012 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jan 3 12:11:20 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=6b0b371c
Proceed with output checks even if test fails to merge.
---
pmstestsuite/library/case.py | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/pmstestsuite/library/case.py b/pmstestsuite/library/case.py
index 7cf4b1c..0f63735 100644
--- a/pmstestsuite/library/case.py
+++ b/pmstestsuite/library/case.py
@@ -695,9 +695,22 @@ class EbuildTestCase(TestCase):
@type pm: L{PackageManager}
"""
- merged = self.atom(pm) in pm.installed
- self.assertBool(not self.expect_failure, merged,
- 'package merged')
- self.assertBool(self.expect_started, self.dbus_started,
- 'build started')
+ exc = None
+
+ try:
+ merged = self.atom(pm) in pm.installed
+ self.assertBool(not self.expect_failure, merged,
+ 'package merged')
+ except AssertionError as e:
+ exc = e
+
+ try:
+ self.assertBool(self.expect_started, self.dbus_started,
+ 'build started')
+ except AssertionError as e:
+ exc = e
+
self.check_dbus_result(self._pop_dbus_output(), pm)
+
+ if exc is not None:
+ raise exc
^ permalink raw reply related [flat|nested] 52+ messages in thread
end of thread, other threads:[~2012-01-03 15:53 UTC | newest]
Thread overview: 52+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-23 9:51 [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/library/ Michał Górny
-- strict thread matches above, loose matches on Subject: below --
2011-05-23 11:52 Michał Górny
2011-05-24 8:11 Michał Górny
2011-05-24 8:11 Michał Górny
2011-05-24 8:11 Michał Górny
2011-05-24 14:28 Michał Górny
2011-05-25 20:40 Michał Górny
2011-05-26 6:35 Michał Górny
2011-05-26 7:25 Michał Górny
2011-05-29 18:17 Michał Górny
2011-05-29 18:57 Michał Górny
2011-05-29 18:57 Michał Górny
2011-05-29 18:57 Michał Górny
2011-05-31 17:19 Michał Górny
2011-06-03 17:36 Michał Górny
2011-06-07 17:22 Michał Górny
2011-06-13 19:16 Michał Górny
2011-06-13 19:16 Michał Górny
2011-06-14 8:32 Michał Górny
2011-06-14 8:32 Michał Górny
2011-06-14 12:35 Michał Górny
2011-06-16 19:49 Michał Górny
2011-06-16 19:49 Michał Górny
2011-06-17 5:59 Michał Górny
2011-06-17 15:07 Michał Górny
2011-06-20 19:20 Michał Górny
2011-06-23 21:14 Michał Górny
2011-06-23 21:14 Michał Górny
2011-06-29 17:52 [gentoo-commits] proj/pms-test-suite:master commit in: pmstestsuite/library/ Michał Górny
2011-06-29 17:52 Michał Górny
2011-06-29 17:52 Michał Górny
2011-06-29 17:52 Michał Górny
2011-06-29 17:52 Michał Górny
2011-06-29 17:52 Michał Górny
2011-07-24 14:37 Michał Górny
2011-08-02 18:53 Michał Górny
2011-08-02 18:53 Michał Górny
2011-08-02 18:53 Michał Górny
2011-08-02 18:53 Michał Górny
2011-08-03 8:17 Michał Górny
2011-08-03 20:17 Michał Górny
2011-08-03 20:17 Michał Górny
2011-08-06 14:25 Michał Górny
2011-08-06 14:25 Michał Górny
2011-08-06 14:26 Michał Górny
2011-08-11 8:53 Michał Górny
2011-08-11 8:54 Michał Górny
2011-08-11 22:09 Michał Górny
2011-08-11 22:09 Michał Górny
2011-08-12 20:55 Michał Górny
2012-01-02 22:26 Michał Górny
2012-01-03 15:52 Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox