Skip to content

Commit 1936faa

Browse files
committed
tests: test constructor no fsspec cache
1 parent dcf9e10 commit 1936faa

File tree

1 file changed

+47
-15
lines changed

1 file changed

+47
-15
lines changed

pins/tests/test_constructors.py

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,22 @@ def check_cache_file_path(p_file, p_cache):
2828
assert str(p_file.relative_to(p_cache)).count("/") == 2
2929

3030

31+
def construct_from_board(board):
32+
prot = board.fs.protocol
33+
fs_name = prot if isinstance(prot, str) else prot[0]
34+
35+
if fs_name == "file":
36+
board = c.board_folder(board.board)
37+
elif fs_name == "rsc":
38+
board = c.board_rsconnect(
39+
server_url=board.fs.api.server_url, api_key=board.fs.api.api_key
40+
)
41+
else:
42+
board = getattr(c, f"board_{fs_name}")(board.board)
43+
44+
return board
45+
46+
3147
# End-to-end constructor tests
3248

3349
# there are two facets of boards: reading and writing.
@@ -120,7 +136,7 @@ def test_constructor_board_github(tmp_cache, http_example_board_path, df_csv):
120136
check_cache_file_path(res[0], cache_dir)
121137

122138

123-
@pytest.fixture(scope="session")
139+
@pytest.fixture(scope="function")
124140
def board(backend):
125141
# TODO: copied from test_compat.py
126142

@@ -129,23 +145,12 @@ def board(backend):
129145
backend.teardown_board(board)
130146

131147

132-
def test_constructor_board(board, df_csv, tmp_cache):
148+
def test_constructor_boards(board, df_csv, tmp_cache):
133149
# TODO: would be nice to have fixtures for each board constructor
134150
# doesn't need to copy over pins-compat content
135151

136152
# create board from constructor -------------------------------------------
137-
138-
prot = board.fs.protocol
139-
fs_name = prot if isinstance(prot, str) else prot[0]
140-
141-
if fs_name == "file":
142-
board = c.board_folder(board.board)
143-
elif fs_name == "rsc":
144-
board = c.board_rsconnect(
145-
server_url=board.fs.api.server_url, api_key=board.fs.api.api_key
146-
)
147-
else:
148-
board = getattr(c, f"board_{fs_name}")(board.board)
153+
board = construct_from_board(board)
149154

150155
# read a pin and check its contents ---------------------------------------
151156

@@ -157,7 +162,7 @@ def test_constructor_board(board, df_csv, tmp_cache):
157162
# check the cache structure -----------------------------------------------
158163

159164
# check cache
160-
if fs_name == "file":
165+
if board.fs.protocol == "file":
161166
# no caching for local file boards
162167
pass
163168
else:
@@ -187,6 +192,33 @@ def test_constructor_board(board, df_csv, tmp_cache):
187192
assert orig_access < new_access
188193

189194

195+
@pytest.fixture(scope="function")
196+
def board2(backend):
197+
board2 = backend.create_tmp_board()
198+
yield board2
199+
backend.teardown_board(board2)
200+
201+
202+
def test_constructor_boards_multi_user(board2, df_csv, tmp_cache):
203+
prot = board2.fs.protocol
204+
fs_name = prot if isinstance(prot, str) else prot[0]
205+
206+
if fs_name == "rsc":
207+
# TODO: RSConnect writes pin names like <user>/<name>, so would need to
208+
# modify test
209+
pytest.skip()
210+
211+
first = construct_from_board(board2)
212+
213+
first.pin_write(df_csv, "df_csv", type="csv")
214+
assert first.pin_list() == ["df_csv"]
215+
216+
second = construct_from_board(board2)
217+
second.pin_write(df_csv, "another_df_csv", type="csv")
218+
219+
assert sorted(second.pin_list()) == sorted(["df_csv", "another_df_csv"])
220+
221+
190222
# Board particulars ===========================================================
191223

192224

0 commit comments

Comments
 (0)