Skip to content

Commit 055a3d9

Browse files
[5.7] Encode an explicit null for DownloadReference's checksum (#657)
For ease of processing, change DownloadReference to encode an explicit null when checksum is not present. rdar://111865266
1 parent 3d3c403 commit 055a3d9

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Sources/SwiftDocC/Model/Rendering/Tutorial/References/DownloadReference.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public struct DownloadReference: RenderReference, URLReference, Equatable {
101101
var container = encoder.container(keyedBy: CodingKeys.self)
102102
try container.encode(type.rawValue, forKey: .type)
103103
try container.encode(identifier, forKey: .identifier)
104-
try container.encodeIfPresent(checksum, forKey: .checksum)
104+
try container.encode(checksum, forKey: .checksum)
105105

106106
// Render URL
107107
if !encodeUrlVerbatim {

Tests/SwiftDocCTests/Rendering/SampleDownloadTests.swift

+9
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,13 @@ class SampleDownloadTests: XCTestCase {
277277
let downloadReference = try XCTUnwrap(renderNode.projectFiles())
278278
XCTAssertEqual(downloadReference.url.description, "https://example.com/sample.zip")
279279
}
280+
281+
func testExplicitNullChecksum() throws {
282+
let identifier = RenderReferenceIdentifier("/test/sample.zip")
283+
let originalURL = try XCTUnwrap(URL(string: "/test/sample.zip"))
284+
var reference = DownloadReference(identifier: identifier, verbatimURL: originalURL, checksum: nil)
285+
let encodedReference = try JSONEncoder().encode(reference)
286+
let encodedJson = try XCTUnwrap(String(data: encodedReference, encoding: .utf8))
287+
XCTAssert(encodedJson.contains(#""checksum":null"#))
288+
}
280289
}

0 commit comments

Comments
 (0)