52 lines
1.9 KiB
Plaintext
52 lines
1.9 KiB
Plaintext
on: [push, pull_request]
|
|
name: Test
|
|
jobs:
|
|
test:
|
|
strategy:
|
|
matrix:
|
|
go-version: [1.20.x, 1.21.x]
|
|
os: [ubuntu-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Install Go
|
|
uses: actions/setup-go@v4
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
- name: Install PAM
|
|
run: |
|
|
sudo apt update -y
|
|
sudo apt install -y libpam-dev
|
|
- name: Install Debug symbols
|
|
run: |
|
|
sudo apt install -y ubuntu-dev-tools
|
|
(cd /tmp && pull-lp-ddebs libpam0g $(lsb_release -c -s))
|
|
(cd /tmp && pull-lp-ddebs libpam-modules $(lsb_release -c -s))
|
|
sudo dpkg -i /tmp/libpam*-dbgsym_*.ddeb
|
|
- name: Add a test user
|
|
run: sudo useradd -d /tmp/test -p '$1$Qd8H95T5$RYSZQeoFbEB.gS19zS99A0' -s /bin/false test
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Test
|
|
run: sudo go test -v -cover -coverprofile=coverage.out -coverpkg=./... ./...
|
|
- name: Test with Address Sanitizer
|
|
env:
|
|
GO_PAM_TEST_WITH_ASAN: true
|
|
CGO_CFLAGS: "-O0 -g3 -fno-omit-frame-pointer"
|
|
run: |
|
|
# Do not run sudo-requiring go tests because as PAM has some leaks in 22.04
|
|
go test -v -asan -cover -coverprofile=coverage-asan-tx.out -coverpkg=./... -gcflags=all="-N -l"
|
|
|
|
# Run the rest of tests normally
|
|
sudo go test -v -cover -coverprofile=coverage-asan-module.out -coverpkg=./... -asan -gcflags=all="-N -l" -run Module
|
|
sudo go test -C cmd -coverprofile=coverage-asan.out -v -coverpkg=./... -asan -gcflags=all="-N -l" ./...
|
|
- name: Generate example module
|
|
run: |
|
|
rm -f example-module/pam_go.so
|
|
go generate -C example-module -v
|
|
test -e example-module/pam_go.so
|
|
git diff --exit-code example-module
|
|
- name: Upload coverage reports to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
env:
|
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|