From 62f421c4095cd44bf23dbe3fdec1c8024a353999 Mon Sep 17 00:00:00 2001 From: Jacob Wahlman <jacwa448@student.liu.se> Date: Sat, 25 Apr 2020 13:51:24 +0200 Subject: [PATCH] added tests for recipes and definition --- b_asic/utils.py | 11 +++++++++ test/test_load_save_structure.py | 38 ++++++++++++++++++++++++++++++-- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/b_asic/utils.py b/b_asic/utils.py index 24ee5f62..42242fd3 100644 --- a/b_asic/utils.py +++ b/b_asic/utils.py @@ -54,3 +54,14 @@ def load_structure(_path: str) -> AbstractOperation: print("Unexpected error occured while loading structure: ", e) return None + +def load_recipe(module: str) -> None: + """Given the module name or the path to a module, import the module and let it evaluate it's content. + Returns None as the content from the module will be added to the namespace. + + This runs .py scripts inline by importing them, it currently does no checks for security measure. + + Arguments: + module: The path or name of the module to import from. + """ + pass diff --git a/test/test_load_save_structure.py b/test/test_load_save_structure.py index 9e4190a9..4881e237 100644 --- a/test/test_load_save_structure.py +++ b/test/test_load_save_structure.py @@ -8,7 +8,7 @@ from string import ascii_lowercase import pytest -from b_asic import SFG, Output, load_structure, save_structure +from b_asic import SFG, Output, load_structure, save_structure, load_recipe class TestSaveStructures: @@ -50,4 +50,38 @@ class TestSaveStructures: _path = load_structure(_path=_invalid_path) assert _path is None - \ No newline at end of file + + def test_load_recipe_file(self): + # Create a file that doesn't exist + _file = "".join(choice(ascii_lowercase) for _ in range(4)) + ".py" + while path.exists(path.join(getcwd(), _file)): + _file = "".join(choice(ascii_lowercase) for _ in range(4)) + ".py" + + try: + with open(_file, "w+") as handle: + # The string is indented that way so the file is properly indented, .strip() did not work idk why + handle.write( +""" +from b_asic import SFG, Output, Addition, Constant +sfg = SFG(outputs=[Output(Addition(Addition(Constant(2), Constant(3)), Addition(Constant(4), Constant(5))))]) +""" + ) + except Exception as e: + assert False, f"Could not create file: {e}" + + # Not defined yet + with pytest.raises(NameError): + sfg.evaluate() == 14 + + load_recipe(_file) + assert sfg.evaluate() == 14 + + def test_load_invalid_recipe_file(self): + _file = "".join(choice(ascii_lowercase) for _ in range(4)) + ".py" + while path.exists(path.join(getcwd(), _file)): + _file = "".join(choice(ascii_lowercase) for _ in range(4)) + ".py" + + load_recipe(_file) + with pytest.raises(NameError): + assert sfg.evaluate() == 14 + \ No newline at end of file -- GitLab