From bb2b157d337b1e7eddba0aa56bae43bb31fc22e6 Mon Sep 17 00:00:00 2001 From: Edwin Lee Date: Sat, 24 Nov 2018 10:22:17 -0600 Subject: [PATCH] Added more unit tests --- epregressions/builds/makefile.py | 2 + epregressions/tests/builds/test_install.py | 38 ++++++++++++ epregressions/tests/builds/test_makefile.py | 59 +++++++++++++++++++ .../tests/builds/test_visualstudio.py | 38 ++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 epregressions/tests/builds/test_install.py create mode 100644 epregressions/tests/builds/test_makefile.py create mode 100644 epregressions/tests/builds/test_visualstudio.py diff --git a/epregressions/builds/makefile.py b/epregressions/builds/makefile.py index a46f0c1..a613b56 100644 --- a/epregressions/builds/makefile.py +++ b/epregressions/builds/makefile.py @@ -23,6 +23,8 @@ def set_build_directory(self, build_directory): self.source_directory = 'unknown - invalid build directory?' return cmake_cache_file = os.path.join(self.build_directory, 'CMakeCache.txt') + if not os.path.exists(cmake_cache_file): + raise Exception('Could not find cache file in build directory') with open(cmake_cache_file, 'r') as f_cache: for this_line in f_cache.readlines(): if 'CMAKE_HOME_DIRECTORY:INTERNAL=' in this_line: diff --git a/epregressions/tests/builds/test_install.py b/epregressions/tests/builds/test_install.py new file mode 100644 index 0000000..6451700 --- /dev/null +++ b/epregressions/tests/builds/test_install.py @@ -0,0 +1,38 @@ +import tempfile +import unittest + +from epregressions.builds.install import EPlusInstallDirectory + + +class TestBaseWorkflowMethods(unittest.TestCase): + + def setUp(self): + self.build = EPlusInstallDirectory() + self.run_dir = tempfile.mkdtemp() + + def test_set_build_directory_does_not_exist(self): + self.build.set_build_directory('hello') + self.assertIn('unknown', self.build.source_directory) + + def test_set_build_directory_does_exist(self): + self.build.set_build_directory(self.run_dir) + self.assertEqual(self.run_dir, self.build.source_directory) + + def test_verify_before_setting_build_directory(self): + with self.assertRaises(Exception): + self.build.verify() + + def test_verify_but_nothing_exists(self): + self.build.set_build_directory(self.run_dir) + check = self.build.verify() + self.assertIsInstance(check, list) + self.assertGreaterEqual(len(check), 4) # there should be some errors + + def test_get_build_tree_before_setting_build_directory(self): + with self.assertRaises(Exception): + self.build.get_build_tree() + + def test_get_build_tree(self): + self.build.set_build_directory(self.run_dir) + tree = self.build.get_build_tree() + self.assertIsInstance(tree, dict) diff --git a/epregressions/tests/builds/test_makefile.py b/epregressions/tests/builds/test_makefile.py new file mode 100644 index 0000000..54282d2 --- /dev/null +++ b/epregressions/tests/builds/test_makefile.py @@ -0,0 +1,59 @@ +import os +import tempfile +import unittest + +from epregressions.builds.makefile import CMakeCacheMakeFileBuildDirectory + + +class TestBaseWorkflowMethods(unittest.TestCase): + + def setUp(self): + self.build = CMakeCacheMakeFileBuildDirectory() + self.run_dir = tempfile.mkdtemp() + self.dummy_source_dir = '/dummy/source/dir' + + def set_cache_file(self): + with open(os.path.join(self.run_dir, 'CMakeCache.txt'), 'w') as f: + f.write('HEY\n') + f.write('CMAKE_HOME_DIRECTORY:INTERNAL=%s\n' % self.dummy_source_dir) + f.write('HEY AGAIN\n') + + def test_set_build_directory_does_not_exist(self): + self.build.set_build_directory('hello') + self.assertIn('unknown', self.build.source_directory) + + def test_set_build_directory_does_exist_but_no_cache(self): + with self.assertRaises(Exception): + self.build.set_build_directory(self.run_dir) + + def test_set_build_directory_does_exist_but_empty_cache(self): + with open(os.path.join(self.run_dir, 'CMakeCache.txt'), 'w') as f: + f.write('\n') + with self.assertRaises(Exception): + self.build.set_build_directory(self.run_dir) + + def test_set_build_directory_and_has_cache(self): + self.set_cache_file() + self.build.set_build_directory(self.run_dir) + self.assertEqual(self.dummy_source_dir, self.build.source_directory) + + def test_verify_before_setting_build_directory(self): + with self.assertRaises(Exception): + self.build.verify() + + def test_verify_but_nothing_exists(self): + self.set_cache_file() + self.build.set_build_directory(self.run_dir) + check = self.build.verify() + self.assertIsInstance(check, list) + self.assertGreaterEqual(len(check), 4) # there should be some errors + + def test_get_build_tree_before_setting_build_directory(self): + with self.assertRaises(Exception): + self.build.get_build_tree() + + def test_get_build_tree(self): + self.set_cache_file() + self.build.set_build_directory(self.run_dir) + tree = self.build.get_build_tree() + self.assertIsInstance(tree, dict) diff --git a/epregressions/tests/builds/test_visualstudio.py b/epregressions/tests/builds/test_visualstudio.py new file mode 100644 index 0000000..6451700 --- /dev/null +++ b/epregressions/tests/builds/test_visualstudio.py @@ -0,0 +1,38 @@ +import tempfile +import unittest + +from epregressions.builds.install import EPlusInstallDirectory + + +class TestBaseWorkflowMethods(unittest.TestCase): + + def setUp(self): + self.build = EPlusInstallDirectory() + self.run_dir = tempfile.mkdtemp() + + def test_set_build_directory_does_not_exist(self): + self.build.set_build_directory('hello') + self.assertIn('unknown', self.build.source_directory) + + def test_set_build_directory_does_exist(self): + self.build.set_build_directory(self.run_dir) + self.assertEqual(self.run_dir, self.build.source_directory) + + def test_verify_before_setting_build_directory(self): + with self.assertRaises(Exception): + self.build.verify() + + def test_verify_but_nothing_exists(self): + self.build.set_build_directory(self.run_dir) + check = self.build.verify() + self.assertIsInstance(check, list) + self.assertGreaterEqual(len(check), 4) # there should be some errors + + def test_get_build_tree_before_setting_build_directory(self): + with self.assertRaises(Exception): + self.build.get_build_tree() + + def test_get_build_tree(self): + self.build.set_build_directory(self.run_dir) + tree = self.build.get_build_tree() + self.assertIsInstance(tree, dict)