Skip to content

Commit 5a88a18

Browse files
committed
Added an exists= option to list_registered_directories.
1 parent a404523 commit 5a88a18

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

src/sewerrat/list_registered_directories.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
import urllib
44

55

6-
def list_registered_directories(url: str, user: Optional[Union[str, bool]] = None, contains: Optional[str] = None, prefix: Optional[str] = None) -> List[Dict]:
6+
def list_registered_directories(
7+
url: str,
8+
user: Optional[Union[str, bool]] = None,
9+
contains: Optional[str] = None,
10+
prefix: Optional[str] = None,
11+
exists: Optional[bool] = None,
12+
) -> List[Dict]:
713
"""
814
List all registered directories in the SewerRat instance.
915
@@ -25,6 +31,10 @@ def list_registered_directories(url: str, user: Optional[Union[str, bool]] = Non
2531
None, results are filtered to directories starting with this
2632
string.
2733
34+
exists:
35+
Whether to only report directories that exist on the filesystem.
36+
If ``False``, only non-existent directories are reported, and if ``None``, no filtering is applied based on existence.
37+
2838
Returns:
2939
List of objects where each object corresponds to a registered directory
3040
and contains the `path` to the directory, the `user` who registered it,
@@ -41,6 +51,12 @@ def list_registered_directories(url: str, user: Optional[Union[str, bool]] = Non
4151
query.append("contains_path=" + urllib.parse.quote_plus(contains))
4252
if not prefix is None:
4353
query.append("path_prefix=" + urllib.parse.quote_plus(prefix))
54+
if exists is not None:
55+
if exists:
56+
qstr = "true"
57+
else:
58+
qstr = "false"
59+
query.append("exists=" + qstr)
4460

4561
url += "/registered"
4662
if len(query) > 0:

src/sewerrat/start_sewerrat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
test_api_port = None
1010

1111

12-
def start_sewerrat(db: Optional[str] = None, port: Optional[int] = None, wait: float = 1, version: str = "1.1.1", overwrite: bool = False) -> Tuple[bool, int]:
12+
def start_sewerrat(db: Optional[str] = None, port: Optional[int] = None, wait: float = 1, version: str = "1.1.3", overwrite: bool = False) -> Tuple[bool, int]:
1313
"""
1414
Start a test SewerRat service.
1515

tests/test_list_registered_directories.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,19 @@ def test_list_registered_directories(basic_config):
4141
# Multiple filters work.
4242
filtered = sewerrat.list_registered_directories(url, prefix=os.path.dirname(mydir), user=True, contains=os.path.join(mydir, "metadata.json"))
4343
assert regged == filtered
44+
45+
# Existence filter works.
46+
tmp = str(tempfile.mkdtemp())
47+
sewerrat.register(tmp, names="metadata.json", url=url)
48+
try:
49+
filtered = sewerrat.list_registered_directories(url, prefix=tmp, exists=True)
50+
assert filtered[0]["path"] == tmp
51+
52+
os.rmdir(tmp)
53+
filtered2 = sewerrat.list_registered_directories(url, prefix=tmp, exists=False)
54+
assert filtered == filtered2
55+
56+
filtered = sewerrat.list_registered_directories(url, prefix=tmp, exists=True)
57+
assert len(filtered) == 0
58+
finally:
59+
sewerrat.deregister(tmp, url=url)

0 commit comments

Comments
 (0)