Skip to content

Commit bf5cad7

Browse files
authored
Push test coverage to 100% and bump version (#18)
* push test coverage to 100% * bump version * maintain tokens inside pointer as a tuple * add test for Pointer.append
1 parent a7d91e7 commit bf5cad7

File tree

5 files changed

+42
-8
lines changed

5 files changed

+42
-8
lines changed

patchdiff/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
from .diff import diff
33
from .serialize import to_json
44

5-
__version__ = "0.3.3"
5+
__version__ = "0.3.4"

patchdiff/pointer.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,18 @@ class Pointer:
2222
def __init__(self, tokens: List[Hashable] = None) -> None:
2323
if tokens is None:
2424
tokens = []
25-
self.tokens = tokens
25+
self.tokens = tuple(tokens)
2626

2727
@staticmethod
2828
def from_str(path: str) -> "Pointer":
29-
tokens = [unescape(t) for t in path.split("/")]
29+
tokens = [unescape(t) for t in path.split("/")[1:]]
3030
return Pointer(tokens)
3131

3232
def __str__(self) -> str:
3333
return "/" + "/".join(escape(str(t)) for t in self.tokens)
3434

3535
def __repr__(self) -> str:
36-
return f"Pointer({repr(self.tokens)})"
36+
return f"Pointer({repr(list(self.tokens))})"
3737

3838
def __hash__(self) -> int:
3939
return hash(self.tokens)
@@ -62,4 +62,4 @@ def evaluate(self, obj: Diffable) -> Tuple[Diffable, Hashable, Any]:
6262

6363
def append(self, token: Hashable) -> "Pointer":
6464
"""append, creating new Pointer"""
65-
return Pointer(self.tokens + [token])
65+
return Pointer(self.tokens + (token,))

patchdiff/types.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from typing import Dict, List, Set, Tuple, Union
1+
from typing import Dict, List, Set, Union
22

3-
Diffable = Union[Dict, List, Set, Tuple]
3+
Diffable = Union[Dict, List, Set]

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "patchdiff"
3-
version = "0.3.3"
3+
version = "0.3.4"
44
description = "MIT"
55
authors = ["Korijn van Golen <[email protected]>", "Berend Klein Haneveld <[email protected]>"]
66
homepage = "https://github.com/fork-tongue/patchdiff"

tests/test_pointer.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,37 @@ def test_pointer_get():
1010
def test_pointer_str():
1111
assert str(Pointer([1])) == "/1"
1212
assert str(Pointer(["foo", "bar", "-"])) == "/foo/bar/-"
13+
14+
15+
def test_pointer_repr():
16+
assert repr(Pointer([1])) == "Pointer([1])"
17+
assert repr(Pointer(["foo", "bar", "-"])) == "Pointer(['foo', 'bar', '-'])"
18+
19+
20+
def test_pointer_from_str():
21+
assert Pointer.from_str("/1") == Pointer(["1"])
22+
assert Pointer.from_str("/foo/bar/-") == Pointer(["foo", "bar", "-"])
23+
24+
25+
def test_pointer_hash():
26+
assert hash(Pointer([1])) == hash((1,))
27+
assert hash(Pointer(["foo", "bar", "-"])) == hash(("foo", "bar", "-"))
28+
29+
30+
def test_pointer_set():
31+
# hash supports comparison operators for use as keys and set elements
32+
# so we exercise that as well
33+
unique_pointers = [Pointer([1]), Pointer(["2", "3"])]
34+
duplicated_pointers = unique_pointers + unique_pointers
35+
assert len(set(duplicated_pointers)) == len(unique_pointers)
36+
37+
38+
def test_pointer_eq():
39+
assert Pointer([1]) != [1]
40+
assert Pointer([1]) != Pointer(["1"])
41+
assert Pointer([1]) != Pointer([0])
42+
assert Pointer([1]) == Pointer([1])
43+
44+
45+
def test_pointer_append():
46+
assert Pointer([1]).append("foo") == Pointer([1, "foo"])

0 commit comments

Comments
 (0)