name: Test on: push: pull_request: types: [opened, synchronize, reopened] jobs: check-assets: runs-on: ubuntu-latest steps: - name: Restore Geodat Cache uses: actions/cache/restore@v4 with: path: resources key: xray-geodat- - name: Check Assets Existence id: check-assets run: | [ -d 'resources' ] || mkdir resources LIST=('geoip.dat' 'geosite.dat') for FILE_NAME in "${LIST[@]}" do echo -e "Checking ${FILE_NAME}..." if [ -s "./resources/${FILE_NAME}" ]; then echo -e "${FILE_NAME} exists." else echo -e "${FILE_NAME} does not exist." echo "missing=true" >> $GITHUB_OUTPUT break fi done - name: Sleep for 90 seconds if Assets Missing if: steps.check-assets.outputs.missing == 'true' run: sleep 90 test: needs: check-assets permissions: contents: read runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [windows-latest, ubuntu-latest, macos-latest] steps: - name: Checkout codebase uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: go.mod check-latest: true - name: Restore Geodat Cache uses: actions/cache/restore@v4 with: path: resources key: xray-geodat- enableCrossOsArchive: true - name: Test run: go test -timeout 1h -v ./...