From 521778636ea3c9ed5ef0ab5e110b3b503ea2f9ff Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Sat, 15 Jun 2013 19:15:32 +0200 Subject: [PATCH] Add a UIUnitTest class To make it easier to write UI unit tests. --- src/sugar3/test/Makefile.am | 3 ++- src/sugar3/test/unittest.py | 53 +++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/sugar3/test/unittest.py diff --git a/src/sugar3/test/Makefile.am b/src/sugar3/test/Makefile.am index 0748c137..3070730a 100644 --- a/src/sugar3/test/Makefile.am +++ b/src/sugar3/test/Makefile.am @@ -1,4 +1,5 @@ sugardir = $(pythondir)/sugar3/test sugar_PYTHON = \ __init__.py \ - uitree.py + uitree.py \ + unittest.py diff --git a/src/sugar3/test/unittest.py b/src/sugar3/test/unittest.py new file mode 100644 index 00000000..9d70b967 --- /dev/null +++ b/src/sugar3/test/unittest.py @@ -0,0 +1,53 @@ +# Copyright (C) 2012, 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 logging +import os +import unittest +import subprocess +from contextlib import contextmanager + +from sugar3.test import uitree + + +class UITestCase(unittest.TestCase): + def setUp(self): + logger = logging.getLogger() + self._orig_level = logger.getEffectiveLevel() + logger.setLevel(logging.DEBUG) + + def tearDown(self): + logger = logging.getLogger() + logger.setLevel(self._orig_level) + + @contextmanager + def run_view(self, name): + view_path = os.path.join("views", "%s.py" % name) + process = subprocess.Popen(["python", view_path]) + + try: + yield + except: + uitree.get_root().dump() + raise + finally: + process.terminate()