From ce960092451ad3987aa5f1481f1375c8bf197880 Mon Sep 17 00:00:00 2001 From: Di Wu Date: Fri, 23 Aug 2024 16:50:30 -0700 Subject: [PATCH] add unit test github action --- .github/.editorconfig | 3 + .github/CODEOWNERS | 4 +- .github/workflows/unit-test.yaml | 68 +++++++++++++++++++ .gitignore | 1 + .../Websocket/LocalWebSocketServer.swift | 2 +- 5 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 .github/.editorconfig create mode 100644 .github/workflows/unit-test.yaml diff --git a/.github/.editorconfig b/.github/.editorconfig new file mode 100644 index 0000000..0fad08c --- /dev/null +++ b/.github/.editorconfig @@ -0,0 +1,3 @@ +[*.yaml] +indent_style = space +indent_size = 2 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6ba62cb..d1bc307 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,3 @@ -* @aws-amplify/amplify-ios +- @aws-amplify/amplify-ios -/.github/CODEOWNERS @aws-amplify/amplify-ios-admins \ No newline at end of file +/.github/CODEOWNERS @aws-amplify/amplify-ios-admins diff --git a/.github/workflows/unit-test.yaml b/.github/workflows/unit-test.yaml new file mode 100644 index 0000000..da0d04f --- /dev/null +++ b/.github/workflows/unit-test.yaml @@ -0,0 +1,68 @@ +name: Unit Test + +on: + pull_request: + +permissions: + id-token: write # TODO(5d): remove this line after repo goes public + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + unit-test: + name: "[${{ matrix.os }}] Unit Test" + environment: Release + strategy: + fail-fast: false + matrix: + include: + - scheme: AWSAppSyncApolloExtensions + os: iOS + sdk: iphonesimulator + destination: platform=iOS Simulator,name=iPhone 15,OS=latest + - scheme: AWSAppSyncApolloExtensions + os: macOS + sdk: macosx + destination: platform=OS X,arch=x86_64 + - scheme: AWSAppSyncApolloExtensions + os: watchOS + sdk: watchsimulator + destination: platform=watchOS Simulator,name=Apple Watch Series 9 (45mm),OS=latest + - scheme: AWSAppSyncApolloExtensions + os: tvOS + sdk: appletvsimulator + destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest + + runs-on: macos-14 + steps: + - name: Configure AWS credentials # TODO(5d): remove this step after repo goes public + uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + role-session-name: ${{ format('{0}.release', github.run_id) }} + aws-region: ${{ secrets.AWS_REGION }} + + - id: retrieve-token # TODO(5d): remove this step after repo goes public + name: Retrieve Token + env: + DEPLOY_SECRET_ARN: ${{ secrets.DEPLOY_SECRET_ARN }} + run: | + PAT=$(aws secretsmanager get-secret-value \ + --secret-id "$DEPLOY_SECRET_ARN" \ + | jq -r ".SecretString | fromjson | .Credential") + echo "token=$PAT" >> $GITHUB_OUTPUT + + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + persist-credentials: false + token: ${{steps.retrieve-token.outputs.token}} # TODO(5d): remove this line after repo goes public + + - name: ${{ matrix.os }} + run: | + xcodebuild test \ + -scheme ${{ matrix.scheme }} \ + -destination "${{ matrix.destination }}" \ + -sdk ${{ matrix.sdk }} \ + -only-testing:"${{ matrix.scheme }}Tests" | xcpretty --simple --color --report junit && exit ${PIPESTATUS[0]} diff --git a/.gitignore b/.gitignore index e650442..f68e2e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store /.build +build/ /Packages xcuserdata/ DerivedData/ diff --git a/Tests/AWSAppSyncApolloExtensionsTests/Websocket/LocalWebSocketServer.swift b/Tests/AWSAppSyncApolloExtensionsTests/Websocket/LocalWebSocketServer.swift index bdf66ca..b20ae8f 100644 --- a/Tests/AWSAppSyncApolloExtensionsTests/Websocket/LocalWebSocketServer.swift +++ b/Tests/AWSAppSyncApolloExtensionsTests/Websocket/LocalWebSocketServer.swift @@ -96,7 +96,7 @@ class LocalWebSocketServer { func sendTransientFailureToConnections() { self.connections.forEach { - var metadata = NWProtocolWebSocket.Metadata(opcode: .close) + let metadata = NWProtocolWebSocket.Metadata(opcode: .close) metadata.closeCode = .protocolCode(NWProtocolWebSocket.CloseCode.Defined.internalServerError) $0.send( content: nil,