created shared file for some test fucntions
This commit is contained in:
19
tests/shared.py
Normal file
19
tests/shared.py
Normal 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")
|
@ -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
|
||||||
|
@ -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()
|
||||||
|
@ -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()
|
||||||
|
@ -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):
|
||||||
|
@ -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")
|
||||||
|
@ -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)
|
||||||
|
@ -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")
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user