From e5456b7288aba481fcfa69acd645cd9f44175add Mon Sep 17 00:00:00 2001 From: Dayanne Fernandes Date: Wed, 24 May 2017 13:37:29 -0300 Subject: [PATCH] Fix issue #59 (#60) * Organizing the gitignore * there is port to python 3 * fix #59 : .join wait the current thread finish * rm time lib * Test unittest coverage issue #59 --- .gitignore | 21 ++++++++++----- cricket/executor.py | 2 ++ docs/internals/roadmap.rst | 2 -- tests/test_unit_integration.py | 48 +++++++++++++++++++++++++++++++++- 4 files changed, 64 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index abe5123..b905e4f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,19 @@ +# Byte-compiled *.pyc -*~ -.*.sw[op] + +# Tests +.coverage +.tox + +# Distribution +env/ +dist/ +build/ *.egg-info -dist -build _build distribute-* -.coverage -.tox + +# Others +.DS_Store +.*.sw[op] +*~ diff --git a/cricket/executor.py b/cricket/executor.py index 629b29e..01bb8f0 100644 --- a/cricket/executor.py +++ b/cricket/executor.py @@ -46,11 +46,13 @@ def __init__(self, project, count, labels): t = Thread(target=enqueue_output, args=(self.proc.stdout, self.stdout)) t.daemon = True t.start() + t.join() self.stderr = Queue() t = Thread(target=enqueue_output, args=(self.proc.stderr, self.stderr)) t.daemon = True t.start() + t.join() # The TestMethod object currently under execution. self.current_test = None diff --git a/docs/internals/roadmap.rst b/docs/internals/roadmap.rst index e570446..07a46dd 100644 --- a/docs/internals/roadmap.rst +++ b/docs/internals/roadmap.rst @@ -7,8 +7,6 @@ you'd like to contribute, providing a patch for one of these features: * Use a standard protocol (e.g., subunit) for communicating between the executor and the GUI - * Port to Python 3 - * Add a pytest backend * Add a nose backend diff --git a/tests/test_unit_integration.py b/tests/test_unit_integration.py index 7a36a10..a46207f 100644 --- a/tests/test_unit_integration.py +++ b/tests/test_unit_integration.py @@ -5,6 +5,52 @@ from cricket.unittest import discoverer from cricket.unittest import executor +from cricket.unittest.model import UnittestProject +from cricket.executor import Executor +from cricket.model import TestMethod + +class TestTestsCoverage(unittest.TestCase): + + def setUp(self): + super(TestTestsCoverage, self).setUp() + self.project = UnittestProject() + self.project.refresh([ + 'tests.test_unit_integration.TestCollection.test_testCollection', + 'tests.test_unit_integration.TestExecutorCmdLine.test_labels', + 'tests.test_unit_integration.TestTestsCoverage.test_run_methods_tests_in_different_tests_cases', + 'tests.test_unit_integration.TestStubToTestCoverage.test_stub1', + 'tests.test_unit_integration.TestStubToTestCoverage.test_stub2', + 'tests.test_unit_integration.TestStubToTestCoverage.test_stub3', + ]) + + self.labels = [ + 'tests.test_unit_integration.TestCollection.test_testCollection', + 'tests.test_unit_integration.TestStubToTestCoverage.test_stub1', + 'tests.test_unit_integration.TestStubToTestCoverage.test_stub2', + 'tests.test_unit_integration.TestStubToTestCoverage.test_stub3', + ] + + def test_run_methods_tests_in_different_tests_cases(self): + ''' + Test coverage in a test module, selecting test methods from different tests cases (but not all tests cases from a test module) + ''' + + count, new_labels = self.project.find_tests(True, None, self.labels) + self.executor = Executor(self.project, count, new_labels) + self.executor.poll() + self.assertEquals( + self.executor.result_count.get(TestMethod.STATUS_PASS, 0), 4) + +class TestStubToTestCoverage(unittest.TestCase): + + def test_stub1(self): + self.assertTrue(True) + + def test_stub2(self): + self.assertTrue(True) + + def test_stub3(self): + self.assertTrue(True) class TestCollection(unittest.TestCase): @@ -79,4 +125,4 @@ def test_labels(self): # PTE.stream_results() if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main()