Skip to content

Commit

Permalink
Add Swift 5.10 support
Browse files Browse the repository at this point in the history
  • Loading branch information
ffried committed Mar 12, 2024
1 parent 5518a02 commit fab2a86
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 27 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
uses: sersoft-gmbh/oss-common-actions/.github/workflows/swift-generate-and-publish-docs.yml@main
with:
os: ubuntu
swift-version: '5.9'
swift-version: '5.10'
organisation: ${{ github.repository_owner }}
repository: ${{ github.event.repository.name }}
pages-branch: gh-pages
7 changes: 4 additions & 3 deletions .github/workflows/swift-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ permissions:
jobs:
variables:
outputs:
max-supported-swift-version: '5.9'
max-supported-swift-version: '5.10'
xcode-scheme: path-wrangler-Package
xcode-platform-version: latest
fail-if-codecov-fails: true
Expand All @@ -25,7 +25,7 @@ jobs:
strategy:
matrix:
os: [ macOS, ubuntu ]
swift-version-offset: [ 0 ]
swift-version-offset: [ 0, 1 ]
uses: sersoft-gmbh/oss-common-actions/.github/workflows/swift-test-spm.yml@main
with:
os: ${{ matrix.os }}
Expand All @@ -45,7 +45,8 @@ jobs:
- iPadOS
- tvOS
- watchOS
swift-version-offset: [ 0 ]
- visionOS
swift-version-offset: [ 0, 1 ]
uses: sersoft-gmbh/oss-common-actions/.github/workflows/swift-test-xcode.yml@main
with:
xcode-scheme: ${{ needs.variables.outputs.xcode-scheme }}
Expand Down
7 changes: 5 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// swift-tools-version:5.9
// swift-tools-version:5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription
Expand All @@ -8,9 +8,12 @@ let swiftSettings: Array<SwiftSetting> = [
.enableUpcomingFeature("ExistentialAny"),
.enableUpcomingFeature("BareSlashRegexLiterals"),
.enableUpcomingFeature("DisableOutwardActorInference"),
.enableUpcomingFeature("IsolatedDefaultValues"),
.enableUpcomingFeature("DeprecateApplicationMain"),
.enableExperimentalFeature("StrictConcurrency"),
.enableExperimentalFeature("GlobalConcurrency"),
// .enableExperimentalFeature("AccessLevelOnImport"),
// .enableExperimentalFeature("VariadicGenerics"),
// .unsafeFlags(["-warn-concurrency"], .when(configuration: .debug)),
]

let package = Package(
Expand Down
55 changes: 55 additions & 0 deletions [email protected]
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// swift-tools-version:5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let swiftSettings: Array<SwiftSetting> = [
.enableUpcomingFeature("ConciseMagicFile"),
.enableUpcomingFeature("ExistentialAny"),
.enableUpcomingFeature("BareSlashRegexLiterals"),
.enableUpcomingFeature("DisableOutwardActorInference"),
.enableExperimentalFeature("StrictConcurrency"),
// .enableExperimentalFeature("AccessLevelOnImport"),
// .enableExperimentalFeature("VariadicGenerics"),
]

let package = Package(
name: "path-wrangler",
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "CorePathWrangler",
targets: ["CorePathWrangler"]),
.library(
name: "PathWrangler",
targets: ["PathWrangler"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"),
.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0"),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(name: "CPathWrangler"),
.target(
name: "CorePathWrangler",
dependencies: [
.product(name: "Algorithms", package: "swift-algorithms"),
"CPathWrangler",
],
swiftSettings: swiftSettings),
.target(
name: "PathWrangler",
dependencies: ["CorePathWrangler"],
swiftSettings: swiftSettings),
.testTarget(
name: "CorePathWranglerTests",
dependencies: ["CorePathWrangler"],
swiftSettings: swiftSettings),
.testTarget(
name: "PathWranglerTests",
dependencies: ["PathWrangler"],
swiftSettings: swiftSettings),
]
)
40 changes: 19 additions & 21 deletions Tests/PathWranglerTests/FileManager+PathProtocolTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ import XCTest
import PathWrangler

final class FileManagerPathProtocolExtensionsTests: XCTestCase {
private func createFiles(in fileManager: FileManager) -> (absPath: AbsolutePath, relPath: RelativePath) {
private func createFiles() -> (absPath: AbsolutePath, relPath: RelativePath) {
let fileName = UUID().uuidString
let absPath = AbsolutePath.tmpDir.appending(pathComponents: fileName)
let relPath = RelativePath.current.appending(pathComponents: fileName)
fileManager.createFile(atPath: relPath.pathString, contents: nil, attributes: nil)
fileManager.createFile(atPath: absPath.pathString, contents: nil, attributes: nil)
FileManager.default.createFile(atPath: relPath.pathString, contents: nil, attributes: nil)
FileManager.default.createFile(atPath: absPath.pathString, contents: nil, attributes: nil)
addTeardownBlock {
try? fileManager.removeItem(atPath: relPath.pathString)
try? fileManager.removeItem(atPath: absPath.pathString)
try? FileManager.default.removeItem(atPath: relPath.pathString)
try? FileManager.default.removeItem(atPath: absPath.pathString)
}
return (absPath, relPath)
}
Expand All @@ -24,24 +24,22 @@ final class FileManagerPathProtocolExtensionsTests: XCTestCase {
}

func testFileExistsAtPath() {
let fileManager = FileManager.default
let (absPath, relPath) = createFiles(in: fileManager)
XCTAssertTrue(fileManager.fileExists(at: absPath))
XCTAssertTrue(fileManager.fileExists(at: relPath))
XCTAssertFalse(fileManager.fileExists(at: AbsolutePath.tmpDir))
XCTAssertFalse(fileManager.fileExists(at: RelativePath.current))
XCTAssertFalse(fileManager.fileExists(at: AbsolutePath(pathString: "/d/e/f/")))
XCTAssertFalse(fileManager.fileExists(at: RelativePath(pathString: "d/e/f")))
let (absPath, relPath) = createFiles()
XCTAssertTrue(FileManager.default.fileExists(at: absPath))
XCTAssertTrue(FileManager.default.fileExists(at: relPath))
XCTAssertFalse(FileManager.default.fileExists(at: AbsolutePath.tmpDir))
XCTAssertFalse(FileManager.default.fileExists(at: RelativePath.current))
XCTAssertFalse(FileManager.default.fileExists(at: AbsolutePath(pathString: "/d/e/f/")))
XCTAssertFalse(FileManager.default.fileExists(at: RelativePath(pathString: "d/e/f")))
}

func testDirectoryExistsAtPath() {
let fileManager = FileManager.default
let (absPath, relPath) = createFiles(in: fileManager)
XCTAssertFalse(fileManager.directoryExists(at: absPath))
XCTAssertFalse(fileManager.directoryExists(at: relPath))
XCTAssertTrue(fileManager.directoryExists(at: AbsolutePath.tmpDir))
XCTAssertTrue(fileManager.directoryExists(at: RelativePath.current))
XCTAssertFalse(fileManager.directoryExists(at: AbsolutePath(pathString: "/g/h/i/")))
XCTAssertFalse(fileManager.directoryExists(at: RelativePath(pathString: "g/h/i")))
let (absPath, relPath) = createFiles()
XCTAssertFalse(FileManager.default.directoryExists(at: absPath))
XCTAssertFalse(FileManager.default.directoryExists(at: relPath))
XCTAssertTrue(FileManager.default.directoryExists(at: AbsolutePath.tmpDir))
XCTAssertTrue(FileManager.default.directoryExists(at: RelativePath.current))
XCTAssertFalse(FileManager.default.directoryExists(at: AbsolutePath(pathString: "/g/h/i/")))
XCTAssertFalse(FileManager.default.directoryExists(at: RelativePath(pathString: "g/h/i")))
}
}

0 comments on commit fab2a86

Please sign in to comment.