From 73bc43ecf69a473464909ef1b4d2236c60fcb1bb Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Tue, 5 Apr 2016 21:24:14 +0300 Subject: [PATCH] Add tests; test importing list of genres --- Makefile | 3 +++ tests/Makefile | 2 +- tests/__init__.py | 33 +++++++++++++++++++++++++++++++++ tests/run_all.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ tests/test_glst.py | 16 ++++++++++++++++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 tests/__init__.py create mode 100755 tests/run_all.py create mode 100755 tests/test_glst.py diff --git a/Makefile b/Makefile index 5ef35dc..20168df 100644 --- a/Makefile +++ b/Makefile @@ -11,3 +11,6 @@ htmldoc: .PHONY: test test: $(MAKE) -C tests + +.PHONY: tests +tests: test diff --git a/tests/Makefile b/tests/Makefile index ceb35bd..b990065 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,4 +1,4 @@ .PHONY: all all: - @echo "Nothing to be done for 'all'" + ./run_all.py diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..c624381 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,33 @@ + +__all__ = ['TestCase', 'main'] + + +import os +import unittest +from m_librarian.db import open_db, init_db + + +class TestCase(unittest.TestCase): + def setUp(self): + try: + os.remove('/tmp/m_librarian-test.sqlite') + except OSError: + pass + open_db('sqlite:///tmp/m_librarian-test.sqlite') + init_db() + + def tearDown(self): + try: + os.remove('/tmp/m_librarian-test.sqlite') + except OSError: + pass + + +def main(): + try: + unittest.main(testRunner=unittest.TextTestRunner()) + except SystemExit, msg: + result = msg.args[0] + else: + result = 0 + raise SystemExit(result) diff --git a/tests/run_all.py b/tests/run_all.py new file mode 100755 index 0000000..51d3d6a --- /dev/null +++ b/tests/run_all.py @@ -0,0 +1,44 @@ +#! /usr/bin/env python + + +import os +import sys +import subprocess + + +def isexecutable(filename): + infile = open(filename, 'r') + magic = infile.read(2) + infile.close() + return magic == "#!" + + +def collect_tests(): + tests = [] + for dirpath, dirs, files in os.walk("tests"): + tests.extend( + [os.path.join(dirpath, filename) for filename in files + if filename.startswith("test") and filename.endswith(".py") + ]) + return [test[:-3].replace(os.sep, '.') for test in tests + if isexecutable(test)] + + +def main(): + os.chdir(os.path.join(os.path.dirname(sys.argv[0]), os.pardir)) + tests = collect_tests() + + os.environ["PYTHONPATH"] = os.curdir + + for test in sorted(tests): + sys.stdout.write("Test: %s... " % test) + sys.stdout.flush() + rc = subprocess.call((sys.executable, '-m', test)) + if rc: + sys.stdout.write("ERROR\n") + else: + sys.stdout.write("Ok\n") + sys.stdout.flush() + +if __name__ == '__main__': + main() diff --git a/tests/test_glst.py b/tests/test_glst.py new file mode 100755 index 0000000..5349bb3 --- /dev/null +++ b/tests/test_glst.py @@ -0,0 +1,16 @@ +#! /usr/bin/env python + + +from tests import TestCase, main +from m_librarian.db import Genre +from m_librarian.glst import import_glst + + +class TestGlst(TestCase): + def test_import_glst(self): + import_glst() + self.assertEqual(Genre.select().count(), 340) + + +if __name__ == "__main__": + main() -- 2.39.5