FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
GitPython/gitdb/gitdb/test/db/test_pack.py at main · 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
/
gitdb
/
gitdb
/
test
/
db
/
test_pack.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
87 lines (71 loc) · 2.75 KB
Breadcrumbs
GitPython
/
gitdb
/
gitdb
/
test
/
db
/
test_pack.py
Copy path
File metadata and controls
87 lines (71 loc) · 2.75 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
# Copyright (C) 2010, 2011 Sebastian Thiel (byronimo@gmail.com) and contributors
#
# This module is part of GitDB and is released under
# the New BSD License: https://opensource.org/license/bsd-3-clause/
from
gitdb
.
test
.
db
.
lib
import
(
TestDBBase
,
with_rw_directory
,
with_packs_rw
)
from
gitdb
.
db
import
PackedDB
from
gitdb
.
exc
import
BadObject
,
AmbiguousObjectName
from
gitdb
.
util
import
mman
import
os
import
random
import
sys
import
pytest
class
TestPackDB
(
TestDBBase
):
@
with_rw_directory
@
with_packs_rw
def
test_writing
(
self
,
path
):
if
sys
.
platform
==
"win32"
:
pytest
.
skip
(
"FIXME: Currently fail on windows"
)
pdb
=
PackedDB
(
path
)
# on demand, we init our pack cache
num_packs
=
len
(
pdb
.
entities
())
assert
pdb
.
_st_mtime
!=
0
# test pack directory changed:
# packs removed - rename a file, should affect the glob
pack_path
=
pdb
.
entities
()[
0
].
pack
().
path
()
new_pack_path
=
pack_path
+
"renamed"
if
sys
.
platform
==
"win32"
:
# While using this function, we are not allowed to have any handle
# to this path, which is currently not the case. The pack caching
# does still have a handle :-(
mman
.
force_map_handle_removal_win
(
pack_path
)
os
.
rename
(
pack_path
,
new_pack_path
)
pdb
.
update_cache
(
force
=
True
)
assert
len
(
pdb
.
entities
())
==
num_packs
-
1
# packs added
os
.
rename
(
new_pack_path
,
pack_path
)
pdb
.
update_cache
(
force
=
True
)
assert
len
(
pdb
.
entities
())
==
num_packs
# bang on the cache
# access the Entities directly, as there is no iteration interface
# yet ( or required for now )
sha_list
=
list
(
pdb
.
sha_iter
())
assert
len
(
sha_list
)
==
pdb
.
size
()
# hit all packs in random order
random
.
shuffle
(
sha_list
)
for
sha
in
sha_list
:
pdb
.
info
(
sha
)
pdb
.
stream
(
sha
)
# END for each sha to query
# test short finding - be a bit more brutal here
max_bytes
=
19
min_bytes
=
2
num_ambiguous
=
0
for
i
,
sha
in
enumerate
(
sha_list
):
short_sha
=
sha
[:
max
((
i
%
max_bytes
),
min_bytes
)]
try
:
assert
pdb
.
partial_to_complete_sha
(
short_sha
,
len
(
short_sha
)
*
2
)
==
sha
except
AmbiguousObjectName
:
num_ambiguous
+=
1
pass
# valid, we can have short objects
# END exception handling
# END for each sha to find
# we should have at least one ambiguous, considering the small sizes
# but in our pack, there is no ambiguous ...
# assert num_ambiguous
# non-existing
self
.
assertRaises
(
BadObject
,
pdb
.
partial_to_complete_sha
,
b'
\0
\0
'
,
4
)
Back
|
FazBrowse Home
|
New Git URL