workflows/test: factor out steps & refactoring

This commit is contained in:
Egor Tensin 2021-07-02 20:16:57 +03:00
parent 4785090c89
commit 3d49180b0b
6 changed files with 153 additions and 95 deletions

View file

@ -0,0 +1,20 @@
name: Build foo.exe
description: Build foo.exe (on Cygwin)
inputs:
platform:
description: Target platform
required: true
runs:
using: composite
steps:
- run: |
IFS= read -r src_dir <<'EOF'
${{ github.workspace }}
EOF
echo "$src_dir"
src_dir="$( cygpath -ua "$src_dir" )"
cd -- "$src_dir"
arch=
[ '${{ matrix.platform }}' == 'x86' ] && arch=-m32
clang++ $arch -std=c++14 -o foo.exe foo.cpp
shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'

20
.github/actions/build-foo/action.yml vendored Normal file
View file

@ -0,0 +1,20 @@
name: Build foo.exe
description: Build foo.exe
inputs:
platform:
description: Target platform
required: true
runs:
using: composite
steps:
- run: |
$flags = @()
if ('${{ matrix.platform }}' -eq 'x86') {
$flags += '-m32'
}
$flags += '-std=c++14','-o','foo.exe','foo.cpp'
if ('${{ runner.os }}' -eq 'Linux') {
$flags += '-lpthread'
}
clang++ $flags
shell: pwsh

View file

@ -0,0 +1,25 @@
name: Check cc/c++
description: Check cc/c++ (on Cygwin)
runs:
using: composite
steps:
- run: |
check_tool() {
local exe
for exe; do
full_path="$( command -v "$exe" )"
echo "$full_path"
output="$( "$full_path" --version )"
echo "$output"
if ! echo "$output" | grep -F -- "clang version"; then
echo 'Unexpected `'"$exe"' --version` output.' >&2
exit 1
fi
done
}
check_tool cc
check_tool c++
shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'

22
.github/actions/check-cc/action.yml vendored Normal file
View file

@ -0,0 +1,22 @@
name: Check cc/c++
description: Check cc/c++
runs:
using: composite
steps:
- run: |
function Check-Exe {
param(
[Parameter(Mandatory=$true)]
[string] $Exe
)
echo (Get-Command $Exe).Path
$output = & $Exe --version
echo $output
$($output | Select-String -Pattern "clang version" -SimpleMatch -Quiet) -or $(throw "Unexpected `$Exe --version` output")
}
Check-Exe cc
Check-Exe c++
shell: pwsh

26
.github/actions/run-foo/action.yml vendored Normal file
View file

@ -0,0 +1,26 @@
name: Run foo.exe
description: Run foo.exe and verify its output
runs:
using: composite
steps:
- run: |
$expected = @"
Doing something #1
Doing something #2
Doing something #3
"@
$actual = & (Join-Path . foo.exe)
$actual = $actual -join [Environment]::NewLine
echo @"
Expected output:
$expected
"@
echo @"
Actual output:
$actual
"@
$($actual -eq $expected) -or $(throw "Unexpected output!")
shell: pwsh