FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
GitPython/test/test_fixture_health.py at main · gitpython-developers/GitPython · GitHub
gitpython-developers
GitPython
Repository navigation
Code
Issues
7
(7)
Pull requests
3
(3)
Discussions
Actions
Security and quality
41
(41)
Insights
Expand file tree
Breadcrumbs
GitPython
/
test
/
test_fixture_health.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
70 lines (60 loc) · 2.74 KB
Breadcrumbs
GitPython
/
test
/
test_fixture_health.py
Copy path
File metadata and controls
70 lines (60 loc) · 2.74 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
# This module is part of GitPython and is released under the
# 3-Clause BSD License: https://opensource.org/license/bsd-3-clause/
"""Verify that the source repository is usable by git."""
import
subprocess
from
pathlib
import
Path
import
pytest
REPO_ROOT
=
Path
(
__file__
).
resolve
().
parent
.
parent
FIXTURE_DIRS
=
[
pytest
.
param
(
REPO_ROOT
,
id
=
"repo_root"
)]
def
test_source_tree_has_no_gitlinks
()
->
None
:
"""All formerly external dependencies are regular monorepo directories."""
if
not
(
REPO_ROOT
/
".git"
).
exists
():
pytest
.
skip
(
f"
{
REPO_ROOT
}
is not a git checkout"
)
try
:
result
=
subprocess
.
run
(
[
"git"
,
"ls-files"
,
"--stage"
],
cwd
=
REPO_ROOT
,
capture_output
=
True
,
text
=
True
,
check
=
True
,
)
except
FileNotFoundError
:
pytest
.
skip
(
"git is not installed or not on PATH"
)
gitlinks
=
[
line
for
line
in
result
.
stdout
.
splitlines
()
if
line
.
startswith
(
"160000 "
)]
assert
not
gitlinks
,
"Unexpected submodules:
\n
"
+
"
\n
"
.
join
(
gitlinks
)
@
pytest
.
mark
.
parametrize
(
"fixture_dir"
,
FIXTURE_DIRS
)
def
test_fixture_dir_is_trusted_by_git
(
fixture_dir
:
Path
)
->
None
:
"""git accepts ``fixture_dir`` as its own repository owned by a trusted user.
Run ``git -C <fixture_dir> rev-parse --show-toplevel`` and assert it
succeeds and reports ``fixture_dir`` itself as the toplevel. Failure
typically means the directory's on-disk ownership doesn't match the
running user and the CI workflow's ``safe.directory`` list is missing
an entry that would override the check.
"""
if
not
(
fixture_dir
/
".git"
).
exists
():
pytest
.
skip
(
f"
{
fixture_dir
}
is not a git checkout"
)
try
:
result
=
subprocess
.
run
(
[
"git"
,
"-C"
,
str
(
fixture_dir
),
"rev-parse"
,
"--show-toplevel"
],
capture_output
=
True
,
text
=
True
,
check
=
False
,
)
except
FileNotFoundError
:
pytest
.
skip
(
"git is not installed or not on PATH"
)
assert
result
.
returncode
==
0
, (
f"git refuses to operate in
{
fixture_dir
}
.
\n
"
f"stderr:
{
result
.
stderr
.
strip
()
}
\n
"
"The directory's owner doesn't match the running user and no "
"`safe.directory` entry overrides the check. On CI, the "
"workflow's `safe.directory` list typically needs an entry for "
"this path. Locally, this is unexpected and usually indicates "
"an ownership problem worth investigating."
)
reported
=
Path
(
result
.
stdout
.
strip
())
assert
reported
.
samefile
(
fixture_dir
), (
f"git reports the toplevel as
{
reported
}
, "
f"not as
{
fixture_dir
}
itself. "
"This usually means the directory is not an initialized git "
"repository (its `.git` marker may be stale or pointing elsewhere)."
)
Back
|
FazBrowse Home
|
New Git URL