Skip to content

Commit 30a75dc

Browse files
committed
Add test_example
1 parent eeefcc6 commit 30a75dc

File tree

3 files changed

+37
-26
lines changed

3 files changed

+37
-26
lines changed

pathtraits/access.py

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,8 @@ def get(path, db_path, verbose):
1010
if verbose:
1111
logging.basicConfig(level=logging.DEBUG)
1212

13-
abs_path = os.path.abspath(path)
14-
leaf_dir = os.path.dirname(abs_path) if os.path.isfile(abs_path) else abs_path
15-
dirs = leaf_dir.split("/")
16-
1713
db = TraitsDB(db_path)
18-
19-
# get traits from path and its parents
20-
dirs_data = []
21-
data = db.get("data", path=abs_path)
22-
if data:
23-
dirs_data.append(data)
24-
for i in reversed(range(0, len(dirs))):
25-
cur_path = "/".join(dirs[0 : i + 1])
26-
data = db.get("data", path=cur_path)
27-
if data:
28-
dirs_data.append(data)
29-
30-
# inherit traits: children overwrite parent path traits
31-
res = {}
32-
for cur_data in reversed(dirs_data):
33-
for k, v in cur_data.items():
34-
if v and k != "path":
35-
res[k] = v
36-
37-
# output
14+
res = db.get_dict(path)
3815
if len(res) > 0:
3916
print(yaml.safe_dump(res))
4017
else:

pathtraits/db.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,30 @@ def get(self, table, cols="*", condition=None, **kwargs):
5555
res = {k: v for k, v in zip(keys, values)}
5656
return res
5757

58+
def get_dict(self, path):
59+
abs_path = os.path.abspath(path)
60+
leaf_dir = os.path.dirname(abs_path) if os.path.isfile(abs_path) else abs_path
61+
dirs = leaf_dir.split("/")
62+
63+
# get traits from path and its parents
64+
dirs_data = []
65+
data = self.get("data", path=abs_path)
66+
if data:
67+
dirs_data.append(data)
68+
for i in reversed(range(0, len(dirs))):
69+
cur_path = "/".join(dirs[0 : i + 1])
70+
data = self.get("data", path=cur_path)
71+
if data:
72+
dirs_data.append(data)
73+
74+
# inherit traits: children overwrite parent path traits
75+
res = {}
76+
for cur_data in reversed(dirs_data):
77+
for k, v in cur_data.items():
78+
if v and k != "path":
79+
res[k] = v
80+
return res
81+
5882
def put_path_id(self, path):
5983
get_row_query = f"SELECT id FROM path WHERE path = '{path}' LIMIT 1;"
6084
res = self.execute(get_row_query).fetchone()

test/test.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,24 @@
1010
import pathtraits.scan
1111

1212

13-
class TestCLI(unittest.TestCase):
14-
def test(self):
13+
class TestMain(unittest.TestCase):
14+
def test_example(self):
1515
db_path = tempfile.mkstemp()[1]
1616
pathtraits.scan.batch("test/example", db_path, False)
1717

1818
db = pathtraits.db.TraitsDB(db_path)
1919
self.assertTrue(db is not None)
2020

21+
source = db.get_dict("test/example/Europe/de.txt")
22+
target = {
23+
"description_TEXT": "Germany data",
24+
"has_sidecar_meta_file_BOOL": 1,
25+
"is_example_BOOL": 1,
26+
"score_TEXT": "zero",
27+
}
28+
for k, v in target.items():
29+
self.assertEqual(source[k], v)
30+
2131

2232
if __name__ == "__main__":
2333
unittest.main()

0 commit comments

Comments
 (0)