Skip to content

Commit

Permalink
Merge branch 'main' into jbe/spr2
Browse files Browse the repository at this point in the history
  • Loading branch information
jbelkins committed Sep 12, 2024
2 parents 640eeb0 + 723ccb2 commit 6d6bcf6
Show file tree
Hide file tree
Showing 419 changed files with 45,583 additions and 48,683 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ struct PrepareRelease {
let sourceCodeArtifactId: String

typealias DiffChecker = (_ branch: String, _ version: Version) throws -> Bool
/// Returns true if the repsoitory has changes given the current branch and the version to compare, otherwise returns false
/// Returns true if the repository has changes given the current branch and the version to compare, otherwise returns false
let diffChecker: DiffChecker

/// Prepares a release for the specified repository.
Expand Down Expand Up @@ -123,8 +123,17 @@ struct PrepareRelease {
log("Previous release version: \(previousVersion)")
return previousVersion
}



/// Returns the version of the new release.
/// This version is read from the version defined in the `Package.version.next` file.
///
/// - Returns: The version of the new release.
func getNewVersion() throws -> Version {
let newVersion = try Version.fromFile("Package.version.next")
log("New release version: \(newVersion)")
return newVersion
}

/// Returns true if the `main` branch has changes since the previous release, otherwise returns false.
///
/// - Parameter previousVersion: The version of the previous release
Expand All @@ -139,18 +148,39 @@ struct PrepareRelease {
return hasChanges
}

/// Creates and returns a new version to be used for this release
/// Creates and returns a new version to be used for this release.
///
/// The new version is read from the file `Package.version.next`, which is written into `Package.version`. The
/// new version is then auto-incremented and written into `Package.version.next`.
///
/// - Parameter previousVersion: The version of the previous release
/// - Returns: A new version to be used for this release
/// - Returns: The new version to be used for this release, as read from `Package.version.next`.
func createNewVersion(_ previousVersion: Version) throws -> Version {
let newVersion = previousVersion.incrementingMinor()
let newVersion: Version
do {
newVersion = try getNewVersion()
} catch {
throw Error("Failed to read new version from Package.version.next")
}
do {
try "\(newVersion)".write(toFile: "Package.version" , atomically: true, encoding: .utf8)
log("Updated Package.version: \(newVersion)")
} catch {
throw Error("Failed to write version \(newVersion) to Package.version")
}
log("Updated Package.version: \(newVersion)")
let futureVersion: Version
do {
switch repoType {
case .awsSdkSwift:
futureVersion = newVersion.incrementingPatch()
case .smithySwift:
futureVersion = newVersion.incrementingMinor()
}
try "\(futureVersion)".write(toFile: "Package.version.next", atomically: true, encoding: .utf8)
log("Updated Package.version.next: \(futureVersion)")
} catch {
throw Error("Failed to write version \(futureVersion) to Package.version.next")
}
return newVersion
}

Expand All @@ -162,12 +192,13 @@ struct PrepareRelease {
files = [
"Package.swift",
"Package.version",
"Package.version.next",
"packageDependencies.plist",
"Sources/Services",
"Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md"
]
case .smithySwift:
files = ["Package.version"]
files = ["Package.version", "Package.version.next"]
}

try _run(Process.git.add(files))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,15 @@ class PrepareReleaseTests: CLITestCase {
encoding: .utf8
)
}


func createNextPackageVersion(_ version: Version) {
try! "\(version)".write(
toFile: "Package.version.next" ,
atomically: true,
encoding: .utf8
)
}

// MARK: - Tests

// MARK: Golden Path
Expand All @@ -32,15 +40,20 @@ class PrepareReleaseTests: CLITestCase {
}
ProcessRunner.testRunner = runner
let previousVersion = try Version("1.2.3")
let newVersion = try Version("1.3.0")
let newVersion = try Version("1.2.4")
let futureVersion = try Version("1.2.5")
createPackageVersion(previousVersion)

let subject = PrepareRelease.mock(diffChecker: { _,_ in true })
createNextPackageVersion(newVersion)

let subject = PrepareRelease.mock(repoType: .awsSdkSwift, diffChecker: { _,_ in true })
try! subject.run()

let versionFromFile = try! Version.fromFile("Package.version")
XCTAssertEqual(versionFromFile, newVersion)


let futureVersionFromFile = try! Version.fromFile("Package.version.next")
XCTAssertEqual(futureVersionFromFile, futureVersion)

let releaseManifest = try! ReleaseManifest.fromFile("release-manifest.json")
XCTAssertEqual(releaseManifest.name, "\(newVersion)")
XCTAssertEqual(releaseManifest.tagName, "\(newVersion)")
Expand All @@ -60,8 +73,10 @@ class PrepareReleaseTests: CLITestCase {
}
ProcessRunner.testRunner = runner
let previousVersion = try Version("1.2.3")
let newVersion = try Version("1.2.4")
createPackageVersion(previousVersion)

createNextPackageVersion(newVersion)

let subject = PrepareRelease.mock(diffChecker: { _,_ in false })
try! subject.run()

Expand All @@ -73,27 +88,60 @@ class PrepareReleaseTests: CLITestCase {

// MARK: createNewVersion()

func testCreateNewVersion() throws {
func testCreateNewSDKVersion() async throws {
let previousVersion = try Version("1.2.3")
let newVersion = try Version("1.3.0")
let subject = PrepareRelease.mock()
let futureVersion = try Version("1.3.1")
createPackageVersion(previousVersion)
createNextPackageVersion(newVersion)
let subject = PrepareRelease.mock(repoType: .awsSdkSwift)
let result = try subject.createNewVersion(previousVersion)
XCTAssertEqual(result, newVersion)

let versionFromFile = try! Version.fromFile("Package.version")
XCTAssertEqual(versionFromFile, newVersion)

let nextVersionFromFile = try! Version.fromFile("Package.version.next")
XCTAssertEqual(nextVersionFromFile, futureVersion)
}

func testCreateNewSmithySwiftVersion() throws {
let previousVersion = try Version("1.2.3")
let newVersion = try Version("1.3.0")
let futureVersion = try Version("1.4.0")
createPackageVersion(previousVersion)
createNextPackageVersion(newVersion)
let subject = PrepareRelease.mock(repoType: .smithySwift)
let result = try! subject.createNewVersion(previousVersion)
XCTAssertEqual(result, newVersion)

let versionFromFile = try! Version.fromFile("Package.version")
XCTAssertEqual(versionFromFile, newVersion)

let nextVersionFromFile = try! Version.fromFile("Package.version.next")
XCTAssertEqual(nextVersionFromFile, futureVersion)
}

// MARK: getPreviousVersion()

func testGetPreviousVersionFromPackageVersion() throws {
let version = try Version("1.2.3")
createPackageVersion(version)
let subject = PrepareRelease.mock()
let result = try! subject.getPreviousVersion()
XCTAssertEqual(result, version)
}


// MARK: getNextVersion()

func testGetNewVersionFromPackageVersionDotNext() throws {
let version = try Version("1.2.3")
createNextPackageVersion(version)
let subject = PrepareRelease.mock()
let result = try! subject.getNewVersion()
XCTAssertEqual(result, version)
}

// MARK: stageFiles()

func testStageFilesForAWSSDKSwift() {
Expand All @@ -104,7 +152,7 @@ class PrepareReleaseTests: CLITestCase {
ProcessRunner.testRunner = runner
let subject = PrepareRelease.mock(repoType: .awsSdkSwift)
try! subject.stageFiles()
XCTAssertTrue(command.hasSuffix("git add Package.swift Package.version packageDependencies.plist Sources/Services Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md"))
XCTAssertTrue(command.hasSuffix("git add Package.swift Package.version Package.version.next packageDependencies.plist Sources/Services Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md"))
}

func testStageFilesForSmithySwift() {
Expand All @@ -115,7 +163,7 @@ class PrepareReleaseTests: CLITestCase {
ProcessRunner.testRunner = runner
let subject = PrepareRelease.mock(repoType: .smithySwift)
try! subject.stageFiles()
XCTAssertTrue(command.hasSuffix("git add Package.version"))
XCTAssertTrue(command.hasSuffix("git add Package.version Package.version.next"))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import AWSSTS
import AWSCognitoIdentity
import AWSClientRuntime
import ClientRuntime
import class SmithyHTTPAPI.HTTPRequest
import class SmithyHTTPAPI.HTTPResponse

/// Tests unauthenciated API using AWSCognitoIdentity::getId
class UnauthenticatedAPITests: XCTestCase {
Expand Down Expand Up @@ -70,7 +72,7 @@ class GetHeadersBeforeTransmit<InputType, OutputType>: HttpInterceptor {
}
}
class GetHeadersBeforeTransmitProvider: HttpInterceptorProvider {
func create<InputType, OutputType>() -> any HttpInterceptor<InputType, OutputType> {
func create<InputType, OutputType>() -> any Interceptor<InputType, OutputType, HTTPRequest, HTTPResponse> {
return GetHeadersBeforeTransmit()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ final class S3FlexibleChecksumsTests: S3XCTestCase {
}

class DisablePayloadSigningProvider: HttpInterceptorProvider {
func create<InputType, OutputType>() -> any HttpInterceptor<InputType, OutputType> {
func create<InputType, OutputType>() -> any Interceptor<InputType, OutputType, HTTPRequest, HTTPResponse> {
return DisablePayloadSigning()
}
}
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ func addResolvedTargets() {
// MARK: - Generated

addDependencies(
clientRuntimeVersion: "0.65.0",
clientRuntimeVersion: "0.67.0",
crtVersion: "0.33.0"
)

Expand Down
2 changes: 1 addition & 1 deletion Package.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.75.0
0.76.1
1 change: 1 addition & 0 deletions Package.version.next
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.76.2
Loading

0 comments on commit 6d6bcf6

Please sign in to comment.