Skip to content

Commit 413cbe7

Browse files
authored
Merge pull request #86 from Geode-solutions/feat/folder_path
Feat/folder path
2 parents fa738a0 + 601c2b7 commit 413cbe7

File tree

3 files changed

+61
-9
lines changed

3 files changed

+61
-9
lines changed

src/opengeodeweb_viewer/config.py

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import os
2+
import tempfile
3+
from shutil import copyfile, copytree
24
from sys import platform
35

46

@@ -26,7 +28,49 @@ def dev_config():
2628

2729
def test_config(path):
2830
default_config()
29-
print(f"{os.path.dirname(__file__)=}", flush=True)
30-
os.environ["DATA_FOLDER_PATH"] = os.path.join(path, "data")
3131

32-
print(f"{os.environ.get('DATA_FOLDER_PATH')=}", flush=True)
32+
tmp_data_root = tempfile.mkdtemp(prefix="ogw_test_data_")
33+
os.environ["DATA_FOLDER_PATH"] = tmp_data_root
34+
35+
src_data = os.path.join(path, "data")
36+
if not os.path.isdir(src_data):
37+
raise FileNotFoundError(f"Test data folder not found: {src_data}")
38+
39+
test_ids = ["123456789", "12345678"]
40+
valid_exts = {".vtp", ".vti", ".vtu", ".vtm"}
41+
42+
project_uuid = "test-project-uuid"
43+
data_uuid = "test-data-uuid"
44+
uploads_directory = os.path.join(tmp_data_root, project_uuid, "uploads")
45+
structure_directory = os.path.join(tmp_data_root, project_uuid, data_uuid)
46+
47+
for directory in [
48+
*test_ids,
49+
uploads_directory,
50+
structure_directory,
51+
]: # create directories for tests
52+
os.makedirs(
53+
(
54+
os.path.join(tmp_data_root, directory)
55+
if isinstance(directory, str)
56+
else directory
57+
),
58+
exist_ok=True,
59+
)
60+
61+
for root, directories, files in os.walk(src_data):
62+
for directory in directories:
63+
dst = os.path.join(tmp_data_root, test_ids[0], directory)
64+
copytree(os.path.join(root, directory), dst, dirs_exist_ok=True)
65+
66+
for file in files:
67+
if os.path.splitext(file)[1].lower() not in valid_exts:
68+
continue
69+
70+
src = os.path.join(root, file)
71+
for test_id in test_ids:
72+
copyfile(src, os.path.join(tmp_data_root, test_id, file))
73+
copyfile(src, os.path.join(structure_directory, file))
74+
copyfile(src, os.path.join(uploads_directory, file))
75+
76+
print(f"\nDATA_FOLDER_PATH set to: {tmp_data_root}", flush=True)

src/opengeodeweb_viewer/object/object_methods.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ def __init__(self):
1616
def registerObject(self, id, file_name, reader, filter, mapper):
1717
actor = vtk.vtkActor()
1818
self.register_object(id, reader, filter, actor, mapper, {})
19-
20-
reader.SetFileName(os.path.join(self.DATA_FOLDER_PATH, file_name))
21-
19+
reader.SetFileName(os.path.join(self.DATA_FOLDER_PATH, id, file_name))
2220
actor.SetMapper(mapper)
2321
mapper.SetColorModeToMapScalars()
2422
mapper.SetResolveCoincidentTopologyLineOffsetParameters(1, -0.1)
@@ -60,7 +58,7 @@ def applyTextures(self, id, textures):
6058
new_texture = vtk.vtkTexture()
6159
image_reader = vtk.vtkXMLImageDataReader()
6260
image_reader.SetFileName(
63-
os.path.join(self.DATA_FOLDER_PATH, texture_file_name)
61+
os.path.join(self.DATA_FOLDER_PATH, id, texture_file_name)
6462
)
6563

6664
shader_texture_name = f"VTK_TEXTURE_UNIT_{index}"

src/tests/conftest.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import vtk
77
import os
88
from opengeodeweb_viewer import config
9+
import shutil
910

1011

1112
class ServerMonitor:
@@ -145,8 +146,6 @@ class Starter(ProcessStarter):
145146
def server(xprocess):
146147
name, Starter, Monitor = HELPER.get_xprocess_args()
147148
os.environ["PYTHON_ENV"] = "test"
148-
config.test_config(os.path.dirname(__file__))
149-
print("server", os.environ.get("DATA_FOLDER_PATH"), flush=True)
150149
_, log = xprocess.ensure(name, Starter)
151150
print(log)
152151
monitor = Monitor(log)
@@ -155,3 +154,14 @@ def server(xprocess):
155154
# clean up whole process tree afterwards
156155
xprocess.getinfo(name).terminate()
157156
monitor.print_log()
157+
158+
159+
@pytest.fixture(scope="session", autouse=True)
160+
def configure_test_environment():
161+
base_path = os.path.dirname(__file__)
162+
config.test_config(base_path)
163+
yield
164+
tmp_data_path = os.environ.get("DATA_FOLDER_PATH")
165+
if tmp_data_path and "ogw_test_data_" in tmp_data_path:
166+
shutil.rmtree(tmp_data_path, ignore_errors=True)
167+
print(f"Cleaned up test data folder: {tmp_data_path}", flush=True)

0 commit comments

Comments
 (0)