FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
GitPython/test/test_tree.py at 3.1.38 · gitpython-developers/GitPython · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
gitpython-developers
/
GitPython
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
989
Star
5.2k
Code
Issues
8
Pull requests
2
Discussions
Actions
Security and quality
34
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
GitPython
/
test
/
test_tree.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
91 lines (74 loc) · 3.15 KB
Breadcrumbs
GitPython
/
test
/
test_tree.py
Copy path
File metadata and controls
91 lines (74 loc) · 3.15 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# test_tree.py
# Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors
#
# This module is part of GitPython and is released under
# the BSD License: https://opensource.org/license/bsd-3-clause/
from
io
import
BytesIO
from
git
.
objects
import
Tree
,
Blob
from
test
.
lib
import
TestBase
import
os
.
path
as
osp
class
TestTree
(
TestBase
):
def
test_serializable
(
self
):
# tree at the given commit contains a submodule as well
roottree
=
self
.
rorepo
.
tree
(
"6c1faef799095f3990e9970bc2cb10aa0221cf9c"
)
for
item
in
roottree
.
traverse
(
ignore_self
=
False
):
if
item
.
type
!=
Tree
.
type
:
continue
# END skip non-trees
tree
=
item
# trees have no dict
self
.
assertRaises
(
AttributeError
,
setattr
,
tree
,
"someattr"
,
1
)
orig_data
=
tree
.
data_stream
.
read
()
orig_cache
=
tree
.
_cache
stream
=
BytesIO
()
tree
.
_serialize
(
stream
)
assert
stream
.
getvalue
()
==
orig_data
stream
.
seek
(
0
)
testtree
=
Tree
(
self
.
rorepo
,
Tree
.
NULL_BIN_SHA
,
0
,
""
)
testtree
.
_deserialize
(
stream
)
assert
testtree
.
_cache
==
orig_cache
# replaces cache, but we make sure of it
del
testtree
.
_cache
testtree
.
_deserialize
(
stream
)
# END for each item in tree
def
test_traverse
(
self
):
root
=
self
.
rorepo
.
tree
(
"0.1.6"
)
num_recursive
=
0
all_items
=
[]
for
obj
in
root
.
traverse
():
if
"/"
in
obj
.
path
:
num_recursive
+=
1
assert
isinstance
(
obj
, (
Blob
,
Tree
))
all_items
.
append
(
obj
)
# END for each object
assert
all_items
==
root
.
list_traverse
()
# limit recursion level to 0 - should be same as default iteration
assert
all_items
assert
"CHANGES"
in
root
assert
len
(
list
(
root
))
==
len
(
list
(
root
.
traverse
(
depth
=
1
)))
# only choose trees
trees_only
=
lambda
i
,
d
:
i
.
type
==
"tree"
trees
=
list
(
root
.
traverse
(
predicate
=
trees_only
))
assert
len
(
trees
)
==
len
([
i
for
i
in
root
.
traverse
()
if
trees_only
(
i
,
0
)])
# test prune
lib_folder
=
lambda
t
,
d
:
t
.
path
==
"lib"
pruned_trees
=
list
(
root
.
traverse
(
predicate
=
trees_only
,
prune
=
lib_folder
))
assert
len
(
pruned_trees
)
<
len
(
trees
)
# trees and blobs
assert
len
(
set
(
trees
)
|
set
(
root
.
trees
))
==
len
(
trees
)
assert
len
({
b
for
b
in
root
if
isinstance
(
b
,
Blob
)}
|
set
(
root
.
blobs
))
==
len
(
root
.
blobs
)
subitem
=
trees
[
0
][
0
]
assert
"/"
in
subitem
.
path
assert
subitem
.
name
==
osp
.
basename
(
subitem
.
path
)
# assure that at some point the traversed paths have a slash in them
found_slash
=
False
for
item
in
root
.
traverse
():
assert
osp
.
isabs
(
item
.
abspath
)
if
"/"
in
item
.
path
:
found_slash
=
True
# END check for slash
# slashes in paths are supported as well
# NOTE: on py3, / doesn't work with strings anymore ...
assert
root
[
item
.
path
]
==
item
==
root
/
item
.
path
# END for each item
assert
found_slash
Back
|
FazBrowse Home
|
New Git URL