Skip to content

Finish FoundationInternationalization swift-testing migration #1402

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Tests/FoundationEssentialsTests/ProcessInfoTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -159,15 +159,15 @@ private struct ProcessInfoTests {

@Test func processName() {
#if FOUNDATION_FRAMEWORK
let targetName = "TestHost"
let targetNames = ["TestHost"]
#elseif os(Linux) || os(Windows) || os(Android) || os(FreeBSD)
let targetName = "swift-foundationPackageTests.xctest"
let targetNames = ["swift-foundationPackageTests.xctest"]
#else
let targetName = "swiftpm-testing-helper"
let targetNames = ["swiftpm-testing-helper", "xctest"]
#endif
let processInfo = ProcessInfo.processInfo
let originalProcessName = processInfo.processName
#expect(originalProcessName == targetName)
#expect(targetNames.contains(originalProcessName))

// Try assigning a new process name.
let newProcessName = "TestProcessName"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,8 @@
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// REQUIRES: objc_interop

#if canImport(TestSupport)
import TestSupport
#endif
import Testing

#if canImport(FoundationInternationalization)
@testable import FoundationEssentials
Expand All @@ -23,68 +17,69 @@ import TestSupport
@testable import Foundation
#endif

class ListFormatStyleTests : XCTestCase {
func test_orList() {
@Suite("ListFormatStyle")
private struct ListFormatStyleTests {
@Test func orList() {
var style: ListFormatStyle<StringStyle, [String]> = .list(type: .or, width: .standard)
style.locale = Locale(identifier: "en_US")

XCTAssertEqual(["one", "two"].formatted(style), "one or two")
XCTAssertEqual(["one", "two", "three"].formatted(style), "one, two, or three")
#expect(["one", "two"].formatted(style) == "one or two")
#expect(["one", "two", "three"].formatted(style) == "one, two, or three")
}

func test_andList() {
@Test func andList() {
var style: ListFormatStyle<StringStyle, [String]> = .list(type: .and, width: .standard)
style.locale = Locale(identifier: "en_US")

XCTAssertEqual(["one", "two"].formatted(style), "one and two")
XCTAssertEqual(["one", "two", "three"].formatted(style), "one, two, and three")
#expect(["one", "two"].formatted(style) == "one and two")
#expect(["one", "two", "three"].formatted(style) == "one, two, and three")
}

func test_narrowList() {
@Test func narrowList() {
var style: ListFormatStyle<StringStyle, [String]> = .list(type: .and, width: .narrow)
style.locale = Locale(identifier: "en_US")

XCTAssertEqual(["one", "two"].formatted(style), "one, two")
XCTAssertEqual(["one", "two", "three"].formatted(style), "one, two, three")
#expect(["one", "two"].formatted(style) == "one, two")
#expect(["one", "two", "three"].formatted(style) == "one, two, three")
}

func test_shortList() {
@Test func shortList() {
var style: ListFormatStyle<StringStyle, [String]> = .list(type: .and, width: .short)
style.locale = Locale(identifier: "en_US")

XCTAssertEqual(["one", "two"].formatted(style), "one & two")
XCTAssertEqual(["one", "two", "three"].formatted(style), "one, two, & three")
#expect(["one", "two"].formatted(style) == "one & two")
#expect(["one", "two", "three"].formatted(style) == "one, two, & three")
}

#if FOUNDATION_FRAMEWORK // FIXME: rdar://104091257
func test_leadingDotSyntax() {
@Test func leadingDotSyntax() {
let _ = ["one", "two"].formatted(.list(type: .and))
let _ = ["one", "two"].formatted()
let _ = [1, 2].formatted(.list(memberStyle: .number, type: .or, width: .standard))
}
#endif

func testAutoupdatingCurrentChangesFormatResults() {
let locale = Locale.autoupdatingCurrent
let list = ["one", "two", "three", "four"]

// Get a formatted result from es-ES
var prefs = LocalePreferences()
prefs.languages = ["es-ES"]
prefs.locale = "es_ES"
LocaleCache.cache.resetCurrent(to: prefs)
let formattedSpanish = list.formatted(.list(type: .and).locale(locale))

// Get a formatted result from en-US
prefs.languages = ["en-US"]
prefs.locale = "en_US"
LocaleCache.cache.resetCurrent(to: prefs)
let formattedEnglish = list.formatted(.list(type: .and).locale(locale))

// Reset to current preferences before any possibility of failing this test
LocaleCache.cache.reset()

// No matter what 'current' was before this test was run, formattedSpanish and formattedEnglish should be different.
XCTAssertNotEqual(formattedSpanish, formattedEnglish)
@Test func autoupdatingCurrentChangesFormatResults() async {
await usingCurrentInternationalizationPreferences {
let locale = Locale.autoupdatingCurrent
let list = ["one", "two", "three", "four"]

// Get a formatted result from es-ES
var prefs = LocalePreferences()
prefs.languages = ["es-ES"]
prefs.locale = "es_ES"
LocaleCache.cache.resetCurrent(to: prefs)
let formattedSpanish = list.formatted(.list(type: .and).locale(locale))

// Get a formatted result from en-US
prefs.languages = ["en-US"]
prefs.locale = "en_US"
LocaleCache.cache.resetCurrent(to: prefs)
let formattedEnglish = list.formatted(.list(type: .and).locale(locale))

// Reset to current preferences before any possibility of failing this test
LocaleCache.cache.reset()

// No matter what 'current' was before this test was run, formattedSpanish and formattedEnglish should be different.
#expect(formattedSpanish != formattedEnglish)
}
}
}
Loading