Init Commit: Moved bproto to seperate repo
This commit is contained in:
168
test/compiler/backend/test_fsOutput.py
Normal file
168
test/compiler/backend/test_fsOutput.py
Normal file
@@ -0,0 +1,168 @@
|
||||
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"
|
||||
Reference in New Issue
Block a user