Skip to content

Commit d4a4166

Browse files
committed
chore: fix tests
Signed-off-by: ThibaultFy <[email protected]>
1 parent 8f140ba commit d4a4166

File tree

7 files changed

+88
-12
lines changed

7 files changed

+88
-12
lines changed

tests/conftest.py

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
import json
2+
import os
3+
import sys
4+
from pathlib import Path
5+
from uuid import uuid4
6+
17
import pytest
28

39
import substra
@@ -7,6 +13,10 @@
713
from .fl_interface import FLFunctionInputs
814
from .fl_interface import FLFunctionOutputs
915
from .fl_interface import FunctionCategory
16+
from substra.tools.task_resources import TaskResources
17+
from substra.tools.utils import import_module
18+
from substra.tools.workspace import FunctionWorkspace
19+
from tests.tools.utils import OutputIdentifiers
1020

1121

1222
def pytest_configure(config):
@@ -24,7 +34,7 @@ def client(tmpdir):
2434

2535
@pytest.fixture
2636
def workdir(tmp_path):
27-
d = tmp_path / "substra-cli"
37+
d = tmp_path / "substra-workspace"
2838
d.mkdir()
2939
return d
3040

@@ -131,3 +141,69 @@ def asset_factory():
131141
@pytest.fixture()
132142
def data_sample(asset_factory):
133143
return asset_factory.create_data_sample()
144+
145+
146+
@pytest.fixture(autouse=True)
147+
def patch_cwd(monkeypatch, workdir):
148+
# this is needed to ensure the workspace is located in a tmpdir
149+
def getcwd():
150+
return str(workdir)
151+
152+
monkeypatch.setattr(os, "getcwd", getcwd)
153+
154+
155+
@pytest.fixture()
156+
def valid_opener_code():
157+
return """
158+
import json
159+
from substratools import Opener
160+
161+
class FakeOpener(Opener):
162+
def get_data(self, folder):
163+
return 'X', list(range(0, 3))
164+
165+
def fake_data(self, n_samples):
166+
return ['Xfake'] * n_samples, [0] * n_samples
167+
"""
168+
169+
170+
@pytest.fixture()
171+
def valid_opener(valid_opener_code):
172+
import_module("opener", valid_opener_code)
173+
yield
174+
del sys.modules["opener"]
175+
176+
177+
@pytest.fixture()
178+
def valid_opener_script(workdir, valid_opener_code):
179+
opener_path = workdir / "my_opener.py"
180+
opener_path.write_text(valid_opener_code)
181+
182+
return str(opener_path)
183+
184+
185+
@pytest.fixture(autouse=True)
186+
def output_model_path(workdir: Path) -> str:
187+
path = workdir / str(uuid4())
188+
yield path
189+
if path.exists():
190+
os.remove(path)
191+
192+
193+
@pytest.fixture(autouse=True)
194+
def output_model_path_2(workdir: Path) -> str:
195+
path = workdir / str(uuid4())
196+
yield path
197+
if path.exists():
198+
os.remove(path)
199+
200+
201+
@pytest.fixture()
202+
def valid_function_workspace(output_model_path: str) -> FunctionWorkspace:
203+
workspace_outputs = TaskResources(
204+
json.dumps([{"id": OutputIdentifiers.shared, "value": str(output_model_path), "multiple": False}])
205+
)
206+
207+
workspace = FunctionWorkspace(outputs=workspace_outputs)
208+
209+
return workspace

tests/tools/test_aggregatealgo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
from substratools.task_resources import TaskResources
1414
from substratools.workspace import FunctionWorkspace
1515
from tests.tools import utils
16-
from tests.utils import InputIdentifiers
17-
from tests.utils import OutputIdentifiers
16+
from tests.tools.utils import InputIdentifiers
17+
from tests.tools.utils import OutputIdentifiers
1818

1919

2020
@pytest.fixture(autouse=True)

tests/tools/test_compositealgo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
from substratools.task_resources import TaskResources
1313
from substratools.workspace import FunctionWorkspace
1414
from tests.tools import utils
15-
from tests.utils import InputIdentifiers
16-
from tests.utils import OutputIdentifiers
15+
from tests.tools.utils import InputIdentifiers
16+
from tests.tools.utils import OutputIdentifiers
1717

1818

1919
@pytest.fixture(autouse=True)

tests/tools/test_function.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
from substratools.task_resources import TaskResources
1818
from substratools.workspace import FunctionWorkspace
1919
from tests.tools import utils
20-
from tests.utils import InputIdentifiers
21-
from tests.utils import OutputIdentifiers
20+
from tests.tools.utils import InputIdentifiers
21+
from tests.tools.utils import OutputIdentifiers
2222

2323

2424
@pytest.fixture(autouse=True)

tests/tools/test_metrics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
from substratools.task_resources import TaskResources
1515
from substratools.workspace import FunctionWorkspace
1616
from tests.tools import utils
17-
from tests.utils import InputIdentifiers
18-
from tests.utils import OutputIdentifiers
17+
from tests.tools.utils import InputIdentifiers
18+
from tests.tools.utils import OutputIdentifiers
1919

2020

2121
@pytest.fixture()

tests/tools/test_workflow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
from substratools.utils import import_module
1212
from substratools.workspace import FunctionWorkspace
1313
from tests.tools import utils
14-
from tests.utils import InputIdentifiers
15-
from tests.utils import OutputIdentifiers
14+
from tests.tools.utils import InputIdentifiers
15+
from tests.tools.utils import OutputIdentifiers
1616

1717

1818
@pytest.fixture

tests/tools/tools_conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from substratools.task_resources import TaskResources
1010
from substratools.utils import import_module
1111
from substratools.workspace import FunctionWorkspace
12-
from tests.utils import OutputIdentifiers
12+
from tests.tools.utils import OutputIdentifiers
1313

1414

1515
@pytest.fixture

0 commit comments

Comments
 (0)