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

        issue9215
        review389851002
diffstat:

 setup.py                   |    6 +-
 tests/__init__.py          |    7 -
 tests/test_module.py       |  159 ++++++++++++++++++++++++++++++++++++++
 tests/test_scenario.py     |   22 +++++
 tests/test_stock_supply.py |  186 ---------------------------------------------
 tox.ini                    |    3 +-
 6 files changed, 186 insertions(+), 197 deletions(-)

diffs (426 lines):

diff -r b2481df1c332 -r 84fa80a47db6 setup.py
--- a/setup.py  Tue Apr 12 10:35:40 2022 +0200
+++ b/setup.py  Sat Apr 16 18:30:20 2022 +0200
@@ -136,13 +136,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]
     stock_supply = trytond.modules.stock_supply
     """,
-    test_suite='tests',
-    test_loader='trytond.test_loader:Loader',
-    tests_require=tests_require,
     )
diff -r b2481df1c332 -r 84fa80a47db6 tests/__init__.py
--- a/tests/__init__.py Tue Apr 12 10:35:40 2022 +0200
+++ b/tests/__init__.py Sat Apr 16 18:30:20 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.stock_supply.tests.test_stock_supply import suite
-except ImportError:
-    from .test_stock_supply import suite
-
-__all__ = ['suite']
diff -r b2481df1c332 -r 84fa80a47db6 tests/test_module.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_module.py      Sat Apr 16 18:30:20 2022 +0200
@@ -0,0 +1,159 @@
+# 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.account.tests import create_chart
+from trytond.modules.company.tests import (
+    CompanyTestMixin, create_company, set_company)
+from trytond.pool import Pool
+from trytond.tests.test_tryton import ModuleTestCase, with_transaction
+
+DATES = [
+    # purchase date, lead time, supply date
+    (datetime.date(2011, 11, 21), datetime.timedelta(10),
+        datetime.date(2011, 12, 1)),
+    (datetime.date(2011, 11, 21), datetime.timedelta(9),
+        datetime.date(2011, 11, 30)),
+    (datetime.date(2011, 11, 21), datetime.timedelta(8),
+        datetime.date(2011, 11, 29)),
+    (datetime.date(2011, 11, 21), datetime.timedelta(7),
+        datetime.date(2011, 11, 28)),
+    (datetime.date(2011, 11, 21), datetime.timedelta(6),
+        datetime.date(2011, 11, 27)),
+    (datetime.date(2011, 11, 21), datetime.timedelta(5),
+        datetime.date(2011, 11, 26)),
+    (datetime.date(2011, 11, 21), datetime.timedelta(4),
+        datetime.date(2011, 11, 25)),
+    ]
+
+
+class StockSupplyTestCase(CompanyTestMixin, ModuleTestCase):
+    'Test StockSupply module'
+    module = 'stock_supply'
+
+    def test_compute_supply_date(self):
+        'Test compute_supply_date'
+        @with_transaction()
+        def run(purchase_date, lead_time, supply_date):
+            pool = Pool()
+            ProductSupplier = pool.get('purchase.product_supplier')
+            product_supplier = self.create_product_supplier(lead_time)
+            date = ProductSupplier.compute_supply_date(
+                product_supplier, purchase_date)
+            self.assertEqual(date, supply_date)
+        for purchase_date, lead_time, supply_date in DATES:
+            run(purchase_date, lead_time, supply_date)
+
+    def test_compute_purchase_date(self):
+        'Test compute_purchase_date'
+        @with_transaction()
+        def run(purchase_date, lead_time, supply_date):
+            pool = Pool()
+            ProductSupplier = pool.get('purchase.product_supplier')
+            product_supplier = self.create_product_supplier(lead_time)
+            date = ProductSupplier.compute_purchase_date(
+                product_supplier, supply_date)
+            self.assertEqual(date, purchase_date)
+        for purchase_date, lead_time, supply_date in DATES:
+            run(purchase_date, lead_time, supply_date)
+
+    def create_product_supplier(self, lead_time):
+        '''
+        Create a Product with a Product Supplier
+
+        :param lead_time: timedelta needed to supply
+        :return: the id of the Product Supplier
+        '''
+        pool = Pool()
+        Uom = pool.get('product.uom')
+        UomCategory = pool.get('product.uom.category')
+        Template = pool.get('product.template')
+        Product = pool.get('product.product')
+        Party = pool.get('party.party')
+        Account = pool.get('account.account')
+        ProductSupplier = pool.get('purchase.product_supplier')
+
+        uom_category, = UomCategory.create([{'name': 'Test'}])
+        uom, = Uom.create([{
+                    'name': 'Test',
+                    'symbol': 'T',
+                    'category': uom_category.id,
+                    'rate': 1.0,
+                    'factor': 1.0,
+                    }])
+        template, = Template.create([{
+                    'name': 'ProductTest',
+                    'default_uom': uom.id,
+                    }])
+        product, = Product.create([{
+                    'template': template.id,
+                    }])
+        company = create_company()
+        with set_company(company):
+            create_chart(company)
+            receivable, = Account.search([
+                ('type.receivable', '=', True),
+                ('company', '=', company.id),
+                ])
+            payable, = Account.search([
+                ('type.payable', '=', True),
+                ('company', '=', company.id),
+                ])
+            supplier, = Party.create([{
+                        'name': 'supplier',
+                        'account_receivable': receivable.id,
+                        'account_payable': payable.id,
+                        }])
+            product_supplier, = ProductSupplier.create([{
+                        'template': template.id,
+                        'company': company.id,
+                        'party': supplier.id,
+                        'lead_time': lead_time,
+                        }])
+            return product_supplier
+
+    @with_transaction()
+    def test_order_point_location_searcher(self):
+        pool = Pool()
+        Uom = pool.get('product.uom')
+        Template = pool.get('product.template')
+        Product = pool.get('product.product')
+        Location = pool.get('stock.location')
+        OrderPoint = pool.get('stock.order_point')
+        unit, = Uom.search([('symbol', '=', 'u')])
+        template, = Template.create([{
+                    'name': 'ProductTest',
+                    'type': 'goods',
+                    'default_uom': unit.id,
+                    'purchase_uom': unit.id,
+                    'purchasable': True,
+                    }])
+        product, = Product.create([{
+                    'template': template.id,
+                    }])
+
+        warehouse, = Location.search([('type', '=', 'warehouse')])
+        storage, = Location.search([('code', '=', 'STO')])
+
+        company = create_company()
+        with set_company(company):
+            order_point, = OrderPoint.create([{
+                        'product': product.id,
+                        'type': 'purchase',
+                        'warehouse_location': warehouse.id,
+                        'min_quantity': 0.0,
+                        'target_quantity': 5.0,
+                        }])
+
+            for clause, result in [
+                    (('location', '=', warehouse.name), [order_point]),
+                    (('location', '=', 'storage'), []),
+                    (('location', '!=', warehouse.name), []),
+                    (('location', '!=', 'storage'), [order_point]),
+                    ]:
+                self.assertListEqual(
+                    OrderPoint.search(clause), result, msg=clause)
+
+
+del ModuleTestCase
diff -r b2481df1c332 -r 84fa80a47db6 tests/test_scenario.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_scenario.py    Sat Apr 16 18:30:20 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 b2481df1c332 -r 84fa80a47db6 tests/test_stock_supply.py
--- a/tests/test_stock_supply.py        Tue Apr 12 10:35:40 2022 +0200
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +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
-from decimal import Decimal
-
-import trytond.tests.test_tryton
-from trytond.modules.account.tests import create_chart
-from trytond.modules.company.tests import (
-    CompanyTestMixin, create_company, set_company)
-from trytond.pool import Pool
-from trytond.tests.test_tryton import (
-    ModuleTestCase, doctest_checker, doctest_teardown, with_transaction)
-
-DATES = [
-    # purchase date, lead time, supply date
-    (datetime.date(2011, 11, 21), datetime.timedelta(10),
-        datetime.date(2011, 12, 1)),
-    (datetime.date(2011, 11, 21), datetime.timedelta(9),
-        datetime.date(2011, 11, 30)),
-    (datetime.date(2011, 11, 21), datetime.timedelta(8),
-        datetime.date(2011, 11, 29)),
-    (datetime.date(2011, 11, 21), datetime.timedelta(7),
-        datetime.date(2011, 11, 28)),
-    (datetime.date(2011, 11, 21), datetime.timedelta(6),
-        datetime.date(2011, 11, 27)),
-    (datetime.date(2011, 11, 21), datetime.timedelta(5),
-        datetime.date(2011, 11, 26)),
-    (datetime.date(2011, 11, 21), datetime.timedelta(4),
-        datetime.date(2011, 11, 25)),
-    ]
-
-
-class StockSupplyTestCase(CompanyTestMixin, ModuleTestCase):
-    'Test StockSupply module'
-    module = 'stock_supply'
-
-    def test_compute_supply_date(self):
-        'Test compute_supply_date'
-        @with_transaction()
-        def run(purchase_date, lead_time, supply_date):
-            pool = Pool()
-            ProductSupplier = pool.get('purchase.product_supplier')
-            product_supplier = self.create_product_supplier(lead_time)
-            date = ProductSupplier.compute_supply_date(
-                product_supplier, purchase_date)
-            self.assertEqual(date, supply_date)
-        for purchase_date, lead_time, supply_date in DATES:
-            run(purchase_date, lead_time, supply_date)
-
-    def test_compute_purchase_date(self):
-        'Test compute_purchase_date'
-        @with_transaction()
-        def run(purchase_date, lead_time, supply_date):
-            pool = Pool()
-            ProductSupplier = pool.get('purchase.product_supplier')
-            product_supplier = self.create_product_supplier(lead_time)
-            date = ProductSupplier.compute_purchase_date(
-                product_supplier, supply_date)
-            self.assertEqual(date, purchase_date)
-        for purchase_date, lead_time, supply_date in DATES:
-            run(purchase_date, lead_time, supply_date)
-
-    def create_product_supplier(self, lead_time):
-        '''
-        Create a Product with a Product Supplier
-
-        :param lead_time: timedelta needed to supply
-        :return: the id of the Product Supplier
-        '''
-        pool = Pool()
-        Uom = pool.get('product.uom')
-        UomCategory = pool.get('product.uom.category')
-        Template = pool.get('product.template')
-        Product = pool.get('product.product')
-        Party = pool.get('party.party')
-        Account = pool.get('account.account')
-        ProductSupplier = pool.get('purchase.product_supplier')
-
-        uom_category, = UomCategory.create([{'name': 'Test'}])
-        uom, = Uom.create([{
-                    'name': 'Test',
-                    'symbol': 'T',
-                    'category': uom_category.id,
-                    'rate': 1.0,
-                    'factor': 1.0,
-                    }])
-        template, = Template.create([{
-                    'name': 'ProductTest',
-                    'default_uom': uom.id,
-                    }])
-        product, = Product.create([{
-                    'template': template.id,
-                    }])
-        company = create_company()
-        with set_company(company):
-            create_chart(company)
-            receivable, = Account.search([
-                ('type.receivable', '=', True),
-                ('company', '=', company.id),
-                ])
-            payable, = Account.search([
-                ('type.payable', '=', True),
-                ('company', '=', company.id),
-                ])
-            supplier, = Party.create([{
-                        'name': 'supplier',
-                        'account_receivable': receivable.id,
-                        'account_payable': payable.id,
-                        }])
-            product_supplier, = ProductSupplier.create([{
-                        'template': template.id,
-                        'company': company.id,
-                        'party': supplier.id,
-                        'lead_time': lead_time,
-                        }])
-            return product_supplier
-
-    @with_transaction()
-    def test_order_point_location_searcher(self):
-        pool = Pool()
-        Uom = pool.get('product.uom')
-        Template = pool.get('product.template')
-        Product = pool.get('product.product')
-        Location = pool.get('stock.location')
-        OrderPoint = pool.get('stock.order_point')
-        unit, = Uom.search([('symbol', '=', 'u')])
-        template, = Template.create([{
-                    'name': 'ProductTest',
-                    'type': 'goods',
-                    'default_uom': unit.id,
-                    'purchase_uom': unit.id,
-                    'purchasable': True,
-                    }])
-        product, = Product.create([{
-                    'template': template.id,
-                    }])
-
-        warehouse, = Location.search([('type', '=', 'warehouse')])
-        storage, = Location.search([('code', '=', 'STO')])
-
-        company = create_company()
-        with set_company(company):
-            order_point, = OrderPoint.create([{
-                        'product': product.id,
-                        'type': 'purchase',
-                        'warehouse_location': warehouse.id,
-                        'min_quantity': 0.0,
-                        'target_quantity': 5.0,
-                        }])
-
-            for clause, result in [
-                    (('location', '=', warehouse.name), [order_point]),
-                    (('location', '=', 'storage'), []),
-                    (('location', '!=', warehouse.name), []),
-                    (('location', '!=', 'storage'), [order_point]),
-                    ]:
-                self.assertListEqual(
-                    OrderPoint.search(clause), result, msg=clause)
-
-
-def suite():
-    suite = trytond.tests.test_tryton.suite()
-    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
-        StockSupplyTestCase))
-    suite.addTests(doctest.DocFileSuite('scenario_stock_internal_supply.rst',
-            tearDown=doctest_teardown, encoding='utf-8',
-            checker=doctest_checker,
-            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
-    suite.addTests(doctest.DocFileSuite(
-            'scenario_stock_internal_supply_lead_time.rst',
-            tearDown=doctest_teardown, encoding='utf-8',
-            checker=doctest_checker,
-            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
-    suite.addTests(doctest.DocFileSuite(
-            'scenario_stock_supply_purchase_request.rst',
-            tearDown=doctest_teardown, encoding='utf-8',
-            checker=doctest_checker,
-            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
-    suite.addTests(doctest.DocFileSuite(
-            'scenario_stock_internal_supply_overflow.rst',
-            tearDown=doctest_teardown, encoding='utf-8',
-            checker=doctest_checker,
-            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
-    return suite
diff -r b2481df1c332 -r 84fa80a47db6 tox.ini
--- a/tox.ini   Tue Apr 12 10:35:40 2022 +0200
+++ b/tox.ini   Sat Apr 16 18:30:20 2022 +0200
@@ -2,8 +2,9 @@
 envlist = {py37,py38,py39,py310}-{sqlite,postgresql}
 
 [testenv]
+extras = test
 commands =
-    coverage run --include=.*/stock_supply/* setup.py test
+    coverage run --include=.*/stock_supply/* -m unittest discover -s tests
     coverage report --include=.*/stock_supply/* --omit=*/tests/*
 deps =
     coverage

Reply via email to