Skip to content

Commit 5f20bf7

Browse files
Merge pull request #16 from Geode-solutions/fix/tests
Fix/tests
2 parents 25e758c + 617833e commit 5f20bf7

24 files changed

+76
-54
lines changed

.github/workflows/CD.yml renamed to .github/workflows/CICD.yml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
1-
name: CD
1+
name: CICD
22

33
on:
44
push:
5-
branches: [master, next, json_import_viewer]
5+
branches: [master, next]
66

77
jobs:
8+
test:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v3
12+
- name: Set up Python
13+
uses: actions/setup-python@v3
14+
with:
15+
python-version: "3.9"
16+
- name: Test
17+
run: |
18+
pip install pytest
19+
pip install -r requirements.txt
20+
pytest
821
build:
922
runs-on: ubuntu-latest
23+
needs: test
1024
steps:
1125
- name: Checkout
1226
uses: actions/checkout@v4

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ venv/
55
.vscode/
66
__pycache__/
77
.env
8-
data/
98
/node_modules
109
latest_logs
1110
schemas.json
11+
build
12+
*.egg-info

pyproject.toml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,19 @@ classifiers = [
2323
"Homepage" = "https://github.com/Geode-solutions/OpenGeodeWeb-Viewer"
2424
"Bug Tracker" = "https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/issues"
2525

26+
[project.scripts]
27+
opengeodeweb_viewer = "opengeodeweb_viewer.vtkw_server:run_server"
28+
2629
[tool.setuptools.dynamic]
2730
dependencies = {file = ["requirements.txt"]}
2831

2932
[tool.setuptools.packages.find]
3033
where = ["src"]
3134

3235
[tool.setuptools.package-data]
33-
"opengeodeweb_Viewer.rpc.schemas" = ["*.json"]
36+
"opengeodeweb_viewer.rpc.schemas" = ["*.json"]
37+
"opengeodeweb_viewer.tests.images" = ["*.*"]
38+
"opengeodeweb_viewer.tests.data" = ["*.*"]
3439

3540
[tool.semantic_release]
3641
version_toml = [
File renamed without changes.

src/opengeodeweb_viewer/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from .config import *
2+
from .function import *
3+
from .vtk_protocol import *

src/opengeodeweb_viewer/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ def dev_config():
2727
def test_config():
2828
default_config()
2929
os.environ["DATA_FOLDER_PATH"] = os.path.join(
30-
os.path.dirname(__file__), "..", "..", "tests", "data"
30+
os.path.dirname(__file__), "tests", "data"
3131
)

src/opengeodeweb_viewer/vtk_protocol.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from vtk.web import protocols as vtk_protocols
44
from wslink import register as exportRpc
55
import vtk
6-
from function import validate_schemas
6+
from .function import validate_schemas
77

88
schemas = os.path.join(os.path.dirname(__file__), "rpc/schemas")
99

src/opengeodeweb_viewer/vtkw_server.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import sys
22
import argparse
3-
import config
43
import os
54

65
from wslink import server
76
from vtk.web import wslink as vtk_wslink
87
from vtk.web import protocols as vtk_protocols
98
import vtk
10-
from vtk_protocol import VtkView
9+
from .vtk_protocol import VtkView
1110
import dotenv
11+
from .config import *
12+
1213

1314
# =============================================================================
1415
# Server class
@@ -77,16 +78,16 @@ def initialize(self):
7778
# =============================================================================
7879

7980

80-
if __name__ == "__main__":
81+
def run_server():
8182
basedir = os.path.abspath(os.path.dirname(__file__))
8283
dot_env_path = os.path.join(basedir, "../../.env")
8384
if os.path.isfile(dot_env_path):
8485
dotenv.load_dotenv(dot_env_path)
8586
PYTHON_ENV = os.environ.get("PYTHON_ENV", default="prod").strip().lower()
8687
if PYTHON_ENV == "prod":
87-
config.prod_config()
88+
prod_config()
8889
elif PYTHON_ENV == "dev":
89-
config.dev_config()
90+
dev_config()
9091

9192
parser = argparse.ArgumentParser(description="Vtk server")
9293
server.add_arguments(parser)
@@ -99,3 +100,7 @@ def initialize(self):
99100

100101
_Server.configure(args)
101102
server.start_webserver(options=args, protocol=_Server)
103+
104+
105+
if __name__ == "__main__":
106+
run_server()

src/tests/__init__.py

Whitespace-only changes.

tests/conftest.py renamed to src/tests/conftest.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,19 @@
55
from xprocess import ProcessStarter
66
import vtk
77
import os
8-
from src.opengeodeweb_viewer import config
8+
from opengeodeweb_viewer import config
99

1010

1111
class ServerMonitor:
1212
def __init__(self, log):
1313
self.log = log
1414
self.ws = create_connection("ws://localhost:1234/ws")
15+
self.images_dir_path = os.path.abspath(
16+
os.path.join(os.path.dirname(__file__), "data", "images")
17+
)
18+
self.test_output_dir = os.path.abspath(
19+
os.path.join(os.path.dirname(__file__), "tests_output")
20+
)
1521
self.ws.send(
1622
json.dumps(
1723
{
@@ -53,28 +59,33 @@ def get_response(self):
5359
response = eval(self.ws.recv())
5460
return response
5561

56-
def compare_image(self, nb_messages, path_image):
62+
def compare_image(self, nb_messages, filename):
5763
for i in range(nb_messages):
5864
print(f"{i=}", flush=True)
5965
image = self.ws.recv()
6066
if isinstance(image, bytes):
61-
test_filename = os.path.abspath(f"tests/tests_output/test.jpeg")
62-
with open(test_filename, "wb") as f:
67+
test_file_path = os.path.abspath(
68+
os.path.join(self.test_output_dir, "test.jpeg")
69+
)
70+
with open(test_file_path, "wb") as f:
6371
f.write(image)
6472
f.close()
6573
if isinstance(image, bytes):
6674
print(f"{image=}", flush=True)
6775
response = self.ws.recv()
6876
print(f"{response=}", flush=True)
6977
format = json.loads(response)["result"]["format"]
70-
test_filename = os.path.abspath(f"tests/tests_output/test.{format}")
71-
with open(test_filename, "wb") as f:
78+
test_file_path = os.path.abspath(
79+
os.path.join(self.test_output_dir, f"test.{format}")
80+
)
81+
with open(test_file_path, "wb") as f:
7282
f.write(image)
7383
f.close()
7484

7585
test_reader = vtk.vtkJPEGReader()
76-
test_reader.SetFileName(test_filename)
86+
test_reader.SetFileName(test_file_path)
7787

88+
path_image = os.path.join(self.images_dir_path, filename)
7889
answer_reader = vtk.vtkJPEGReader()
7990
answer_reader.SetFileName(path_image)
8091

@@ -94,20 +105,20 @@ def __init__(self, root_path):
94105

95106
def get_xprocess_args(self):
96107

97-
server_path = "src/opengeodeweb_viewer/vtkw_server.py"
108+
server_path = "opengeodeweb_viewer/vtkw_server.py"
98109
print(f"{server_path=}", flush=True)
99110

100111
class Starter(ProcessStarter):
101112
terminate_on_interrupt = True
102113
pattern = "wslink: Starting factory"
114+
timeout = 10
103115

104116
# command to start process
105117
args = [
106-
"python3",
107-
str(self.root_path / server_path),
118+
"opengeodeweb_viewer",
108119
]
109120

110-
return Path(server_path).name, Starter, ServerMonitor
121+
return "vtkw_server", Starter, ServerMonitor
111122

112123

113124
ROOT_PATH = Path(__file__).parent.parent.absolute()
File renamed without changes.
File renamed without changes.
10.9 KB
Loading
File renamed without changes.
File renamed without changes.
Loading
Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,38 @@
11
import os
22

3-
images_dir_path = os.path.abspath("./tests/data/images")
4-
53

64
def test_create_visualization(server):
75
server.call("create_visualization")
8-
abs_path = os.path.join(images_dir_path, "create_visualization.jpeg")
9-
assert server.compare_image(3, abs_path) == True
6+
assert server.compare_image(3, "create_visualization.jpeg") == True
107

118

129
def test_reset_camera(server):
1310
server.call("reset_camera")
14-
abs_path = os.path.join(images_dir_path, "reset_camera.jpeg")
15-
assert server.compare_image(3, abs_path) == True
11+
assert server.compare_image(3, "reset_camera.jpeg") == True
1612

1713

1814
def test_create_object_pipeline(server):
1915
server.call("create_object_pipeline", [{"id": "123456", "file_name": "hat.vtp"}])
20-
abs_path = os.path.join(images_dir_path, "create_object_pipeline.jpeg")
21-
assert server.compare_image(3, abs_path) == True
16+
assert server.compare_image(3, "create_object_pipeline.jpeg") == True
2217

2318

2419
def test_delete_object_pipeline(server):
2520
server.call("create_object_pipeline", [{"id": "123456789", "file_name": "hat.vtp"}])
26-
abs_path = os.path.join(images_dir_path, "create_object_pipeline.jpeg")
27-
assert server.compare_image(3, abs_path) == True
21+
assert server.compare_image(3, "create_object_pipeline.jpeg") == True
2822

2923
server.call("delete_object_pipeline", [{"id": "123456789"}])
30-
abs_path = os.path.join(images_dir_path, "delete_object_pipeline.jpeg")
31-
assert server.compare_image(3, abs_path) == True
24+
assert server.compare_image(3, "delete_object_pipeline.jpeg") == True
3225

3326

3427
def test_toggle_object_visibility(server):
3528
server.call("create_object_pipeline", [{"id": "123456789", "file_name": "hat.vtp"}])
36-
abs_path = os.path.join(images_dir_path, "create_object_pipeline.jpeg")
37-
assert server.compare_image(3, abs_path) == True
29+
assert server.compare_image(3, "create_object_pipeline.jpeg") == True
3830

3931
server.call("toggle_object_visibility", [{"id": "123456789", "is_visible": False}])
40-
abs_path = os.path.join(images_dir_path, "toggle_object_visibility_1.jpeg")
41-
assert server.compare_image(3, abs_path) == True
32+
assert server.compare_image(3, "toggle_object_visibility_1.jpeg") == True
4233

4334
server.call("toggle_object_visibility", [{"id": "123456789", "is_visible": True}])
44-
abs_path = os.path.join(images_dir_path, "toggle_object_visibility_2.jpeg")
45-
assert server.compare_image(3, abs_path) == True
35+
assert server.compare_image(3, "toggle_object_visibility_2.jpeg") == True
4636

4737

4838
def test_apply_textures(server):
@@ -51,8 +41,7 @@ def test_apply_textures(server):
5141
"create_object_pipeline",
5242
[{"id": "123456789", "file_name": "hat.vtp"}],
5343
)
54-
abs_path = os.path.join(images_dir_path, "create_object_pipeline.jpeg")
55-
assert server.compare_image(3, abs_path) == True
44+
assert server.compare_image(3, "create_object_pipeline.jpeg") == True
5645

5746
server.call(
5847
"apply_textures",
@@ -68,8 +57,7 @@ def test_apply_textures(server):
6857
}
6958
],
7059
)
71-
abs_path = os.path.join(images_dir_path, "apply_textures.jpeg")
72-
assert server.compare_image(3, abs_path) == True
60+
assert server.compare_image(3, "apply_textures.jpeg") == True
7361

7462

7563
def test_get_point_position(server):
@@ -78,8 +66,7 @@ def test_get_point_position(server):
7866
"create_object_pipeline",
7967
[{"id": "123456789", "file_name": "hat.vtp"}],
8068
)
81-
abs_path = os.path.join(images_dir_path, "create_object_pipeline.jpeg")
82-
assert server.compare_image(3, abs_path) == True
69+
assert server.compare_image(3, "create_object_pipeline.jpeg") == True
8370

8471
server.call("get_point_position", [{"x": 0, "y": 0}])
8572
response = server.get_response()
@@ -100,12 +87,10 @@ def test_toggle_edge_visibility(server):
10087
"create_object_pipeline",
10188
[{"id": "123456789", "file_name": "hat.vtp"}],
10289
)
103-
abs_path = os.path.join(images_dir_path, "create_object_pipeline.jpeg")
104-
assert server.compare_image(3, abs_path) == True
90+
assert server.compare_image(3, "create_object_pipeline.jpeg") == True
10591

10692
server.call("toggle_edge_visibility", [{"id": "123456789", "visibility": True}])
107-
abs_path = os.path.join(images_dir_path, "toggle_edge_visibility.jpeg")
108-
assert server.compare_image(3, abs_path) == True
93+
assert server.compare_image(3, "toggle_edge_visibility.jpeg") == True
10994

11095

11196
def test_set_color(server):
@@ -114,9 +99,7 @@ def test_set_color(server):
11499
"create_object_pipeline",
115100
[{"id": "123456789", "file_name": "hat.vtp"}],
116101
)
117-
abs_path = os.path.join(images_dir_path, "create_object_pipeline.jpeg")
118-
assert server.compare_image(3, abs_path) == True
102+
assert server.compare_image(3, "create_object_pipeline.jpeg") == True
119103

120104
server.call("set_color", [{"id": "123456789", "red": 50, "green": 2, "blue": 250}])
121-
abs_path = os.path.join(images_dir_path, "set_color.jpeg")
122-
assert server.compare_image(3, abs_path) == True
105+
assert server.compare_image(3, "set_color.jpeg") == True

0 commit comments

Comments
 (0)