changeset ca3d91b2b93d in modules/project:default
details: https://hg.tryton.org/modules/project?cmd=changeset&node=ca3d91b2b93d
description:
        Replace test setuptools command by unittest discover

        issue9215
        review389851002
diffstat:

 setup.py               |    6 +-
 tests/__init__.py      |    7 -
 tests/test_module.py   |  185 +++++++++++++++++++++++++++++++++++++++++++++
 tests/test_project.py  |  198 -------------------------------------------------
 tests/test_scenario.py |   22 +++++
 tox.ini                |    3 +-
 6 files changed, 212 insertions(+), 209 deletions(-)

diffs (464 lines):

diff -r 3b92c40b90b6 -r ca3d91b2b93d setup.py
--- a/setup.py  Sun Apr 10 19:11:39 2022 +0200
+++ b/setup.py  Sat Apr 16 18:30:18 2022 +0200
@@ -141,13 +141,13 @@
     license='GPL-3',
     python_requires='>=3.7',
     install_requires=requires,
+    extras_require={
+        'test': tests_require,
+        },
     dependency_links=dependency_links,
     zip_safe=False,
     entry_points="""
     [trytond.modules]
     project = trytond.modules.project
     """,
-    test_suite='tests',
-    test_loader='trytond.test_loader:Loader',
-    tests_require=tests_require,
     )
diff -r 3b92c40b90b6 -r ca3d91b2b93d tests/__init__.py
--- a/tests/__init__.py Sun Apr 10 19:11:39 2022 +0200
+++ b/tests/__init__.py Sat Apr 16 18:30:18 2022 +0200
@@ -1,9 +1,2 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
-
-try:
-    from trytond.modules.project.tests.test_project import suite
-except ImportError:
-    from .test_project import suite
-
-__all__ = ['suite']
diff -r 3b92c40b90b6 -r ca3d91b2b93d tests/test_module.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_module.py      Sat Apr 16 18:30:18 2022 +0200
@@ -0,0 +1,185 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+import datetime
+
+from trytond.modules.company.tests import (
+    CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company, set_company)
+from trytond.pool import Pool
+from trytond.tests.test_tryton import ModuleTestCase, with_transaction
+from trytond.transaction import Transaction
+
+
+class ProjectTestCase(
+        PartyCompanyCheckEraseMixin, CompanyTestMixin, ModuleTestCase):
+    'Test Project module'
+    module = 'project'
+
+    @with_transaction()
+    def test_sum_tree(self):
+        'Test sum_tree'
+        pool = Pool()
+        ProjectWork = pool.get('project.work')
+
+        company = create_company()
+        with set_company(company):
+            p_work_1, = ProjectWork.create([{
+                        'name': 'Work 1',
+                        'company': company.id,
+                        'effort_duration': datetime.timedelta(hours=1),
+                        }])
+
+            p_work_1_1, = ProjectWork.create([{
+                        'name': 'Work 1 1',
+                        'company': company.id,
+                        'parent': p_work_1.id,
+                        'effort_duration': datetime.timedelta(hours=1),
+                        }])
+
+            p_work_1_2, = ProjectWork.create([{
+                        'name': 'Work 1 2',
+                        'company': company.id,
+                        'parent': p_work_1.id,
+                        'effort_duration': datetime.timedelta(hours=1),
+                        }])
+
+            p_work_1_1_1, = ProjectWork.create([{
+                        'name': 'Work 1 1 1',
+                        'company': company.id,
+                        'parent': p_work_1_1.id,
+                        'effort_duration': datetime.timedelta(hours=1),
+                        }])
+
+            p_work_1_1_2, = ProjectWork.create([{
+                        'name': 'Work 1 1 2',
+                        'company': company.id,
+                        'parent': p_work_1_1.id,
+                        'effort_duration': datetime.timedelta(hours=1),
+                        }])
+
+            p_work_1_1_3, = ProjectWork.create([{
+                        'name': 'Work 1 1 3',
+                        'company': company.id,
+                        'parent': p_work_1_1.id,
+                        'effort_duration': datetime.timedelta(hours=1),
+                        }])
+
+            for work, total_effort in (
+                    (p_work_1, 6),
+                    (p_work_1_1, 4),
+                    (p_work_1_2, 1),
+                    (p_work_1_1_1, 1),
+                    (p_work_1_1_2, 1),
+                    (p_work_1_1_3, 1),
+                    ):
+                self.assertEqual(work.total_effort,
+                    datetime.timedelta(hours=total_effort))
+
+    @with_transaction()
+    def test_timesheet_available(self):
+        'Test timesheet available'
+        pool = Pool()
+        ProjectWork = pool.get('project.work')
+
+        company = create_company()
+        with set_company(company):
+            p_work = ProjectWork()
+            p_work.name = 'Project Work'
+            p_work.save()
+
+            self.assertFalse(p_work.timesheet_works)
+
+            p_work.timesheet_available = True
+            p_work.save()
+
+            self.assertEqual(len(p_work.timesheet_works), 1)
+
+            p_work.timesheet_available = False
+            p_work.save()
+
+            self.assertFalse(p_work.timesheet_works)
+
+    @with_transaction(context={'_check_access': True})
+    def test_delete_access(self):
+        'Test delete_access'
+        pool = Pool()
+        User = pool.get('res.user')
+        Group = pool.get('res.group')
+        ModelData = pool.get('ir.model.data')
+        ProjectWork = pool.get('project.work')
+        TimesheetWork = pool.get('timesheet.work')
+
+        company = create_company()
+        with set_company(company):
+            project_user = User()
+            project_user.login = 'project'
+            project_user.companies = [company]
+            project_user.company = company
+            project_group = Group(ModelData.get_id(
+                    'project', 'group_project_admin'))
+            project_user.groups = [project_group]
+            project_user.save()
+            with Transaction().set_user(project_user.id):
+                p_work = ProjectWork()
+                p_work.name = 'Project Work'
+                p_work.timesheet_available = True
+                p_work.save()
+
+                self.assertEqual(len(p_work.timesheet_works), 1)
+                ProjectWork.delete([p_work])
+                self.assertEqual(TimesheetWork.search([]), [])
+
+    @with_transaction()
+    def test_timesheet_default_work_empty(self):
+        "Test timesheet default work with no context"
+        pool = Pool()
+        ProjectWork = pool.get('project.work')
+        TimesheetLine = pool.get('timesheet.line')
+
+        company = create_company()
+        with set_company(company):
+            p_work = ProjectWork()
+            p_work.name = "Work"
+            p_work.timesheet_available = True
+            p_work.save()
+
+            self.assertFalse(TimesheetLine.default_work())
+
+    @with_transaction()
+    def test_timesheet_default_work_single(self):
+        "Test timesheet default work with 1 work in context"
+        pool = Pool()
+        ProjectWork = pool.get('project.work')
+        TimesheetLine = pool.get('timesheet.line')
+
+        company = create_company()
+        with set_company(company):
+            p_work = ProjectWork()
+            p_work.name = "Work"
+            p_work.timesheet_available = True
+            p_work.save()
+
+            with Transaction().set_context({'project.work': [p_work.id]}):
+                self.assertEqual(
+                    TimesheetLine.default_work(),
+                    p_work.timesheet_works[0].id)
+
+    @with_transaction()
+    def test_timesheet_default_work_multiple(self):
+        "Test timesheet default work with multiple work in context"
+        pool = Pool()
+        ProjectWork = pool.get('project.work')
+        TimesheetLine = pool.get('timesheet.line')
+
+        company = create_company()
+        with set_company(company):
+            works = ProjectWork.create([
+                    {'name': "Work 1", 'timesheet_available': True},
+                    {'name': "Work 2", 'timesheet_available': True},
+                    ])
+
+            with Transaction().set_context(
+                    {'project.work': map(int, works)}):
+                self.assertFalse(TimesheetLine.default_work())
+
+
+del ModuleTestCase
diff -r 3b92c40b90b6 -r ca3d91b2b93d tests/test_project.py
--- a/tests/test_project.py     Sun Apr 10 19:11:39 2022 +0200
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,198 +0,0 @@
-# This file is part of Tryton.  The COPYRIGHT file at the top level of
-# this repository contains the full copyright notices and license terms.
-import datetime
-import doctest
-import unittest
-
-import trytond.tests.test_tryton
-from trytond.modules.company.tests import (
-    CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company, set_company)
-from trytond.pool import Pool
-from trytond.tests.test_tryton import (
-    ModuleTestCase, doctest_checker, doctest_teardown, with_transaction)
-from trytond.transaction import Transaction
-
-
-class ProjectTestCase(
-        PartyCompanyCheckEraseMixin, CompanyTestMixin, ModuleTestCase):
-    'Test Project module'
-    module = 'project'
-
-    @with_transaction()
-    def test_sum_tree(self):
-        'Test sum_tree'
-        pool = Pool()
-        ProjectWork = pool.get('project.work')
-
-        company = create_company()
-        with set_company(company):
-            p_work_1, = ProjectWork.create([{
-                        'name': 'Work 1',
-                        'company': company.id,
-                        'effort_duration': datetime.timedelta(hours=1),
-                        }])
-
-            p_work_1_1, = ProjectWork.create([{
-                        'name': 'Work 1 1',
-                        'company': company.id,
-                        'parent': p_work_1.id,
-                        'effort_duration': datetime.timedelta(hours=1),
-                        }])
-
-            p_work_1_2, = ProjectWork.create([{
-                        'name': 'Work 1 2',
-                        'company': company.id,
-                        'parent': p_work_1.id,
-                        'effort_duration': datetime.timedelta(hours=1),
-                        }])
-
-            p_work_1_1_1, = ProjectWork.create([{
-                        'name': 'Work 1 1 1',
-                        'company': company.id,
-                        'parent': p_work_1_1.id,
-                        'effort_duration': datetime.timedelta(hours=1),
-                        }])
-
-            p_work_1_1_2, = ProjectWork.create([{
-                        'name': 'Work 1 1 2',
-                        'company': company.id,
-                        'parent': p_work_1_1.id,
-                        'effort_duration': datetime.timedelta(hours=1),
-                        }])
-
-            p_work_1_1_3, = ProjectWork.create([{
-                        'name': 'Work 1 1 3',
-                        'company': company.id,
-                        'parent': p_work_1_1.id,
-                        'effort_duration': datetime.timedelta(hours=1),
-                        }])
-
-            for work, total_effort in (
-                    (p_work_1, 6),
-                    (p_work_1_1, 4),
-                    (p_work_1_2, 1),
-                    (p_work_1_1_1, 1),
-                    (p_work_1_1_2, 1),
-                    (p_work_1_1_3, 1),
-                    ):
-                self.assertEqual(work.total_effort,
-                    datetime.timedelta(hours=total_effort))
-
-    @with_transaction()
-    def test_timesheet_available(self):
-        'Test timesheet available'
-        pool = Pool()
-        ProjectWork = pool.get('project.work')
-
-        company = create_company()
-        with set_company(company):
-            p_work = ProjectWork()
-            p_work.name = 'Project Work'
-            p_work.save()
-
-            self.assertFalse(p_work.timesheet_works)
-
-            p_work.timesheet_available = True
-            p_work.save()
-
-            self.assertEqual(len(p_work.timesheet_works), 1)
-
-            p_work.timesheet_available = False
-            p_work.save()
-
-            self.assertFalse(p_work.timesheet_works)
-
-    @with_transaction(context={'_check_access': True})
-    def test_delete_access(self):
-        'Test delete_access'
-        pool = Pool()
-        User = pool.get('res.user')
-        Group = pool.get('res.group')
-        ModelData = pool.get('ir.model.data')
-        ProjectWork = pool.get('project.work')
-        TimesheetWork = pool.get('timesheet.work')
-
-        company = create_company()
-        with set_company(company):
-            project_user = User()
-            project_user.login = 'project'
-            project_user.companies = [company]
-            project_user.company = company
-            project_group = Group(ModelData.get_id(
-                    'project', 'group_project_admin'))
-            project_user.groups = [project_group]
-            project_user.save()
-            with Transaction().set_user(project_user.id):
-                p_work = ProjectWork()
-                p_work.name = 'Project Work'
-                p_work.timesheet_available = True
-                p_work.save()
-
-                self.assertEqual(len(p_work.timesheet_works), 1)
-                ProjectWork.delete([p_work])
-                self.assertEqual(TimesheetWork.search([]), [])
-
-    @with_transaction()
-    def test_timesheet_default_work_empty(self):
-        "Test timesheet default work with no context"
-        pool = Pool()
-        ProjectWork = pool.get('project.work')
-        TimesheetLine = pool.get('timesheet.line')
-
-        company = create_company()
-        with set_company(company):
-            p_work = ProjectWork()
-            p_work.name = "Work"
-            p_work.timesheet_available = True
-            p_work.save()
-
-            self.assertFalse(TimesheetLine.default_work())
-
-    @with_transaction()
-    def test_timesheet_default_work_single(self):
-        "Test timesheet default work with 1 work in context"
-        pool = Pool()
-        ProjectWork = pool.get('project.work')
-        TimesheetLine = pool.get('timesheet.line')
-
-        company = create_company()
-        with set_company(company):
-            p_work = ProjectWork()
-            p_work.name = "Work"
-            p_work.timesheet_available = True
-            p_work.save()
-
-            with Transaction().set_context({'project.work': [p_work.id]}):
-                self.assertEqual(
-                    TimesheetLine.default_work(),
-                    p_work.timesheet_works[0].id)
-
-    @with_transaction()
-    def test_timesheet_default_work_multiple(self):
-        "Test timesheet default work with multiple work in context"
-        pool = Pool()
-        ProjectWork = pool.get('project.work')
-        TimesheetLine = pool.get('timesheet.line')
-
-        company = create_company()
-        with set_company(company):
-            works = ProjectWork.create([
-                    {'name': "Work 1", 'timesheet_available': True},
-                    {'name': "Work 2", 'timesheet_available': True},
-                    ])
-
-            with Transaction().set_context(
-                    {'project.work': map(int, works)}):
-                self.assertFalse(TimesheetLine.default_work())
-
-
-def suite():
-    suite = trytond.tests.test_tryton.suite()
-    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
-            ProjectTestCase))
-    suite.addTests(doctest.DocFileSuite(
-            'scenario_project_status.rst',
-            tearDown=doctest_teardown, encoding='utf-8',
-            checker=doctest_checker,
-            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
-    return suite
diff -r 3b92c40b90b6 -r ca3d91b2b93d tests/test_scenario.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_scenario.py    Sat Apr 16 18:30:18 2022 +0200
@@ -0,0 +1,22 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+
+import doctest
+import glob
+import os
+
+from trytond.tests.test_tryton import doctest_checker, doctest_teardown
+
+
+def load_tests(loader, tests, pattern):
+    cwd = os.getcwd()
+    try:
+        os.chdir(os.path.dirname(__file__))
+        for scenario in glob.glob('*.rst'):
+            tests.addTests(doctest.DocFileSuite(
+                    scenario, tearDown=doctest_teardown, encoding='utf-8',
+                    checker=doctest_checker,
+                    optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
+    finally:
+        os.chdir(cwd)
+    return tests
diff -r 3b92c40b90b6 -r ca3d91b2b93d tox.ini
--- a/tox.ini   Sun Apr 10 19:11:39 2022 +0200
+++ b/tox.ini   Sat Apr 16 18:30:18 2022 +0200
@@ -2,8 +2,9 @@
 envlist = {py37,py38,py39,py310}-{sqlite,postgresql}
 
 [testenv]
+extras = test
 commands =
-    coverage run --include=.*/project/* setup.py test
+    coverage run --include=.*/project/* -m unittest discover -s tests
     coverage report --include=.*/project/* --omit=*/tests/*
 deps =
     coverage

Reply via email to