From 5984238e3bb163d55ae733d8f938e00cf802bd82 Mon Sep 17 00:00:00 2001 From: Jonathan Grynspan Date: Mon, 8 Sep 2025 12:34:52 -0400 Subject: [PATCH] Lower more experimental JSON fields. This PR suppresses more experimental JSON fields if they aren't supposed to be included in the current JSON event stream version: - All experimental event kinds. - Attachments' preferred names and bytes/contents. - Hoisted comments and source locations for all event kinds. --- Sources/Testing/ABI/ABI.Record.swift | 4 +++ .../ABI/Encoded/ABI.EncodedAttachment.swift | 2 +- .../ABI/Encoded/ABI.EncodedEvent.swift | 30 +++++++++++-------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/Sources/Testing/ABI/ABI.Record.swift b/Sources/Testing/ABI/ABI.Record.swift index ef7bc6937..40a8d4bc3 100644 --- a/Sources/Testing/ABI/ABI.Record.swift +++ b/Sources/Testing/ABI/ABI.Record.swift @@ -36,6 +36,10 @@ extension ABI { guard let event = EncodedEvent(encoding: event, in: eventContext, messages: messages) else { return nil } + if !V.includesExperimentalFields && event.kind.rawValue.first == "_" { + // Don't encode experimental event kinds. + return nil + } kind = .event(event) } } diff --git a/Sources/Testing/ABI/Encoded/ABI.EncodedAttachment.swift b/Sources/Testing/ABI/Encoded/ABI.EncodedAttachment.swift index a2400f9bf..013e129f6 100644 --- a/Sources/Testing/ABI/Encoded/ABI.EncodedAttachment.swift +++ b/Sources/Testing/ABI/Encoded/ABI.EncodedAttachment.swift @@ -41,7 +41,7 @@ extension ABI { init(encoding attachment: borrowing Attachment, in eventContext: borrowing Event.Context) { path = attachment.fileSystemPath - if V.versionNumber >= ABI.v6_3.versionNumber { + if V.includesExperimentalFields { _preferredName = attachment.preferredName if path == nil { diff --git a/Sources/Testing/ABI/Encoded/ABI.EncodedEvent.swift b/Sources/Testing/ABI/Encoded/ABI.EncodedEvent.swift index 523d7845c..3bfd6ff36 100644 --- a/Sources/Testing/ABI/Encoded/ABI.EncodedEvent.swift +++ b/Sources/Testing/ABI/Encoded/ABI.EncodedEvent.swift @@ -112,31 +112,22 @@ extension ABI { case let .issueRecorded(recordedIssue): kind = .issueRecorded issue = EncodedIssue(encoding: recordedIssue, in: eventContext) - _comments = recordedIssue.comments.map(\.rawValue) - _sourceLocation = recordedIssue.sourceLocation case let .valueAttached(attachment): kind = .valueAttached self.attachment = EncodedAttachment(encoding: attachment, in: eventContext) - _sourceLocation = attachment.sourceLocation case .testCaseEnded: if eventContext.test?.isParameterized == false { return nil } kind = .testCaseEnded - case let .testCaseCancelled(skipInfo): + case .testCaseCancelled: kind = .testCaseCancelled - _comments = Array(skipInfo.comment).map(\.rawValue) - _sourceLocation = skipInfo.sourceLocation case .testEnded: kind = .testEnded - case let .testSkipped(skipInfo): + case .testSkipped: kind = .testSkipped - _comments = Array(skipInfo.comment).map(\.rawValue) - _sourceLocation = skipInfo.sourceLocation - case let .testCancelled(skipInfo): + case .testCancelled: kind = .testCancelled - _comments = Array(skipInfo.comment).map(\.rawValue) - _sourceLocation = skipInfo.sourceLocation case .runEnded: kind = .runEnded default: @@ -148,6 +139,21 @@ extension ABI { // Experimental fields if V.includesExperimentalFields { + switch event.kind { + case let .issueRecorded(recordedIssue): + _comments = recordedIssue.comments.map(\.rawValue) + _sourceLocation = recordedIssue.sourceLocation + case let .valueAttached(attachment): + _sourceLocation = attachment.sourceLocation + case let .testCaseCancelled(skipInfo), + let .testSkipped(skipInfo), + let .testCancelled(skipInfo): + _comments = Array(skipInfo.comment).map(\.rawValue) + _sourceLocation = skipInfo.sourceLocation + default: + break + } + if eventContext.test?.isParameterized == true { _testCase = eventContext.testCase.map(EncodedTestCase.init) }