Skip to content

Commit 21feb88

Browse files
committed
Add tests and recursion check for link str
1 parent 3561a5c commit 21feb88

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

pystac/link.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,10 @@ def get_target_str(self) -> Optional[str]:
203203
else:
204204
return None
205205

206+
def has_target_href(self) -> bool:
207+
"""Returns true if this link has a string href in its target information."""
208+
return self._target_href is not None
209+
206210
def __repr__(self) -> str:
207211
return "<Link rel={} target={}>".format(self.rel, self.target)
208212

pystac/stac_object.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def get_self_href(self) -> Optional[str]:
158158
links have absolute (as opposed to relative) HREFs.
159159
"""
160160
self_link = self.get_single_link(pystac.RelType.SELF)
161-
if self_link:
161+
if self_link and self_link.has_target_href():
162162
return self_link.get_target_str()
163163
else:
164164
return None

tests/test_link.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,24 @@ def test_resolved_self_href(self) -> None:
9595
link.resolve_stac_object()
9696
self.assertEqual(link.get_absolute_href(), path)
9797

98+
def test_target_getter_setter(self) -> None:
99+
link = pystac.Link("my rel", target="./foo/bar.json")
100+
self.assertEqual(link.target, "./foo/bar.json")
101+
self.assertEqual(link.get_target_str(), "./foo/bar.json")
102+
103+
link.target = self.item
104+
self.assertEqual(link.target, self.item)
105+
self.assertEqual(link.get_target_str(), self.item.get_self_href())
106+
107+
link.target = "./bar/foo.json"
108+
self.assertEqual(link.target, "./bar/foo.json")
109+
110+
def test_get_target_str_no_href(self) -> None:
111+
self.item.remove_links("self")
112+
link = pystac.Link("self", target=self.item)
113+
self.item.add_link(link)
114+
self.assertIsNone(link.get_target_str())
115+
98116

99117
class StaticLinkTest(unittest.TestCase):
100118
def setUp(self) -> None:

0 commit comments

Comments
 (0)