zulip package: Add unittest

As the first unittest, this creates a test directory and
abnd adds it tho the excluded pip package files.

There are two `tests` directories now, one in zulip_botserver and one in
zulip. This confuses the unittest runner, leading to failed test imports.
Therefore, we need to tell the package importer that there are multiple
tests directories, all of which should be considered for a search.
This commit is contained in:
derAnfaenger 2017-09-04 20:19:39 +02:00 committed by Tim Abbott
parent 390054da62
commit fb2aff4611
4 changed files with 50 additions and 1 deletions

View file

@ -74,7 +74,7 @@ setuptools_info = dict(
try: try:
from setuptools import setup, find_packages from setuptools import setup, find_packages
package_info.update(setuptools_info) package_info.update(setuptools_info)
package_info['packages'] = find_packages() package_info['packages'] = find_packages(exclude=['tests'])
except ImportError: except ImportError:
from distutils.core import setup from distutils.core import setup

2
zulip/tests/__init__.py Normal file
View file

@ -0,0 +1,2 @@
import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)

View file

@ -0,0 +1,45 @@
from __future__ import absolute_import
import argparse
import os
import six
import unittest
import zulip
from unittest import TestCase
if six.PY2:
from mock import patch
else:
from unittest.mock import patch
class TestDefaultArguments(TestCase):
def test_invalid_arguments(self):
parser = zulip.add_default_arguments(argparse.ArgumentParser(usage="lorem ipsum"))
with self.assertRaises(SystemExit) as cm, patch('sys.stderr', new=six.StringIO()) as mock_stderr:
parser.parse_args(['invalid argument'])
self.assertEqual(cm.exception.code, 2)
# Assert that invalid arguments exit with printing the full usage (non-standard behavior)
self.assertTrue(mock_stderr.getvalue().startswith("""usage: lorem ipsum
optional arguments:
-h, --help show this help message and exit
Zulip API configuration:
--site ZULIP_SITE Zulip server URI
"""))
@patch('os.path.exists', return_value=False)
def test_config_path_with_tilde(self, mock_os_path_exists):
parser = zulip.add_default_arguments(argparse.ArgumentParser(usage="lorem ipsum"))
test_path = '~/zuliprc'
args = parser.parse_args(['--config-file', test_path])
with self.assertRaises(RuntimeError) as cm:
zulip.init_from_options(args)
expanded_test_path = os.path.abspath(os.path.expanduser(test_path))
self.assertEqual(str(cm.exception), 'api_key or email not specified and '
'file {} does not exist'.format(expanded_test_path))
if __name__ == '__main__':
unittest.main()

View file

@ -0,0 +1,2 @@
import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)