FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
GitPython/git/test/test_tree.py at master · pythonthings/GitPython · GitHub
pythonthings
GitPython
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
GitPython
/
git
/
test
/
test_tree.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
108 lines (90 loc) · 3.95 KB
Breadcrumbs
GitPython
/
git
/
test
/
test_tree.py
Copy path
File metadata and controls
108 lines (90 loc) · 3.95 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# 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: http://www.opensource.org/licenses/bsd-license.php
from
io
import
BytesIO
import
sys
from
unittest
import
skipIf
from
git
import
(
Tree
,
Blob
)
from
git
.
test
.
lib
import
TestBase
from
git
.
util
import
HIDE_WINDOWS_KNOWN_ERRORS
import
os
.
path
as
osp
class
TestTree
(
TestBase
):
@
skipIf
(
HIDE_WINDOWS_KNOWN_ERRORS
and
sys
.
version_info
[:
2
]
==
(
3
,
5
),
"""
File "C:
\\
projects
\\
gitpython
\\
git
\\
cmd.py", line 559, in execute
raise GitCommandNotFound(command, err)
git.exc.GitCommandNotFound: Cmd('git') not found due to: OSError('[WinError 6] The handle is invalid')
cmdline: git cat-file --batch-check"""
)
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
.
failUnlessRaises
(
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
@
skipIf
(
HIDE_WINDOWS_KNOWN_ERRORS
and
sys
.
version_info
[:
2
]
==
(
3
,
5
),
"""
File "C:
\\
projects
\\
gitpython
\\
git
\\
cmd.py", line 559, in execute
raise GitCommandNotFound(command, err)
git.exc.GitCommandNotFound: Cmd('git') not found due to: OSError('[WinError 6] The handle is invalid')
cmdline: git cat-file --batch-check"""
)
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