Skip to content

Commit 5621228

Browse files
committed
build(test): gold files now have cache hashes in them
1 parent 41ae7bd commit 5621228

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+398
-375
lines changed

coverage/html.py

+19-10
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,23 @@ def encode_int(n: int) -> str:
214214
return "".join(r)
215215

216216

217+
def copy_with_cache_bust(src: str, dest_dir: str) -> str:
218+
"""Copy `src` to `dest_dir`, adding a hash to the name.
219+
220+
Returns the updated destination file name with hash.
221+
"""
222+
with open(src, "rb") as f:
223+
text = f.read()
224+
h = Hasher()
225+
h.update(text)
226+
cache_bust = h.hexdigest()[:8]
227+
src_base = os.path.basename(src)
228+
dest = src_base.replace(".", f"_cb_{cache_bust}.")
229+
with open(os.path.join(dest_dir, dest), "wb") as f:
230+
f.write(text)
231+
return dest
232+
233+
217234
class HtmlReporter:
218235
"""HTML reporting."""
219236

@@ -362,18 +379,10 @@ def make_directory(self) -> None:
362379

363380
def copy_static_file(self, src: str, slug: str = "") -> None:
364381
"""Copy a static file into the output directory with cache busting."""
365-
with open(src, "rb") as f:
366-
text = f.read()
367-
h = Hasher()
368-
h.update(text)
369-
cache_bust = h.hexdigest()[:8]
370-
src_base = os.path.basename(src)
371-
dest = src_base.replace(".", f"_cb_{cache_bust}.")
382+
dest = copy_with_cache_bust(src, self.directory)
372383
if not slug:
373-
slug = src_base.replace(".", "_")
384+
slug = os.path.basename(src).replace(".", "_")
374385
self.template_globals["statics"][slug] = dest # type: ignore
375-
with open(os.path.join(self.directory, dest), "wb") as f:
376-
f.write(text)
377386

378387
def make_local_static_report_files(self) -> None:
379388
"""Make local instances of static files for HTML report."""

igor.py

+8
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,14 @@ def do_cheats():
475475
)
476476

477477

478+
def do_copy_with_hash(*args):
479+
"""Copy files with a cache-busting hash. Used in tests/gold/html/Makefile."""
480+
from coverage.html import copy_with_cache_bust
481+
*srcs, dest_dir = args
482+
for src in srcs:
483+
copy_with_cache_bust(src, dest_dir)
484+
485+
478486
def do_help():
479487
"""List the available commands"""
480488
items = list(globals().items())

tests/gold/README.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ directories, and then add the supporting files so they can be viewed as
1919
complete output. For example::
2020

2121
cp tests/actual/html/contexts/* tests/gold/html/contexts
22-
cd tests/actual/html
22+
cd tests/gold/html
2323
make complete
2424

2525
If the new actual output is correct, you can use "make update-gold" to copy the

tests/gold/html/Makefile

+5-1
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@ update-gold: ## Copy actual output files from latest tests to gold files.
2424
true
2525

2626
update-support: ## Copy latest support files here for posterity.
27-
cp ../../../coverage/htmlfiles/*.{css,js,png} support
27+
python -m pip install -e ../../..
28+
git rm --ignore-unmatch support/*.{css,js,png}
29+
mkdir -p support
30+
python ../../../igor.py copy_with_hash ../../../coverage/htmlfiles/*.{css,js,png} support
31+
git add support

tests/gold/html/a/a_py.html

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<title>Coverage for a.py: 67%</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
77
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8-
<script src="coverage_html_cb_606408f0.js" defer></script>
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="pyfile">
1111
<header>
@@ -64,8 +64,8 @@ <h2>
6464
<a id="indexLink" class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
6565
<a id="nextFileLink" class="nav" href="index.html">&#xbb; next</a>
6666
&nbsp; &nbsp; &nbsp;
67-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
68-
created at 2024-04-24 09:22 -0400
67+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
68+
created at 2024-07-10 12:20 -0400
6969
</p>
7070
<aside class="hidden">
7171
<button type="button" class="button_next_chunk" data-shortcut="j"></button>
@@ -93,8 +93,8 @@ <h2>
9393
<a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
9494
<a class="nav" href="index.html">&#xbb; next</a>
9595
&nbsp; &nbsp; &nbsp;
96-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
97-
created at 2024-04-24 09:22 -0400
96+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
97+
created at 2024-07-10 12:20 -0400
9898
</p>
9999
</div>
100100
</footer>

tests/gold/html/a/class_index.html

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<title>Coverage report</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7-
<link rel="stylesheet" href="style_cb_718ce007.css" type="text/css">
8-
<script src="coverage_html_cb_d1c4fcc4.js" defer></script>
7+
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="indexfile">
1111
<header>
@@ -54,8 +54,8 @@ <h2>
5454
<a class="button current">Classes</a>
5555
</h2>
5656
<p class="text">
57-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
58-
created at 2024-04-28 13:13 -0300
57+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
58+
created at 2024-07-10 12:20 -0400
5959
</p>
6060
</div>
6161
</header>
@@ -99,8 +99,8 @@ <h2>
9999
<footer>
100100
<div class="content">
101101
<p>
102-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
103-
created at 2024-04-28 13:13 -0300
102+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
103+
created at 2024-07-10 12:20 -0400
104104
</p>
105105
</div>
106106
<aside class="hidden">

tests/gold/html/a/function_index.html

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<title>Coverage report</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7-
<link rel="stylesheet" href="style_cb_718ce007.css" type="text/css">
8-
<script src="coverage_html_cb_d1c4fcc4.js" defer></script>
7+
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="indexfile">
1111
<header>
@@ -54,8 +54,8 @@ <h2>
5454
<a class="button" href="class_index.html">Classes</a>
5555
</h2>
5656
<p class="text">
57-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
58-
created at 2024-04-28 13:13 -0300
57+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
58+
created at 2024-07-10 12:20 -0400
5959
</p>
6060
</div>
6161
</header>
@@ -99,8 +99,8 @@ <h2>
9999
<footer>
100100
<div class="content">
101101
<p>
102-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
103-
created at 2024-04-28 13:13 -0300
102+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
103+
created at 2024-07-10 12:20 -0400
104104
</p>
105105
</div>
106106
<aside class="hidden">

tests/gold/html/a/index.html

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<title>Coverage report</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7-
<link rel="stylesheet" href="style_cb_718ce007.css" type="text/css">
8-
<script src="coverage_html_cb_f81f1c3a.js" defer></script>
7+
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="indexfile">
1111
<header>
@@ -53,8 +53,8 @@ <h2>
5353
<a class="button" href="class_index.html">Classes</a>
5454
</h2>
5555
<p class="text">
56-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
57-
created at 2024-04-25 23:03 -0300
56+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
57+
created at 2024-07-10 12:20 -0400
5858
</p>
5959
</div>
6060
</header>
@@ -95,8 +95,8 @@ <h2>
9595
<footer>
9696
<div class="content">
9797
<p>
98-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
99-
created at 2024-04-25 23:03 -0300
98+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
99+
created at 2024-07-10 12:20 -0400
100100
</p>
101101
</div>
102102
<aside class="hidden">

tests/gold/html/b_branch/b_py.html

+4-4
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ <h2>
6666
<a id="indexLink" class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
6767
<a id="nextFileLink" class="nav" href="index.html">&#xbb; next</a>
6868
&nbsp; &nbsp; &nbsp;
69-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.4a0.dev1">coverage.py v7.5.4a0.dev1</a>,
70-
created at 2024-05-30 14:47 -0400
69+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
70+
created at 2024-07-10 12:20 -0400
7171
</p>
7272
<aside class="hidden">
7373
<button type="button" class="button_next_chunk" data-shortcut="j"></button>
@@ -117,8 +117,8 @@ <h2>
117117
<a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
118118
<a class="nav" href="index.html">&#xbb; next</a>
119119
&nbsp; &nbsp; &nbsp;
120-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.4a0.dev1">coverage.py v7.5.4a0.dev1</a>,
121-
created at 2024-05-30 14:47 -0400
120+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
121+
created at 2024-07-10 12:20 -0400
122122
</p>
123123
</div>
124124
</footer>

tests/gold/html/b_branch/class_index.html

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<title>Coverage report</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7-
<link rel="stylesheet" href="style_cb_718ce007.css" type="text/css">
8-
<script src="coverage_html_cb_d1c4fcc4.js" defer></script>
7+
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="indexfile">
1111
<header>
@@ -56,8 +56,8 @@ <h2>
5656
<a class="button current">Classes</a>
5757
</h2>
5858
<p class="text">
59-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
60-
created at 2024-04-28 13:13 -0300
59+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
60+
created at 2024-07-10 16:14 -0400
6161
</p>
6262
</div>
6363
</header>
@@ -107,8 +107,8 @@ <h2>
107107
<footer>
108108
<div class="content">
109109
<p>
110-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
111-
created at 2024-04-28 13:13 -0300
110+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
111+
created at 2024-07-10 16:14 -0400
112112
</p>
113113
</div>
114114
<aside class="hidden">

tests/gold/html/b_branch/function_index.html

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<title>Coverage report</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7-
<link rel="stylesheet" href="style_cb_718ce007.css" type="text/css">
8-
<script src="coverage_html_cb_d1c4fcc4.js" defer></script>
7+
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="indexfile">
1111
<header>
@@ -56,8 +56,8 @@ <h2>
5656
<a class="button" href="class_index.html">Classes</a>
5757
</h2>
5858
<p class="text">
59-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
60-
created at 2024-04-28 13:13 -0300
59+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
60+
created at 2024-07-10 12:20 -0400
6161
</p>
6262
</div>
6363
</header>
@@ -137,8 +137,8 @@ <h2>
137137
<footer>
138138
<div class="content">
139139
<p>
140-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
141-
created at 2024-04-28 13:13 -0300
140+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
141+
created at 2024-07-10 12:20 -0400
142142
</p>
143143
</div>
144144
<aside class="hidden">

tests/gold/html/b_branch/index.html

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<title>Coverage report</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7-
<link rel="stylesheet" href="style_cb_718ce007.css" type="text/css">
8-
<script src="coverage_html_cb_f81f1c3a.js" defer></script>
7+
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="indexfile">
1111
<header>
@@ -55,8 +55,8 @@ <h2>
5555
<a class="button" href="class_index.html">Classes</a>
5656
</h2>
5757
<p class="text">
58-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
59-
created at 2024-04-25 23:03 -0300
58+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
59+
created at 2024-07-10 12:20 -0400
6060
</p>
6161
</div>
6262
</header>
@@ -103,8 +103,8 @@ <h2>
103103
<footer>
104104
<div class="content">
105105
<p>
106-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
107-
created at 2024-04-25 23:03 -0300
106+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
107+
created at 2024-07-10 12:20 -0400
108108
</p>
109109
</div>
110110
<aside class="hidden">

tests/gold/html/bom/bom_py.html

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<title>Coverage for bom.py: 100%</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
77
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8-
<script src="coverage_html_cb_606408f0.js" defer></script>
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="pyfile">
1111
<header>
@@ -64,8 +64,8 @@ <h2>
6464
<a id="indexLink" class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
6565
<a id="nextFileLink" class="nav" href="index.html">&#xbb; next</a>
6666
&nbsp; &nbsp; &nbsp;
67-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
68-
created at 2024-04-24 09:22 -0400
67+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
68+
created at 2024-07-10 12:20 -0400
6969
</p>
7070
<aside class="hidden">
7171
<button type="button" class="button_next_chunk" data-shortcut="j"></button>
@@ -93,8 +93,8 @@ <h2>
9393
<a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
9494
<a class="nav" href="index.html">&#xbb; next</a>
9595
&nbsp; &nbsp; &nbsp;
96-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
97-
created at 2024-04-24 09:22 -0400
96+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
97+
created at 2024-07-10 12:20 -0400
9898
</p>
9999
</div>
100100
</footer>

tests/gold/html/bom/class_index.html

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<title>Coverage report</title>
66
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7-
<link rel="stylesheet" href="style_cb_718ce007.css" type="text/css">
8-
<script src="coverage_html_cb_d1c4fcc4.js" defer></script>
7+
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8+
<script src="coverage_html_cb_6fb7b396.js" defer></script>
99
</head>
1010
<body class="indexfile">
1111
<header>
@@ -54,8 +54,8 @@ <h2>
5454
<a class="button current">Classes</a>
5555
</h2>
5656
<p class="text">
57-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
58-
created at 2024-04-28 13:14 -0300
57+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
58+
created at 2024-07-10 12:20 -0400
5959
</p>
6060
</div>
6161
</header>
@@ -99,8 +99,8 @@ <h2>
9999
<footer>
100100
<div class="content">
101101
<p>
102-
<a class="nav" href="https://coverage.readthedocs.io/en/7.5.1a0.dev1">coverage.py v7.5.1a0.dev1</a>,
103-
created at 2024-04-28 13:14 -0300
102+
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.0a0.dev1">coverage.py v7.6.0a0.dev1</a>,
103+
created at 2024-07-10 12:20 -0400
104104
</p>
105105
</div>
106106
<aside class="hidden">

0 commit comments

Comments
 (0)