Skip to content

Commit 1b6c113

Browse files
committed
update tests
1 parent 25eb989 commit 1b6c113

File tree

2 files changed

+78
-31
lines changed

2 files changed

+78
-31
lines changed

src/compas_session/lazyload.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
from .settings import Settings
1616

1717

18+
class SingletonError(Exception):
19+
pass
20+
21+
1822
class LazyLoadSessionError(Exception):
1923
pass
2024

@@ -73,6 +77,10 @@ class LazyLoadSession:
7377
7478
"""
7579

80+
@classmethod
81+
def reset(cls):
82+
cls._instance = None
83+
7684
_instance = None
7785

7886
_name: str
@@ -104,7 +112,9 @@ def __new__(
104112
if basedir:
105113
basedir = pathlib.Path(basedir)
106114
else:
107-
basedir = pathlib.Path(sys.argv[0]).resolve().parent
115+
# basedir = pathlib.Path(sys.argv[0]).resolve().parent
116+
# basedir = pathlib.Path().cwd()
117+
basedir = pathlib.Path(sys._getframe(1).f_globals["__file__"]).parent
108118

109119
if not name:
110120
for filepath in basedir.iterdir():
@@ -141,6 +151,10 @@ def __new__(
141151
def __init__(self, **kwargs) -> None:
142152
# this is accessed when the singleton is accessed in Rhino during consecutive command calls
143153
# or for example during a live session on a server
154+
if "name" in kwargs:
155+
name = kwargs["name"]
156+
if name != self.name:
157+
raise SingletonError
144158
self.load_history()
145159

146160
def __str__(self) -> str:

tests/test_lazy.py

Lines changed: 63 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,87 @@
1-
from compas_session.lazyload import LazyLoadSession
1+
import pytest
2+
from compas_session.lazyload import LazyLoadSession, SingletonError
23

34

45
def test_session_noname():
6+
LazyLoadSession.reset()
7+
58
session = LazyLoadSession()
6-
assert session.name == "compas_session"
9+
assert session.name == "tests"
10+
11+
session.delete_dirs()
12+
13+
14+
def test_session_inheritance():
15+
class Session(LazyLoadSession):
16+
pass
17+
18+
Session.reset()
19+
20+
session = Session()
21+
assert session.name == "tests"
22+
23+
Session.reset()
24+
25+
session = Session(name="A")
26+
assert session.name == "A"
27+
28+
session.delete_dirs()
729

830

31+
@pytest.mark.xfail(raises=SingletonError)
932
def test_session_name_empty():
33+
LazyLoadSession.reset()
34+
1035
session = LazyLoadSession(name="")
11-
assert session.name == "compas_session"
36+
37+
session.delete_dirs()
1238

1339

1440
def test_session_singleton():
15-
session1a = LazyLoadSession(name="One")
16-
session1b = LazyLoadSession(name="One")
17-
session2a = LazyLoadSession(name="Two")
18-
session2b = LazyLoadSession(name="Two")
41+
LazyLoadSession.reset()
42+
43+
a = LazyLoadSession()
44+
b = LazyLoadSession()
45+
46+
assert a is b
47+
48+
tests = LazyLoadSession(name="tests")
1949

20-
assert session1a is session1b
21-
assert session2a is session2b
50+
assert a is tests
2251

23-
assert session1a is not session2a
24-
assert session1a is not session2b
25-
assert session1b is not session2a
26-
assert session1b is not session2b
52+
try:
53+
LazyLoadSession(name="one")
54+
except SingletonError:
55+
assert True
56+
else:
57+
assert False
58+
59+
a.delete_dirs()
2760

2861

2962
def test_session_settings():
30-
session1a = LazyLoadSession(name="One")
31-
session1b = LazyLoadSession(name="One")
32-
session2a = LazyLoadSession(name="Two")
33-
session2b = LazyLoadSession(name="Two")
63+
LazyLoadSession.reset()
64+
65+
a = LazyLoadSession()
66+
b = LazyLoadSession()
3467

35-
assert session1a.settings is session1b.settings
36-
assert session2a.settings is session2b.settings
68+
assert a.settings is b.settings
3769

38-
assert session1a.settings is not session2a.settings
39-
assert session1a.settings is not session2b.settings
40-
assert session1b.settings is not session2a.settings
41-
assert session1b.settings is not session2b.settings
70+
a.delete_dirs()
4271

4372

4473
def test_session_settings_values():
45-
session1 = LazyLoadSession(name="One")
46-
session2 = LazyLoadSession(name="Two")
74+
LazyLoadSession.reset()
75+
76+
a = LazyLoadSession()
77+
b = LazyLoadSession()
78+
79+
assert a.settings.autosave is False
80+
assert b.settings.autosave is False
4781

48-
assert session1.settings.autosave is False
49-
assert session2.settings.autosave is False
82+
a.settings.autosave = True
5083

51-
session1.settings.autosave = True
84+
assert a.settings.autosave
85+
assert b.settings.autosave
5286

53-
assert session1.settings.autosave
54-
assert not session2.settings.autosave
87+
a.delete_dirs()

0 commit comments

Comments
 (0)