Skip to content

Conversation

@simonjbeaumont
Copy link
Contributor

Motivation:

The API documentation for ExitTest.Result.standardOutputContent and ExitTest.Result.standardErrorContent has advice on how to construct a string from their contents. It recommends using String.init(validatingCString:), which has two problems:

  1. You cannot just pass it in since these properties are [UInt8] and String.init(validatingCString:) takes sequences whose element is CChar (aka Int8):
_ = String(validatingCString: result.standardErrorContent)  // error: Cannot convert value of type '[UInt8]' to expected argument type '[CChar]' (aka 'Array<Int8>')
  1. Even if you had the sequence of the correct element type, the matching initializer is now deprecated:
_ = String(validatingCString: result.standardErrorContent.map(Int8.init))  // warning: 'init(validatingCString:)' is deprecated: Use String(validating: array, as: UTF8.self) instead, after truncating the null termination.

So, in order to get this working without warnings, adopters will likely want this:

try #require(String(validating: result.standardErrorContent, as: UTF8.self))

Modifications:

  • Update the API documentation to advise using String(validating: array, as: UTF8.self).

Checklist:

  • Code and documentation should follow the style of the Style Guide.
  • If public symbols are renamed or modified, DocC references should be updated.

@stmontgomery stmontgomery added bug 🪲 Something isn't working documentation 📚 Improvements or additions to documentation exit-tests ☠️ Work related to exit tests labels Jul 17, 2025
@stmontgomery stmontgomery added this to the Swift 6.x (main) milestone Jul 17, 2025
Copy link
Contributor

@stmontgomery stmontgomery left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Makes sense to me, but I'll let @grynspan weigh in first

Copy link
Contributor

@grynspan grynspan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense to me. I think I originally wrote this documentation before that initializer was added.

@stmontgomery stmontgomery merged commit 004acdb into swiftlang:main Jul 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug 🪲 Something isn't working documentation 📚 Improvements or additions to documentation exit-tests ☠️ Work related to exit tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants