Skip to content

Commit d1b23ca

Browse files
committed
Use more intuitive approach to handling index's checksums in integration test
The checksums are different every time the index is generated, so they must be removed before comparing the index against the golden master. Previously, the approach was to delete the entire checksum key from the index data. I think a better approach is to replace the data with a placeholder because the golden master having a templated value rather than a missing key is more intuitive for maintainers.
1 parent 5068e17 commit d1b23ca

File tree

2 files changed

+50
-26
lines changed

2 files changed

+50
-26
lines changed

test/test_all.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,21 +151,23 @@ def check_index(configuration):
151151
Keyword arguments:
152152
configuration -- dictionary defining the libraries-repository-engine configuration
153153
"""
154+
checksum_placeholder = "CHECKSUM_PLACEHOLDER"
155+
154156
# Load generated index
155157
with pathlib.Path(configuration["LibrariesIndex"]).open(mode="r", encoding="utf-8") as library_index_file:
156158
library_index = json.load(fp=library_index_file)
157159
for release in library_index["libraries"]:
158-
# The checksum values in the index will be different on every run, so it's necessary to remove them before
159-
# comparing to the golden index
160-
del release["checksum"]
160+
# The checksum values in the index will be different on every run, so it's necessary to replace them with a
161+
# placeholder before comparing to the golden index
162+
release["checksum"] = checksum_placeholder
161163

162164
# Load golden index
163165
golden_library_index_template = test_data_path.joinpath("test_all", "golden", "library_index.json").read_text(
164166
encoding="utf-8"
165167
)
166168
# Fill in mutable content
167169
golden_library_index_string = string.Template(template=golden_library_index_template).substitute(
168-
base_download_url=configuration["BaseDownloadUrl"]
170+
base_download_url=configuration["BaseDownloadUrl"], checksum_placeholder=checksum_placeholder
169171
)
170172
golden_library_index = json.loads(golden_library_index_string)
171173

test/testdata/test_all/golden/library_index.json

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
1515
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.1.0.zip",
1616
"archiveFileName": "ArduinoCloudThing-1.1.0.zip",
17-
"size": 105318
17+
"size": 105318,
18+
"checksum": "${checksum_placeholder}"
1819
},
1920
{
2021
"name": "ArduinoCloudThing",
@@ -30,7 +31,8 @@
3031
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
3132
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.3.1.zip",
3233
"archiveFileName": "ArduinoCloudThing-1.3.1.zip",
33-
"size": 222190
34+
"size": 222190,
35+
"checksum": "${checksum_placeholder}"
3436
},
3537
{
3638
"name": "ArduinoCloudThing",
@@ -46,7 +48,8 @@
4648
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
4749
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.4.0.zip",
4850
"archiveFileName": "ArduinoCloudThing-1.4.0.zip",
49-
"size": 222064
51+
"size": 222064,
52+
"checksum": "${checksum_placeholder}"
5053
},
5154
{
5255
"name": "ArduinoCloudThing",
@@ -62,7 +65,8 @@
6265
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
6366
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.4.1.zip",
6467
"archiveFileName": "ArduinoCloudThing-1.4.1.zip",
65-
"size": 221686
68+
"size": 221686,
69+
"checksum": "${checksum_placeholder}"
6670
},
6771
{
6872
"name": "ArduinoCloudThing",
@@ -78,7 +82,8 @@
7882
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
7983
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.5.0.zip",
8084
"archiveFileName": "ArduinoCloudThing-1.5.0.zip",
81-
"size": 234576
85+
"size": 234576,
86+
"checksum": "${checksum_placeholder}"
8287
},
8388
{
8489
"name": "ArduinoCloudThing",
@@ -94,7 +99,8 @@
9499
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
95100
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.5.1.zip",
96101
"archiveFileName": "ArduinoCloudThing-1.5.1.zip",
97-
"size": 235029
102+
"size": 235029,
103+
"checksum": "${checksum_placeholder}"
98104
},
99105
{
100106
"name": "ArduinoCloudThing",
@@ -110,7 +116,8 @@
110116
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
111117
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.5.2.zip",
112118
"archiveFileName": "ArduinoCloudThing-1.5.2.zip",
113-
"size": 235026
119+
"size": 235026,
120+
"checksum": "${checksum_placeholder}"
114121
},
115122
{
116123
"name": "ArduinoCloudThing",
@@ -126,7 +133,8 @@
126133
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
127134
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.5.3.zip",
128135
"archiveFileName": "ArduinoCloudThing-1.5.3.zip",
129-
"size": 235034
136+
"size": 235034,
137+
"checksum": "${checksum_placeholder}"
130138
},
131139
{
132140
"name": "ArduinoCloudThing",
@@ -142,7 +150,8 @@
142150
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
143151
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.5.4.zip",
144152
"archiveFileName": "ArduinoCloudThing-1.5.4.zip",
145-
"size": 236072
153+
"size": 236072,
154+
"checksum": "${checksum_placeholder}"
146155
},
147156
{
148157
"name": "ArduinoCloudThing",
@@ -158,7 +167,8 @@
158167
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
159168
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.6.0.zip",
160169
"archiveFileName": "ArduinoCloudThing-1.6.0.zip",
161-
"size": 244091
170+
"size": 244091,
171+
"checksum": "${checksum_placeholder}"
162172
},
163173
{
164174
"name": "ArduinoCloudThing",
@@ -174,7 +184,8 @@
174184
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
175185
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.6.1.zip",
176186
"archiveFileName": "ArduinoCloudThing-1.6.1.zip",
177-
"size": 244762
187+
"size": 244762,
188+
"checksum": "${checksum_placeholder}"
178189
},
179190
{
180191
"name": "ArduinoCloudThing",
@@ -190,7 +201,8 @@
190201
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
191202
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.6.2.zip",
192203
"archiveFileName": "ArduinoCloudThing-1.6.2.zip",
193-
"size": 244928
204+
"size": 244928,
205+
"checksum": "${checksum_placeholder}"
194206
},
195207
{
196208
"name": "ArduinoCloudThing",
@@ -206,7 +218,8 @@
206218
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
207219
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.6.3.zip",
208220
"archiveFileName": "ArduinoCloudThing-1.6.3.zip",
209-
"size": 242430
221+
"size": 242430,
222+
"checksum": "${checksum_placeholder}"
210223
},
211224
{
212225
"name": "ArduinoCloudThing",
@@ -222,7 +235,8 @@
222235
"repository": "https://github.com/arduino-libraries/ArduinoCloudThing.git",
223236
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.6.4.zip",
224237
"archiveFileName": "ArduinoCloudThing-1.6.4.zip",
225-
"size": 244979
238+
"size": 244979,
239+
"checksum": "${checksum_placeholder}"
226240
},
227241
{
228242
"name": "ArduinoCloudThing",
@@ -239,7 +253,8 @@
239253
"dependencies": [{ "name": "RTCZero" }],
240254
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.6.5.zip",
241255
"archiveFileName": "ArduinoCloudThing-1.6.5.zip",
242-
"size": 244990
256+
"size": 244990,
257+
"checksum": "${checksum_placeholder}"
243258
},
244259
{
245260
"name": "ArduinoCloudThing",
@@ -256,7 +271,8 @@
256271
"dependencies": [{ "name": "RTCZero" }],
257272
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.7.0.zip",
258273
"archiveFileName": "ArduinoCloudThing-1.7.0.zip",
259-
"size": 246815
274+
"size": 246815,
275+
"checksum": "${checksum_placeholder}"
260276
},
261277
{
262278
"name": "ArduinoCloudThing",
@@ -273,7 +289,8 @@
273289
"dependencies": [{ "name": "RTCZero" }],
274290
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.7.1.zip",
275291
"archiveFileName": "ArduinoCloudThing-1.7.1.zip",
276-
"size": 246817
292+
"size": 246817,
293+
"checksum": "${checksum_placeholder}"
277294
},
278295
{
279296
"name": "ArduinoCloudThing",
@@ -290,7 +307,8 @@
290307
"dependencies": [{ "name": "RTCZero" }],
291308
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.7.2.zip",
292309
"archiveFileName": "ArduinoCloudThing-1.7.2.zip",
293-
"size": 246968
310+
"size": 246968,
311+
"checksum": "${checksum_placeholder}"
294312
},
295313
{
296314
"name": "ArduinoCloudThing",
@@ -307,7 +325,8 @@
307325
"dependencies": [{ "name": "RTCZero" }],
308326
"url": "${base_download_url}github.com/arduino-libraries/ArduinoCloudThing-1.7.3.zip",
309327
"archiveFileName": "ArduinoCloudThing-1.7.3.zip",
310-
"size": 246899
328+
"size": 246899,
329+
"checksum": "${checksum_placeholder}"
311330
},
312331
{
313332
"name": "SpacebrewYun",
@@ -323,7 +342,8 @@
323342
"repository": "https://github.com/arduino-libraries/SpacebrewYun.git",
324343
"url": "${base_download_url}github.com/arduino-libraries/SpacebrewYun-1.0.0.zip",
325344
"archiveFileName": "SpacebrewYun-1.0.0.zip",
326-
"size": 6245
345+
"size": 6245,
346+
"checksum": "${checksum_placeholder}"
327347
},
328348
{
329349
"name": "SpacebrewYun",
@@ -339,7 +359,8 @@
339359
"repository": "https://github.com/arduino-libraries/SpacebrewYun.git",
340360
"url": "${base_download_url}github.com/arduino-libraries/SpacebrewYun-1.0.1.zip",
341361
"archiveFileName": "SpacebrewYun-1.0.1.zip",
342-
"size": 12604
362+
"size": 12604,
363+
"checksum": "${checksum_placeholder}"
343364
},
344365
{
345366
"name": "SpacebrewYun",
@@ -356,7 +377,8 @@
356377
"dependencies": [{ "name": "Bridge" }],
357378
"url": "${base_download_url}github.com/arduino-libraries/SpacebrewYun-1.0.2.zip",
358379
"archiveFileName": "SpacebrewYun-1.0.2.zip",
359-
"size": 12606
380+
"size": 12606,
381+
"checksum": "${checksum_placeholder}"
360382
}
361383
]
362384
}

0 commit comments

Comments
 (0)