From 5ac583caa73b4f208253829796ab50ce3c3323e9 Mon Sep 17 00:00:00 2001 From: Guillem Barba Date: Tue, 18 Dec 2012 18:34:36 +0100 Subject: [PATCH] [ADD] setup.py and basic tests --- setup.py | 73 ++++++++++++++++++++++++++++++++++ tests/__init__.py | 4 ++ tests/test_module_source.py | 78 +++++++++++++++++++++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 setup.py create mode 100644 tests/__init__.py create mode 100644 tests/test_module_source.py diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..98e785d --- /dev/null +++ b/setup.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python +#This file is part of Tryton. The COPYRIGHT file at the top level of +#this repository contains the full copyright notices and license terms. + +from setuptools import setup +import re +import os +import ConfigParser + + +def read(fname): + return open(os.path.join(os.path.dirname(__file__), fname)).read() + +config = ConfigParser.ConfigParser() +config.readfp(open('tryton.cfg')) +info = dict(config.items('tryton')) +for key in ('depends', 'extras_depend', 'xml'): + if key in info: + info[key] = info[key].strip().splitlines() +major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2) +major_version = int(major_version) +minor_version = int(minor_version) + +requires = [] +for dep in info.get('depends', []): + if not re.match(r'(ir|res|webdav)(\W|$)', dep): + requires.append('trytond_%s >= %s.%s, < %s.%s' % + (dep, major_version, minor_version, major_version, + minor_version + 1)) +requires.append('trytond >= %s.%s, < %s.%s' % + (major_version, minor_version, major_version, minor_version + 1)) + +setup(name='trytonnan_module_source', + version=info.get('version', '0.0.1'), + description='Tryton module to manage sources of Tryton modules', + long_description=read('README'), + author='Tryton', + url='http://www.nan-tic.com/', + download_url="https://bitbucket.org/nantic/python-pypi_client/downloads", + package_dir={'trytond.modules.module_source': '.'}, + packages=[ + 'trytond.modules.module_source', + 'trytond.modules.module_source.tests', + ], + package_data={ + 'trytond.modules.module_source': info.get('xml', []) \ + + ['tryton.cfg', 'locale/*.po', '*.odt', 'icons/*.svg'], + }, + classifiers=[ +# 'Development Status :: 5 - Production/Stable', + 'Environment :: Plugins', + 'Framework :: Tryton', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: GNU General Public License (GPL)', + 'Natural Language :: English', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Topic :: Office/Business', + ], + license='GPL-3', + install_requires=requires, + extras_require={ + 'PypiClient': ['pypi_client'], + }, + zip_safe=False, + entry_points=""" + [trytond.modules] + module_source = trytond.modules.module_source + """, + test_suite='tests', + test_loader='trytond.test_loader:Loader', + ) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..65ecdd1 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,4 @@ +#This file is part of Tryton. The COPYRIGHT file at the top level of +#this repository contains the full copyright notices and license terms. + +from .test_module_source import suite diff --git a/tests/test_module_source.py b/tests/test_module_source.py new file mode 100644 index 0000000..339f758 --- /dev/null +++ b/tests/test_module_source.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python +#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 sys +import os +DIR = os.path.abspath(os.path.normpath(os.path.join(__file__, + '..', '..', '..', '..', '..', 'trytond'))) +if os.path.isdir(DIR): + sys.path.insert(0, os.path.dirname(DIR)) + +import unittest +import trytond.tests.test_tryton +from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view,\ + test_depends +from trytond.transaction import Transaction + + +class ModuleSourceTestCase(unittest.TestCase): + ''' + Test Module Source module. + ''' + + def setUp(self): + trytond.tests.test_tryton.install_module('module_source') + self.module_source_serie = POOL.get('ir.module.source.serie') + self.module_source = POOL.get('ir.module.source') + self.party = POOL.get('party.party') + + def test0005views(self): + ''' + Test views. + ''' + test_view('module_source') + + def test0006depends(self): + ''' + Test depends. + ''' + test_depends() + + def test0010serie(self): + ''' + Create serie. + ''' + with Transaction().start(DB_NAME, USER, + context=CONTEXT) as transaction: + serie28 = self.module_source_serie.create({ + 'name': '2.8', + 'stable': False, + }) + self.assert_(serie28.id) + transaction.cursor.commit() + + def test0020source(self): + ''' + Create source. + ''' + with Transaction().start(DB_NAME, USER, + context=CONTEXT) as transaction: + party1 = self.party.search([], limit=1) + serie1 = self.module_source_serie.search([], limit=1) + source1 = self.module_source.create({ + 'name': 'Source 1', + 'author': party1 and party1[0].id, + 'server_serie': serie1[0].id, + }) + self.assert_(source1.id) + transaction.cursor.commit() + + +def suite(): + suite = trytond.tests.test_tryton.suite() + suite.addTests(unittest.TestLoader()\ + .loadTestsFromTestCase(ModuleSourceTestCase)) + return suite + +if __name__ == '__main__': + unittest.TextTestRunner(verbosity=2).run(suite())