169 lines
5.8 KiB
Python
169 lines
5.8 KiB
Python
import sys
|
|
import os
|
|
import pytest
|
|
import shutil
|
|
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
|
sys.path.append('src/')
|
|
|
|
from backend.fsOutput import BackendFSOutFile, BackendFSOutStaticConent, BackendFSOutFolder, BackendFSOutputJinjaFile
|
|
|
|
TEST_FOLDER = "/tmp/protocolGenerator_test_data"
|
|
|
|
|
|
@pytest.fixture
|
|
def filesystem_folder():
|
|
yield TEST_FOLDER
|
|
shutil.rmtree(TEST_FOLDER)
|
|
|
|
print("Cleanup done")
|
|
|
|
|
|
def test_fsOutput_saveToDisk(filesystem_folder: str):
|
|
jinja_env = Environment(
|
|
loader=FileSystemLoader("test/data/templates/"),
|
|
autoescape=select_autoescape()
|
|
)
|
|
|
|
# Setup
|
|
root_folder = BackendFSOutFolder("root", [
|
|
BackendFSOutFile("file1", "some content"),
|
|
BackendFSOutFile("file2", "some other content"),
|
|
BackendFSOutFolder("subfolder", [
|
|
BackendFSOutFile("file3", "some more content #2"),
|
|
BackendFSOutFile("file4", "even more content"),
|
|
]),
|
|
BackendFSOutStaticConent("test/data/static_folder/static_content2.txt", "static_content2.txt"),
|
|
BackendFSOutStaticConent("test/data/static_content1.txt", "static_content1.txt"),
|
|
BackendFSOutputJinjaFile(jinja_env, "template.jinja2", "template.txt", {"name": "World"})
|
|
])
|
|
|
|
root_folder.saveToDisk(filesystem_folder)
|
|
|
|
# Test Structure
|
|
assert os.path.isdir(filesystem_folder)
|
|
assert os.path.isfile(filesystem_folder + "/root/file1")
|
|
assert os.path.isfile(filesystem_folder + "/root/file2")
|
|
assert os.path.isdir(filesystem_folder + "/root/subfolder")
|
|
assert os.path.isfile(filesystem_folder + "/root/subfolder/file3")
|
|
assert os.path.isfile(filesystem_folder + "/root/subfolder/file4")
|
|
assert os.path.isfile(filesystem_folder + "/root/static_content1.txt")
|
|
assert os.path.isfile(filesystem_folder + "/root/static_content2.txt")
|
|
|
|
assert os.path.isfile(filesystem_folder + "/root/template.txt")
|
|
|
|
# Test Content
|
|
|
|
with open(filesystem_folder + "/root/file1", "r") as f:
|
|
assert f.read() == "some content"
|
|
|
|
with open(filesystem_folder + "/root/file2", "r") as f:
|
|
assert f.read() == "some other content"
|
|
|
|
with open(filesystem_folder + "/root/subfolder/file3", "r") as f:
|
|
assert f.read() == "some more content #2"
|
|
|
|
with open(filesystem_folder + "/root/subfolder/file4", "r") as f:
|
|
assert f.read() == "even more content"
|
|
|
|
with open(filesystem_folder + "/root/static_content1.txt", "r") as f:
|
|
assert f.read() == "test1"
|
|
|
|
with open(filesystem_folder + "/root/static_content2.txt", "r") as f:
|
|
assert f.read() == "test2"
|
|
|
|
with open(filesystem_folder + "/root/template.txt", "r") as f:
|
|
assert f.read() == "Hello World!"
|
|
|
|
|
|
def test_fsOutput_treeString():
|
|
jinja_env = Environment(
|
|
loader=FileSystemLoader("test/data/templates/"),
|
|
autoescape=select_autoescape()
|
|
)
|
|
|
|
root_folder = BackendFSOutFolder("root", [
|
|
BackendFSOutFile("file1", "some content"),
|
|
BackendFSOutFile("file2", "some other content"),
|
|
BackendFSOutFolder("subfolder", [
|
|
BackendFSOutFile("file3", "some more content #2"),
|
|
BackendFSOutFile("file4", "even more content"),
|
|
BackendFSOutputJinjaFile(jinja_env, "template.jinja", "generate", {"name": "Jinja2"})
|
|
]),
|
|
BackendFSOutStaticConent("test/data/static_folder", "data"),
|
|
BackendFSOutputJinjaFile(jinja_env, "template.jinja", None, {"name": "World"})
|
|
])
|
|
|
|
string = root_folder.assemble_file_tree_string()
|
|
assert string == """└── root
|
|
├── [file1]
|
|
├── [file2]
|
|
├── subfolder
|
|
│ ├── [file3]
|
|
│ ├── [file4]
|
|
│ └── Template [generate]
|
|
├── Static [data]
|
|
└── Template [template]
|
|
"""
|
|
|
|
|
|
def test_fsOutput_toString():
|
|
jinja_env = Environment(
|
|
loader=FileSystemLoader("test/data/templates/"),
|
|
autoescape=select_autoescape()
|
|
)
|
|
|
|
root_folder = BackendFSOutFolder("root", [
|
|
BackendFSOutFile("file1", "some content"),
|
|
BackendFSOutFile("file2", "some other content"),
|
|
BackendFSOutFolder("subfolder", [
|
|
BackendFSOutFile("file3", "some more content #2"),
|
|
BackendFSOutFile("file4", "even more content"),
|
|
BackendFSOutputJinjaFile(jinja_env, "template.jinja2", "generate", {"name": "Jinja2"})
|
|
]),
|
|
BackendFSOutStaticConent("test/data/static_folder", "data/static_folder"),
|
|
BackendFSOutStaticConent("test/data/static_content1.txt", "data"),
|
|
BackendFSOutputJinjaFile(jinja_env, "template.jinja2", None, {"name": "World"})
|
|
])
|
|
|
|
res = root_folder.toString()
|
|
|
|
assert res == {
|
|
"root/file1": "some content",
|
|
"root/file2": "some other content",
|
|
"root/subfolder/file3": "some more content #2",
|
|
"root/subfolder/file4": "even more content",
|
|
"root/subfolder/generate": "Hello Jinja2!",
|
|
"root/data/static_content1.txt": "test1",
|
|
"root/data/static_folder/static_content2.txt": "test2",
|
|
"root/template": "Hello World!"
|
|
}
|
|
|
|
|
|
def test_fsOutput_pathnormalization(filesystem_folder: str):
|
|
|
|
root_folder = BackendFSOutFolder(".", [
|
|
BackendFSOutFolder(".", [
|
|
BackendFSOutFile("file2", "some other content"),
|
|
]),
|
|
BackendFSOutFile("file1", "some content"),
|
|
])
|
|
|
|
# Check if this works for toString
|
|
res = root_folder.toString()
|
|
assert res == {
|
|
"file2": "some other content",
|
|
"file1": "some content"
|
|
}
|
|
|
|
# Check if this works for saveToDisk
|
|
root_folder.saveToDisk(filesystem_folder)
|
|
|
|
assert os.path.isfile(filesystem_folder + "/file1")
|
|
assert os.path.isfile(filesystem_folder + "/file2")
|
|
|
|
with open(filesystem_folder + "/file1", "r") as f:
|
|
assert f.read() == "some content"
|
|
|
|
with open(filesystem_folder + "/file2", "r") as f:
|
|
assert f.read() == "some other content"
|