created shared file for some test fucntions

This commit is contained in:
PatchOfScotland
2023-01-31 14:52:03 +01:00
parent b95042c5ca
commit adfce30508
10 changed files with 57 additions and 49 deletions

19
tests/shared.py Normal file
View File

@ -0,0 +1,19 @@
"""
This file contains shared functions used within multiple tests.
Author(s): David Marchant
"""
from core.functionality import make_dir, rmtree
from core.correctness.vars import TEST_HANDLER_BASE, TEST_JOB_OUTPUT, \
TEST_MONITOR_BASE
def setup():
make_dir(TEST_MONITOR_BASE, ensure_clean=True)
make_dir(TEST_HANDLER_BASE, ensure_clean=True)
make_dir(TEST_JOB_OUTPUT, ensure_clean=True)
def teardown():
rmtree(TEST_MONITOR_BASE)
rmtree(TEST_HANDLER_BASE)
rmtree(TEST_JOB_OUTPUT)
rmtree("first")

View File

@ -13,7 +13,7 @@ cd $script_dir
search_dir=. search_dir=.
for entry in "$search_dir"/* for entry in "$search_dir"/*
do do
if [[ $entry == ./test* ]] && [[ $entry != ./$script_name ]]; if [[ $entry == ./test* ]] && [[ $entry != ./$script_name ]] && [[ $entry != ./shared.py ]];
then then
pytest $entry "-W ignore::DeprecationWarning" pytest $entry "-W ignore::DeprecationWarning"
fi fi

View File

@ -7,12 +7,12 @@ from core.correctness.vars import PYTHON_TYPE, TEST_HANDLER_BASE, SHA256, \
WATCHDOG_BASE, WATCHDOG_RULE, WATCHDOG_HASH, JOB_PARAMETERS, JOB_HASH, \ WATCHDOG_BASE, WATCHDOG_RULE, WATCHDOG_HASH, JOB_PARAMETERS, JOB_HASH, \
PYTHON_FUNC, PYTHON_OUTPUT_DIR, PYTHON_EXECUTION_BASE, JOB_ID, META_FILE, \ PYTHON_FUNC, PYTHON_OUTPUT_DIR, PYTHON_EXECUTION_BASE, JOB_ID, META_FILE, \
BASE_FILE, PARAMS_FILE, JOB_FILE, RESULT_FILE BASE_FILE, PARAMS_FILE, JOB_FILE, RESULT_FILE
from core.functionality import make_dir, rmtree, get_file_hash, create_event, \ from core.functionality import get_file_hash, create_event, create_job
create_job
from core.meow import create_rule from core.meow import create_rule
from conductors import LocalPythonConductor from conductors import LocalPythonConductor
from patterns import FileEventPattern from patterns import FileEventPattern
from recipes.jupyter_notebook_recipe import JupyterNotebookRecipe, job_func from recipes.jupyter_notebook_recipe import JupyterNotebookRecipe, job_func
from shared import setup, teardown
def failing_func(): def failing_func():
@ -22,15 +22,11 @@ def failing_func():
class MeowTests(unittest.TestCase): class MeowTests(unittest.TestCase):
def setUp(self)->None: def setUp(self)->None:
super().setUp() super().setUp()
make_dir(TEST_MONITOR_BASE) setup()
make_dir(TEST_HANDLER_BASE)
make_dir(TEST_JOB_OUTPUT)
def tearDown(self)->None: def tearDown(self)->None:
super().tearDown() super().tearDown()
rmtree(TEST_MONITOR_BASE) teardown()
rmtree(TEST_HANDLER_BASE)
rmtree(TEST_JOB_OUTPUT)
def testLocalPythonConductorCreation(self)->None: def testLocalPythonConductorCreation(self)->None:
lpc = LocalPythonConductor() lpc = LocalPythonConductor()

View File

@ -23,15 +23,16 @@ from core.functionality import generate_id, wait, get_file_hash, rmtree, \
from core.meow import create_rule from core.meow import create_rule
from patterns import FileEventPattern from patterns import FileEventPattern
from recipes import JupyterNotebookRecipe from recipes import JupyterNotebookRecipe
from shared import setup, teardown
class CorrectnessTests(unittest.TestCase): class CorrectnessTests(unittest.TestCase):
def setUp(self)->None: def setUp(self)->None:
super().setUp() super().setUp()
make_dir(TEST_MONITOR_BASE, ensure_clean=True) setup()
def tearDown(self)->None: def tearDown(self)->None:
super().tearDown() super().tearDown()
rmtree(TEST_MONITOR_BASE) teardown()
def testGenerateIDWorking(self)->None: def testGenerateIDWorking(self)->None:
id = generate_id() id = generate_id()

View File

@ -3,13 +3,12 @@ import unittest
from typing import Any, Union from typing import Any, Union
from core.correctness.vars import TEST_HANDLER_BASE, TEST_JOB_OUTPUT, \ from core.correctness.vars import BAREBONES_NOTEBOOK
TEST_MONITOR_BASE, BAREBONES_NOTEBOOK
from core.functionality import make_dir, rmtree
from core.meow import BasePattern, BaseRecipe, BaseRule, BaseMonitor, \ from core.meow import BasePattern, BaseRecipe, BaseRule, BaseMonitor, \
BaseHandler, BaseConductor, create_rules, create_rule BaseHandler, BaseConductor, create_rules, create_rule
from patterns import FileEventPattern from patterns import FileEventPattern
from recipes.jupyter_notebook_recipe import JupyterNotebookRecipe from recipes.jupyter_notebook_recipe import JupyterNotebookRecipe
from shared import setup, teardown
valid_pattern_one = FileEventPattern( valid_pattern_one = FileEventPattern(
"pattern_one", "path_one", "recipe_one", "file_one") "pattern_one", "path_one", "recipe_one", "file_one")
@ -25,15 +24,11 @@ valid_recipe_two = JupyterNotebookRecipe(
class MeowTests(unittest.TestCase): class MeowTests(unittest.TestCase):
def setUp(self)->None: def setUp(self)->None:
super().setUp() super().setUp()
make_dir(TEST_MONITOR_BASE) setup()
make_dir(TEST_HANDLER_BASE)
make_dir(TEST_JOB_OUTPUT)
def tearDown(self)->None: def tearDown(self)->None:
super().tearDown() super().tearDown()
rmtree(TEST_MONITOR_BASE) teardown()
rmtree(TEST_HANDLER_BASE)
rmtree(TEST_JOB_OUTPUT)
def testBaseRecipe(self)->None: def testBaseRecipe(self)->None:
with self.assertRaises(TypeError): with self.assertRaises(TypeError):

View File

@ -8,10 +8,11 @@ from multiprocessing import Pipe
from core.correctness.vars import FILE_CREATE_EVENT, BAREBONES_NOTEBOOK, \ from core.correctness.vars import FILE_CREATE_EVENT, BAREBONES_NOTEBOOK, \
TEST_MONITOR_BASE, EVENT_TYPE, WATCHDOG_RULE, WATCHDOG_BASE, \ TEST_MONITOR_BASE, EVENT_TYPE, WATCHDOG_RULE, WATCHDOG_BASE, \
WATCHDOG_TYPE, EVENT_PATH WATCHDOG_TYPE, EVENT_PATH
from core.functionality import rmtree, make_dir from core.functionality import make_dir
from patterns.file_event_pattern import FileEventPattern, WatchdogMonitor, \ from patterns.file_event_pattern import FileEventPattern, WatchdogMonitor, \
_DEFAULT_MASK, SWEEP_START, SWEEP_STOP, SWEEP_JUMP _DEFAULT_MASK, SWEEP_START, SWEEP_STOP, SWEEP_JUMP
from recipes import JupyterNotebookRecipe from recipes import JupyterNotebookRecipe
from shared import setup, teardown
def patterns_equal(tester, pattern_one, pattern_two): def patterns_equal(tester, pattern_one, pattern_two):
@ -38,11 +39,11 @@ def recipes_equal(tester, recipe_one, recipe_two):
class CorrectnessTests(unittest.TestCase): class CorrectnessTests(unittest.TestCase):
def setUp(self)->None: def setUp(self)->None:
super().setUp() super().setUp()
make_dir(TEST_MONITOR_BASE, ensure_clean=True) setup()
def tearDown(self)->None: def tearDown(self)->None:
super().tearDown() super().tearDown()
rmtree(TEST_MONITOR_BASE) teardown()
def testFileEventPatternCreationMinimum(self)->None: def testFileEventPatternCreationMinimum(self)->None:
FileEventPattern("name", "path", "recipe", "file") FileEventPattern("name", "path", "recipe", "file")

View File

@ -13,26 +13,22 @@ from core.correctness.vars import BAREBONES_NOTEBOOK, TEST_HANDLER_BASE, \
APPENDING_NOTEBOOK, META_FILE, BASE_FILE, PARAMS_FILE, JOB_FILE, \ APPENDING_NOTEBOOK, META_FILE, BASE_FILE, PARAMS_FILE, JOB_FILE, \
RESULT_FILE RESULT_FILE
from core.correctness.validation import valid_job from core.correctness.validation import valid_job
from core.functionality import rmtree, make_dir, get_file_hash, create_job, \ from core.functionality import get_file_hash, create_job, create_event
create_event
from core.meow import create_rules, create_rule from core.meow import create_rules, create_rule
from patterns.file_event_pattern import FileEventPattern from patterns.file_event_pattern import FileEventPattern
from recipes.jupyter_notebook_recipe import JupyterNotebookRecipe, \ from recipes.jupyter_notebook_recipe import JupyterNotebookRecipe, \
PapermillHandler, job_func PapermillHandler, job_func
from rules.file_event_jupyter_notebook_rule import FileEventJupyterNotebookRule from rules.file_event_jupyter_notebook_rule import FileEventJupyterNotebookRule
from shared import setup, teardown
class CorrectnessTests(unittest.TestCase): class CorrectnessTests(unittest.TestCase):
def setUp(self)->None: def setUp(self)->None:
super().setUp() super().setUp()
make_dir(TEST_MONITOR_BASE) setup()
make_dir(TEST_HANDLER_BASE)
make_dir(TEST_JOB_OUTPUT)
def tearDown(self)->None: def tearDown(self)->None:
super().tearDown() super().tearDown()
rmtree(TEST_MONITOR_BASE) teardown()
rmtree(TEST_HANDLER_BASE)
rmtree(TEST_JOB_OUTPUT)
def testJupyterNotebookRecipeCreationMinimum(self)->None: def testJupyterNotebookRecipeCreationMinimum(self)->None:
JupyterNotebookRecipe("test_recipe", BAREBONES_NOTEBOOK) JupyterNotebookRecipe("test_recipe", BAREBONES_NOTEBOOK)

View File

@ -5,13 +5,16 @@ from core.correctness.vars import BAREBONES_NOTEBOOK
from patterns.file_event_pattern import FileEventPattern from patterns.file_event_pattern import FileEventPattern
from recipes.jupyter_notebook_recipe import JupyterNotebookRecipe from recipes.jupyter_notebook_recipe import JupyterNotebookRecipe
from rules.file_event_jupyter_notebook_rule import FileEventJupyterNotebookRule from rules.file_event_jupyter_notebook_rule import FileEventJupyterNotebookRule
from shared import setup, teardown
class CorrectnessTests(unittest.TestCase): class CorrectnessTests(unittest.TestCase):
def setUp(self)->None: def setUp(self)->None:
return super().setUp() super().setUp()
setup()
def tearDown(self)->None: def tearDown(self)->None:
return super().tearDown() super().tearDown()
teardown()
def testFileEventJupyterNotebookRuleCreationMinimum(self)->None: def testFileEventJupyterNotebookRuleCreationMinimum(self)->None:
fep = FileEventPattern("name", "path", "recipe", "file") fep = FileEventPattern("name", "path", "recipe", "file")

View File

@ -8,26 +8,23 @@ from time import sleep
from conductors import LocalPythonConductor from conductors import LocalPythonConductor
from core.correctness.vars import TEST_HANDLER_BASE, TEST_JOB_OUTPUT, \ from core.correctness.vars import TEST_HANDLER_BASE, TEST_JOB_OUTPUT, \
TEST_MONITOR_BASE, APPENDING_NOTEBOOK, RESULT_FILE TEST_MONITOR_BASE, APPENDING_NOTEBOOK, RESULT_FILE
from core.functionality import make_dir, rmtree, read_notebook from core.functionality import make_dir, read_notebook
from core.meow import BaseMonitor, BaseHandler, BaseConductor from core.meow import BaseMonitor, BaseHandler, BaseConductor
from core.runner import MeowRunner from core.runner import MeowRunner
from patterns import WatchdogMonitor, FileEventPattern from patterns import WatchdogMonitor, FileEventPattern
from recipes.jupyter_notebook_recipe import PapermillHandler, \ from recipes.jupyter_notebook_recipe import PapermillHandler, \
JupyterNotebookRecipe JupyterNotebookRecipe
from shared import setup, teardown
class MeowTests(unittest.TestCase): class MeowTests(unittest.TestCase):
def setUp(self)->None: def setUp(self)->None:
super().setUp() super().setUp()
make_dir(TEST_MONITOR_BASE) setup()
make_dir(TEST_HANDLER_BASE)
make_dir(TEST_JOB_OUTPUT)
def tearDown(self)->None: def tearDown(self)->None:
super().tearDown() super().tearDown()
rmtree(TEST_MONITOR_BASE) teardown()
rmtree(TEST_HANDLER_BASE)
rmtree(TEST_JOB_OUTPUT)
def testMeowRunnerSetup(self)->None: def testMeowRunnerSetup(self)->None:

View File

@ -13,17 +13,17 @@ from core.correctness.validation import check_type, check_implementation, \
from core.correctness.vars import VALID_NAME_CHARS, TEST_MONITOR_BASE, \ from core.correctness.vars import VALID_NAME_CHARS, TEST_MONITOR_BASE, \
SHA256, EVENT_TYPE, EVENT_PATH, JOB_TYPE, JOB_EVENT, JOB_ID, JOB_PATTERN, \ SHA256, EVENT_TYPE, EVENT_PATH, JOB_TYPE, JOB_EVENT, JOB_ID, JOB_PATTERN, \
JOB_RECIPE, JOB_RULE, JOB_STATUS, JOB_CREATE_TIME JOB_RECIPE, JOB_RULE, JOB_STATUS, JOB_CREATE_TIME
from core.functionality import rmtree, make_dir from core.functionality import make_dir
from shared import setup, teardown
class CorrectnessTests(unittest.TestCase): class CorrectnessTests(unittest.TestCase):
def setUp(self)->None: def setUp(self)->None:
super().setUp() super().setUp()
make_dir(TEST_MONITOR_BASE, ensure_clean=True) setup()
def tearDown(self)->None: def tearDown(self)->None:
super().tearDown() super().tearDown()
rmtree(TEST_MONITOR_BASE) teardown()
rmtree("first")
def testCheckTypeValid(self)->None: def testCheckTypeValid(self)->None:
check_type(1, int) check_type(1, int)