summaryrefslogtreecommitdiff
path: root/tests/utils/argparse_test.py
diff options
context:
space:
mode:
authorLucas Hoffmann <lucc@posteo.de>2018-12-21 00:33:19 +0100
committerLucas Hoffmann <lucc@posteo.de>2019-01-29 00:31:03 +0100
commit7f0a1b8cdd492917f84f90cade28cefa0a37c3e0 (patch)
tree84fc17675a16fba219d56c0c17b5c0183086e64a /tests/utils/argparse_test.py
parentfd1348329b8697d9bb014e7d61560f3421d29e46 (diff)
Rename test files
The two main reasons are - to run `python3 -m unittest discover` without specifying a custom `--pattern *_test.py` - to include the test files automatically when generating the MANIFEST file.
Diffstat (limited to 'tests/utils/argparse_test.py')
-rw-r--r--tests/utils/argparse_test.py178
1 files changed, 0 insertions, 178 deletions
diff --git a/tests/utils/argparse_test.py b/tests/utils/argparse_test.py
deleted file mode 100644
index a793d5cf..00000000
--- a/tests/utils/argparse_test.py
+++ /dev/null
@@ -1,178 +0,0 @@
-# encoding=utf-8
-# Copyright © 2017 Dylan Baker
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-"""Tests for alot.utils.argparse"""
-
-import argparse
-import contextlib
-import os
-import shutil
-import tempfile
-import unittest
-
-import mock
-
-from alot.utils import argparse as cargparse
-
-# Good descriptive test names often don't fit PEP8, which is meant to cover
-# functions meant to be called by humans.
-# pylint: disable=invalid-name
-
-# When using mock asserts its possible that many methods will not use self,
-# that's fine
-# pylint: disable=no-self-use
-
-
-class TestValidatedStore(unittest.TestCase):
- """Tests for the ValidatedStore action class."""
-
- def _argparse(self, args):
- """Create an argparse instance with a validator."""
-
- def validator(args):
- if args == 'fail':
- raise cargparse.ValidationFailed
-
- parser = argparse.ArgumentParser()
- parser.add_argument(
- 'foo',
- action=cargparse.ValidatedStoreAction,
- validator=validator)
- with mock.patch('sys.stderr', mock.Mock()):
- return parser.parse_args(args)
-
- def test_validates(self):
- # Arparse will raise a SystemExit (calls sys.exit) rather than letting
- # the exception cause the program to close.
- with self.assertRaises(SystemExit):
- self._argparse(['fail'])
-
-
-@contextlib.contextmanager
-def temporary_directory(suffix='', prefix='', dir=None): # pylint: disable=redefined-builtin
- """Python3 interface implementation.
-
- Python3 provides a class that can be used as a context manager, which
- creates a temporary directory and removes it when the context manager
- exits. This function emulates enough of the interface of
- TemporaryDirectory, for this module to use, and is designed as a drop in
- replacement that can be replaced after the python3 port.
-
- The only user visible difference is that this does not implement the
- cleanup method that TemporaryDirectory does.
- """
- directory = tempfile.mkdtemp(suffix=suffix, prefix=prefix, dir=dir)
- yield directory
- shutil.rmtree(directory)
-
-
-class TestRequireFile(unittest.TestCase):
- """Tests for the require_file validator."""
-
- def test_doesnt_exist(self):
- with temporary_directory() as d:
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.require_file(os.path.join(d, 'doesnt-exist'))
-
- def test_dir(self):
- with temporary_directory() as d:
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.require_file(d)
-
- def test_file(self):
- with tempfile.NamedTemporaryFile() as f:
- cargparse.require_file(f.name)
-
- def test_char_special(self):
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.require_file('/dev/null')
-
- def test_fifo(self):
- with temporary_directory() as d:
- path = os.path.join(d, 'fifo')
- os.mkfifo(path)
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.require_file(path)
-
-
-class TestRequireDir(unittest.TestCase):
- """Tests for the require_dir validator."""
-
- def test_doesnt_exist(self):
- with temporary_directory() as d:
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.require_dir(os.path.join(d, 'doesnt-exist'))
-
- def test_dir(self):
- with temporary_directory() as d:
- cargparse.require_dir(d)
-
- def test_file(self):
- with tempfile.NamedTemporaryFile() as f:
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.require_dir(f.name)
-
- def test_char_special(self):
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.require_dir('/dev/null')
-
- def test_fifo(self):
- with temporary_directory() as d:
- path = os.path.join(d, 'fifo')
- os.mkfifo(path)
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.require_dir(path)
-
-
-class TestOptionalFileLike(unittest.TestCase):
- """Tests for the optional_file_like validator."""
-
- def test_doesnt_exist(self):
- with temporary_directory() as d:
- cargparse.optional_file_like(os.path.join(d, 'doesnt-exist'))
-
- def test_dir(self):
- with temporary_directory() as d:
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.optional_file_like(d)
-
- def test_file(self):
- with tempfile.NamedTemporaryFile() as f:
- cargparse.optional_file_like(f.name)
-
- def test_char_special(self):
- cargparse.optional_file_like('/dev/null')
-
- def test_fifo(self):
- with temporary_directory() as d:
- path = os.path.join(d, 'fifo')
- os.mkfifo(path)
- cargparse.optional_file_like(path)
-
-
-class TestIntOrPlusOrMinus(unittest.TestCase):
- """Tests for the is_int_or_pm validator."""
-
- def test_int(self):
- self.assertTrue(cargparse.is_int_or_pm('5'))
-
- def test_pm(self):
- self.assertTrue(cargparse.is_int_or_pm('+'))
- self.assertTrue(cargparse.is_int_or_pm('-'))
-
- def test_rubbish(self):
- with self.assertRaises(cargparse.ValidationFailed):
- cargparse.is_int_or_pm('XX')