diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d0f7b1f9..55b56d39 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ # This is a workflow to help you test the unit case and show codecov -name: "build and codecov" +name: "build" on: push: @@ -60,9 +60,3 @@ jobs: - name: "run go build" run: go build -v ./... - - - name: "run go test and out codecov" - run: go test -v ./... -race -coverprofile=coverage.out -covermode=atomic - - - name: "upload coverage" - uses: codecov/codecov-action@v3 diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml new file mode 100644 index 00000000..388e1cf3 --- /dev/null +++ b/.github/workflows/unit-test.yml @@ -0,0 +1,78 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +name: "Unit Test" + +on: + push: + branches: [ master ] + pull_request: + branches: [ "*" ] + types: [opened, synchronize, reopened] + +permissions: + contents: read + +jobs: + unit-test: + name: Unit Test + runs-on: ubuntu-latest + timeout-minutes: 10 + strategy: + matrix: + golang: + - 1.18 + + steps: + - name: "Set up Go" + uses: actions/setup-go@v3 + with: + go-version: ${{ matrix.golang }} + + - name: "Checkout code" + uses: actions/checkout@v3 + with: + submodules: true + + - name: "Cache dependencies" + uses: actions/cache@v3 + with: + path: ~/go/pkg/mod + key: "${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}" + restore-keys: | + "${{ runner.os }}-go-" + + - name: Shutdown default mysql + run: sudo service mysql stop + + + - name: "Run Unit Tests" + run: | + echo "=== Starting Unit Tests ===" + go test -v ./... -race -coverprofile=coverage.txt -covermode=atomic -timeout 10m + if [ $? -ne 0 ]; then + echo "❌ Unit tests failed" + exit 1 + fi + echo "✅ Unit tests completed successfully" + + - name: "Archive test results" + uses: actions/upload-artifact@v3 + with: + name: test-results + path: coverage.txt + retention-days: 7