swiftlang / swift-testing

A modern, expressive testing package for Swift
Apache License 2.0
1.81k stars 77 forks source link

Adopt `RawSpan` in `Attachable` protocol #818

Open grynspan opened 1 week ago

grynspan commented 1 week ago

Once RawSpan is in the mix, we should replace withUnsafeBufferPointer(for:_:) with:

    /// Get a span representing this instance.
    ///
    /// - Parameters:
    ///   - attachment: The attachment that is requesting a buffer (that is, the
    ///     attachment containing this instance.)
    ///
    /// - Returns: An instance of [`RawSpan`]() that represents this value as
    ///   memory of unspecified type.
    ///
    /// - Throws: Any error that prevented the creation of the span.
    ///
    /// The testing library uses this function when writing an attachment to a
    /// test report or to a file on disk. The format of the buffer is
    /// implementation-defined, but should be "idiomatic" for this type: for
    /// example, if this type represents an image, it would be appropriate for
    /// the buffer to contain an image in PNG format, JPEG format, etc., but it
    /// would not be idiomatic for the buffer to contain a textual description
    /// of the image.
    @lifetime(borrow self)
    borrowing func span(for attachment: borrowing Test.Attachment<Self>) throws -> RawSpan
FranzBusch commented 1 week ago

Just FYI. From the current evolution status you would need to provide a scoped access to the RawSpan and cannot return it from the method until we get something like yields -> RawSpan to express that the span is borrowed.

grynspan commented 1 week ago

I don't anticipate adoption until non-escaping types have matured further. 👍🏻