From 6d319619f05f66e4cce3a6fe1fea6421e4022941 Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Sat, 22 Jun 2013 12:07:57 +0200 Subject: [PATCH 1/2] Factor out the discover logic to the test module This avoids duplication in sugar and sugar-toolkit-gtk3 makefiles. --- Makefile.am | 11 +------- src/sugar3/test/Makefile.am | 1 + src/sugar3/test/discover.py | 51 +++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 src/sugar3/test/discover.py diff --git a/Makefile.am b/Makefile.am index 7ce39765..8bb0e965 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,9 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS = --enable-introspection -TESTS_TMPDIR=$(abs_builddir)/tests-tmp -TESTS_PYTHONPATH=$(abs_srcdir)/src:$(PYTHONPATH) - DISTCLEANFILES = \ intltool-extract \ intltool-merge \ @@ -21,10 +18,4 @@ check: test pep8 $(top_srcdir) test: - mkdir -p $(TESTS_TMPDIR) - cd $(top_srcdir)/tests; \ - TMPDIR=$(TESTS_TMPDIR) PYTHONPATH=$(TESTS_PYTHONPATH) \ - python -m unittest discover; \ - status=$$?; \ - rm -rf $(TESTS_TMPDIR); \ - exit $$status + python -m sugar3.test.discover $(top_srcdir)/tests diff --git a/src/sugar3/test/Makefile.am b/src/sugar3/test/Makefile.am index 3070730a..2ccac022 100644 --- a/src/sugar3/test/Makefile.am +++ b/src/sugar3/test/Makefile.am @@ -1,5 +1,6 @@ sugardir = $(pythondir)/sugar3/test sugar_PYTHON = \ __init__.py \ + discover.py \ uitree.py \ unittest.py diff --git a/src/sugar3/test/discover.py b/src/sugar3/test/discover.py new file mode 100644 index 00000000..8de28f8c --- /dev/null +++ b/src/sugar3/test/discover.py @@ -0,0 +1,51 @@ +# Copyright (C) 2013, Daniel Narvaez +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +""" +UNSTABLE. +""" + +from __future__ import absolute_import + +import argparse +import sys +import os +import tempfile +import shutil +import unittest + + +def main(): + parser = argparse.ArgumentParser(description="Discover unit tests.") + parser.add_argument("tests_dir", help="Base tests directory") + args = parser.parse_args() + + temp_dir = tempfile.mkdtemp() + + os.chdir(args.tests_dir) + os.environ["TMPDIR"] = temp_dir + + try: + test = unittest.defaultTestLoader.discover(".") + result = unittest.TextTestRunner().run(test) + if not result.wasSuccessful(): + sys.exit(1) + finally: + shutil.rmtree(temp_dir) + + +if __name__ == "__main__": + main() From f54229efd2c5c6d3a50b474d7df2a7533cd8ab27 Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Sat, 22 Jun 2013 12:09:17 +0200 Subject: [PATCH 2/2] Move setting AT_SPI_CLIENT to discover It needs to be called as early as possible before unit tests has a chance to import gtk. Hopefully will fix random test failures we are seeing in buildbot. --- src/sugar3/test/discover.py | 1 + src/sugar3/test/unittest.py | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/sugar3/test/discover.py b/src/sugar3/test/discover.py index 8de28f8c..c9866060 100644 --- a/src/sugar3/test/discover.py +++ b/src/sugar3/test/discover.py @@ -37,6 +37,7 @@ def main(): os.chdir(args.tests_dir) os.environ["TMPDIR"] = temp_dir + os.environ["AT_SPI_CLIENT"] = "yes" try: test = unittest.defaultTestLoader.discover(".") diff --git a/src/sugar3/test/unittest.py b/src/sugar3/test/unittest.py index aba715bd..d6628833 100644 --- a/src/sugar3/test/unittest.py +++ b/src/sugar3/test/unittest.py @@ -35,14 +35,10 @@ class UITestCase(unittest.TestCase): self._orig_level = logger.getEffectiveLevel() logger.setLevel(logging.DEBUG) - os.environ["AT_SPI_CLIENT"] = "yes" - def tearDown(self): logger = logging.getLogger() logger.setLevel(self._orig_level) - del os.environ["AT_SPI_CLIENT"] - @contextmanager def run_view(self, name): view_path = os.path.join("views", "%s.py" % name)