mirror of
https://github.com/libp2p/go-openssl.git
synced 2025-03-14 11:40:07 +08:00
* Fix build with OpenSSL 3.0 - FIPS_mode_set() does not exist in OpenSSL 3.0 [1] - X509_check_* functions declarated in openssl/x509v3.h instead of openssl/x509.h [2] - X509_chack_* functions have const char arg inserad of const unsigned char [2] - skip MD4 tests if it is unsupported by OpenSSL - the patch does not change behavior under OpenSSL version != 3 - the patch just fixes build under OpenSSL 3.0 and doesn't update deprecated code or behavior 1. https://wiki.openssl.org/index.php/OpenSSL_3.0#Upgrading_from_the_OpenSSL_2.0_FIPS_Object_Module 2. https://www.openssl.org/docs/man3.0/man3/X509_check_host.html * Add Ubuntu 22.04 runner to GitHub Actions go test workflow * Fix flaky tests on Ubuntu 22.04 It is necessary to handle OpenSSL errors very carefully. Otherwise, errors may appear in unexpected places. For example, we didn't catch an error from EVP_DigestInit_ex() and it appears sometimes in conn.go: func (c *Conn) getErrorHandler(rv C.int, errno error) func() error { errcode := C.SSL_get_error(c.ssl, rv) // <- here
70 lines
2.6 KiB
YAML
70 lines
2.6 KiB
YAML
# See:
|
|
# https://github.com/libp2p/go-openssl/pull/25
|
|
# https://github.com/protocol/.github/issues/349
|
|
# for details.
|
|
on: [push, pull_request]
|
|
name: Go Test
|
|
|
|
jobs:
|
|
unit:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ "ubuntu-22.04" ]
|
|
go: [ "1.17.x", "1.18.x" ]
|
|
env:
|
|
COVERAGES: ""
|
|
runs-on: ${{ matrix.os }}
|
|
name: ${{ matrix.os }} (go ${{ matrix.go }})
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
- uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go }}
|
|
- name: Go information
|
|
run: |
|
|
go version
|
|
go env
|
|
- name: Use msys2 on windows
|
|
if: startsWith(matrix.os, 'windows')
|
|
shell: bash
|
|
# The executable for msys2 is also called bash.cmd
|
|
# https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#shells
|
|
# If we prepend its location to the PATH
|
|
# subsequent 'shell: bash' steps will use msys2 instead of gitbash
|
|
run: echo "C:/msys64/usr/bin" >> $GITHUB_PATH
|
|
- name: Run repo-specific setup
|
|
uses: ./.github/actions/go-test-setup
|
|
if: hashFiles('./.github/actions/go-test-setup') != ''
|
|
- name: Run tests
|
|
uses: protocol/multiple-go-modules@v1.2
|
|
with:
|
|
# Use -coverpkg=./..., so that we include cross-package coverage.
|
|
# If package ./A imports ./B, and ./A's tests also cover ./B,
|
|
# this means ./B's coverage will be significantly higher than 0%.
|
|
run: go test -v -coverprofile=module-coverage.txt -coverpkg=./... ./...
|
|
- name: Run tests (32 bit)
|
|
if: startsWith(matrix.os, 'macos') == false # can't run 32 bit tests on OSX.
|
|
uses: protocol/multiple-go-modules@v1.2
|
|
env:
|
|
GOARCH: 386
|
|
with:
|
|
run: |
|
|
export "PATH=${{ env.PATH_386 }}:$PATH"
|
|
go test -v ./...
|
|
- name: Run tests with race detector
|
|
if: startsWith(matrix.os, 'ubuntu') # speed things up. Windows and OSX VMs are slow
|
|
uses: protocol/multiple-go-modules@v1.2
|
|
with:
|
|
run: go test -v -race ./...
|
|
- name: Collect coverage files
|
|
shell: bash
|
|
run: echo "COVERAGES=$(find . -type f -name 'module-coverage.txt' | tr -s '\n' ',' | sed 's/,$//')" >> $GITHUB_ENV
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0
|
|
with:
|
|
files: '${{ env.COVERAGES }}'
|
|
env_vars: OS=${{ matrix.os }}, GO=${{ matrix.go }}
|