Add PAM module stub generator, modules implmentations and integration tests #201
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: Update system | |
run: | | |
sudo apt-get update -y | |
sudo apt-get dist-upgrade -y | |
- name: Install PAM with debug symbols | |
run: | | |
sudo apt-get install ubuntu-dbgsym-keyring -y | |
echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse | |
deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse | |
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" | \ | |
sudo tee -a /etc/apt/sources.list.d/ddebs.list | |
sudo apt-get update -y | |
sudo apt-get install -y libpam-dev libpam-modules-dbgsym libpam0*-dbgsym | |
- 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 }} |