Moving the test from Travis CI to GitHub Actions

This commit is contained in:
Markus Gans 2021-07-05 02:19:23 +02:00
parent 3bf9713d23
commit cf37e826e9
15 changed files with 460 additions and 188 deletions

53
.github/workflows/arm.yml vendored Normal file
View File

@ -0,0 +1,53 @@
name: "ARM build"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
build:
runs-on: ubuntu-latest
name: Build on ${{ matrix.arch }}
# Run steps on a matrix of 3 arch/distro combinations
strategy:
matrix:
include:
- arch: aarch64
- arch: armv7
steps:
- name: Repository checkout
uses: actions/checkout@v2
- name: Before_install
run: |
lsb_release -a
uname -a
whoami
tty || echo
pwd
- name: Install dependencies via apt-get
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install \
ca-certificates \
gcc \
g++ \
gpm \
libgpm-dev \
libcppunit-dev \
autoconf-archive
- name: Build
run: |
autoreconf -v --install --force
./configure --prefix=/usr
make -j10

View File

@ -3,7 +3,7 @@
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "CodeQL"
name: "CodeQL analysis"
on:
push:

57
.github/workflows/coverage.yml vendored Normal file
View File

@ -0,0 +1,57 @@
name: "Code coverage"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
analyze:
runs-on: ubuntu-latest
env:
COVERALLS_REPO_TOKEN: "${{ secrets.COVERALLS_REPO_TOKEN }}"
steps:
- name: Repository checkout
uses: actions/checkout@v2
- name: Before_install
run: |
lsb_release -a
uname -a
whoami
tty || echo
pwd
- name: Install dependencies via apt-get
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install \
ca-certificates \
gcc \
g++ \
gpm \
libgpm-dev \
libcppunit-dev \
autoconf-archive
- name: Download coderalls
run: pip install --user cpp-coveralls
- name: Download codecov
run: sudo pip install codecov
- name: Build with with gcov
run: script -e -c "./build.sh coverage"
- name: Coveralls
run: coveralls --gcov-options '\-lp' -e debian -e doc -e icon -e logo -e m4 -e scripts -e examples
- name: Codecov
run: bash <(curl -s https://codecov.io/bash)

86
.github/workflows/coverity-scan.yml vendored Normal file
View File

@ -0,0 +1,86 @@
name: "Coverity Scan"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
analyze:
# Ubuntu 16.04 LTS will be removed on September 20, 2021
runs-on: ubuntu-16.04
#runs-on: ubuntu-18.04
env:
COVERITY_SCAN_BRANCH_PATTERN: "${{ github.ref}}"
COVERITY_SCAN_NOTIFICATION_EMAIL: "guru.mail@muenster.de"
COVERITY_SCAN_PROJECT_NAME: "${{ github.repository }}"
# Set in repo settings -> secrets -> repository secrets
COVERITY_SCAN_TOKEN: "${{ secrets.COVERITY_SCAN_TOKEN }}"
CURRENT_REF: "${{ github.ref }}"
steps:
- name: Repository checkout
uses: actions/checkout@v2
- name: Before_install
run: |
lsb_release -a
uname -a
whoami
tty || echo
pwd
- name: Download coverity scan build tool
run: |
wget -q https://scan.coverity.com/download/cxx/linux64 \
--post-data "token=$COVERITY_SCAN_TOKEN&project=gansm%2Ffinalcut" \
-O cov-analysis-linux64.tar.gz
mkdir cov-analysis-linux64
tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64
- name: Install dependencies via apt-get
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install \
ca-certificates \
gcc \
g++ \
gpm \
libgpm-dev \
libcppunit-dev \
autoconf-archive
- name: Build with cov-build
run: |
export PATH=`pwd`/cov-analysis-linux64/bin:$PATH
cat cov-int/scm_log.txt || echo
autoreconf -v --install --force
./configure --prefix=/usr \
CPPFLAGS="-DDEBUG" \
CXXFLAGS="-g -O0 -DDEBUG -DUNIT_TEST" \
--with-unit-test
cov-build --dir cov-int make V=1 -j10
- name: Submit the result to Coverity Scan
run: |
tar czvf finalcut.tgz cov-int
curl \
--form token=$COVERITY_SCAN_TOKEN \
--form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \
--form file=@finalcut.tgz \
--form version="main" \
--form description="Build submitted via github action" \
https://scan.coverity.com/builds?project=gansm%2Ffinalcut
- name: Make unit test
run: |
script -e -c "make check" && RET=$? || RET=$?
cat test/*.log || echo
echo "Exit status: $RET"
exit "$RET"

45
.github/workflows/cygwin.yml vendored Normal file
View File

@ -0,0 +1,45 @@
name: "Cygwin build"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
build:
runs-on: windows-latest
name: Build on ${{ matrix.platform }}
strategy:
matrix:
platform: [x86, x64]
steps:
- name: Install Cygwin
uses: egor-tensin/setup-cygwin@v3
with:
platform: ${{ matrix.platform }}
install-dir: C:\cygwin
packages: git grep make libncurses-devel gcc-core gcc-g++ automake autoconf autoconf-archive libtool pkgconf cppunit
- name: Test on Cygwin environment
run: |
uname -a
whoami
pwd
cygcheck -c -d # Show installed Cygwin packages
g++ --version
mkdir src && cd src
git clone git://github.com/gansm/finalcut.git
cd finalcut || echo "The source code directory was not found!"
autoreconf --force --install --verbose --warnings=all
automake --add-missing --copy
./configure --prefix=/usr
make -j10
shell: C:\cygwin\bin\bash.exe --login '{0}'
env:
SHELLOPTS: igncr

36
.github/workflows/freebsd.yml vendored Normal file
View File

@ -0,0 +1,36 @@
name: "FreeBSD build"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
build:
runs-on: macos-10.15
steps:
- name: Repository checkout
uses: actions/checkout@v2
- name: Test on FreeBSD 12.2
uses: cross-platform-actions/action@v0.0.1
with:
operating_system: freebsd
version: 12.2
shell: bash
run: |
uname -a
freebsd-version
whoami
pwd
sudo pkg update
sudo pkg install -y lang/gcc devel/autotools autotools automake autoconf autoconf-archive libtool pkgconf devel/ncurses devel/cppunit cppunit
g++ --version
autoreconf -v --install --force
./configure --prefix=/usr
make -j10

37
.github/workflows/macos.yml vendored Normal file
View File

@ -0,0 +1,37 @@
name: "macOS build"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
build:
runs-on: macos-latest
steps:
- name: Repository checkout
uses: actions/checkout@v2
- name: Before_install
run: |
uname -a
g++ --version
whoami
pwd
- name: Install dependencies via homebrew
run: |
brew update
brew install automake
brew install autoconf-archive
- name: Build
run: |
autoreconf -v --install --force
./configure --prefix=/usr
make -j10

38
.github/workflows/openbsd.yml vendored Normal file
View File

@ -0,0 +1,38 @@
name: "OpenBSD build"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
build:
runs-on: macos-10.15
steps:
- name: Repository checkout
uses: actions/checkout@v2
- name: Test on OpenBSD 6.8
uses: cross-platform-actions/action@v0.0.1
with:
operating_system: openbsd
version: 6.8
shell: bash
run: |
uname -a
whoami
pwd
# http://ftp.openbsd.org/pub/OpenBSD/6.8/packages/amd64/
sudo pkg_add gcc-8.4.0 g++-8.4.0 automake-1.16.2 autoconf-2.69p3 autoconf-archive libtool pkgconf cppunit
export CXX=eg++
export AUTOCONF_VERSION=2.69
export AUTOMAKE_VERSION=1.16
eg++ --version
autoreconf -v --install --force
./configure --prefix=/usr
make -j10

33
.github/workflows/solaris.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: "Solaris build"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
build:
runs-on: macos-latest
steps:
- name: Repository checkout
uses: actions/checkout@v2
- name: Test on Solaris 11.4
uses: vmactions/solaris-vm@v0.0.3
with:
prepare: pkgutil -y -i gcc5g++ automake autoconf autoconf_archive libtool pkgconfig libcppunit1_12_1 libcppunit_dev
run: |
uname -a
whoami
pwd
cat /etc/release
PATH=/opt/csw/bin:$PATH
export PATH
autoreconf -v --install --force
./configure --prefix=/usr
make

61
.github/workflows/sonarcloud.yml vendored Normal file
View File

@ -0,0 +1,61 @@
name: "SonarCloud analysis"
on:
push:
branches: [ main, actions-test ]
pull_request:
branches: [ main, actions-test ]
schedule:
- cron: '0 7 * * 2'
jobs:
build:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
SONAR_TOKEN: "${{ secrets.SONAR_TOKEN }}"
steps:
- name: Repository checkout
uses: actions/checkout@v2
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Before_install
run: |
lsb_release -a
uname -a
whoami
tty || echo
pwd
- name: Install dependencies via apt-get
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install \
ca-certificates \
gcc \
g++ \
gpm \
wget \
unzip \
libgpm-dev \
libcppunit-dev \
autoconf-archive
- name: Build with SonarCloud
run: |
wget -q "https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip"
unzip -q "build-wrapper-linux-x86.zip" -d "/tmp" || echo
LATEST_VERSION=$(wget -O- https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/ 2>/dev/null | grep 'linux.zip"' | cut -d\" -f2 | tail -n1)
wget -q "https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/$LATEST_VERSION"
unzip -q "$LATEST_VERSION" -d "/tmp" || echo
echo "sonar.host.url=https://sonarcloud.io" >> /tmp/sonar-scanner-*/conf/sonar-scanner.properties
mkdir /tmp/sonar-cache
autoreconf -v --install --force
./configure --prefix=/usr
/tmp/build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir bw-output make all
/tmp/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner

View File

@ -1,187 +0,0 @@
language: cpp
dist: xenial
compiler:
- gcc
addons:
apt:
packages:
- g++
- autotools-dev
- automake
- autoconf
- autoconf-archive
- libtool
- pkg-config
- libglib2.0-dev
- libncurses5-dev
- gpm
- libgpm-dev
- gperf
- libcppunit-dev
homebrew:
packages:
- autoconf-archive
update: true
env:
global:
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
- secure: |-
wvCvMaIm7LoSyWHmpRXvJIetdMnJKsLLxuon6r6BSfpyimoz5FIMEhNhfSt2psv8tJHZgN
/FcMcLhnTuTMIjvtlEtb3syfHDaNs7S2q3rm6LCmuIUU4ECAwAorkMQbXcyh5rgPlDMDiw
CyBE8O1yFQebAFxRoP181+0uI2IiIP/8EW3P5PDSQzds+9fnnwrFS+OeBoUZfxT0F2kj2f
kMXZN4+KmeVIrkqtj8hlRcicLgBPm4hrK5IEUcFLtAbzPj72wkV1duiYG6kqDsATmzMK0m
5EuMhQ/nL/rbSjhrcRZzPFQ7P31ToSwg1I6cyhMjyXSbpwdppZ/RSwTpqDCdq9l4bDDmvI
qizdwYZKcDtyHxm4Zl/LZKwWDsGEelcmuJKfdu+QuTgInGNlqulmDykvbsrk9jTimIzHTb
F8TOn9IpANlTWmvunGeOarvR9qJReZcwSMq41hdMbsUdHiC1arZjKvINcPVuwikzaNq4iA
te6mtSdrfdx1wLxQ6ZYNgKd9hz+uUTlBYl80hkATmq0NPnPQw2KzyG9E6nLrKOy2M0ozO8
bL/epiiMBKJ37X1UcRU4WZYq+peLME8EefcPcXOSWNLwJtR7mtON8uMBrLL9CWmRMFD5Hy
lQYALW2DhCnDBROKB3gxB/VkBGFNE0IPGeDtBGbLqDtKWPQoL125I=
jobs:
include:
#
# Coverity Scan
#
- os: linux
env:
- TEST="Coverity Scan"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- ca-certificates
- gcc
- g++
- gpm
- libgpm-dev
- libcppunit-dev
- autoconf-archive
coverity_scan:
project:
name: gansm/finalcut
description: Build submitted via Travis CI
notification_email: guru.mail@muenster.de
build_command_prepend: "autoreconf -v --install --force && ./configure --prefix=/usr CPPFLAGS='-DDEBUG' CXXFLAGS='-g -O0 -DDEBUG -DUNIT_TEST' --with-unit-test && make clean"
build_command: "make V=1 -j10"
branch_pattern: main
before_install:
- lsb_release -a
- uname -a
- whoami
- echo -n | openssl s_client -CApath /etc/ssl/certs/ -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
script:
- cat /home/travis/build/gansm/finalcut/cov-int/scm_log.txt || echo
- autoreconf -v --install --force
- ./configure --prefix=/usr CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -DUNIT_TEST" --with-unit-test
- make V=1 -j10
- make check
- cat test/*.log || echo
#
# Coveralls + Codecov
#
- os: linux
env:
- TEST="Coveralls"
before_install:
- lsb_release -a
- uname -a
- pip install --user cpp-coveralls
- sudo pip install codecov
script:
- ./build.sh coverage
after_success:
- coveralls --gcov-options '\-lp' -e debian -e doc -e icon -e logo -e m4 -e scripts -e examples
- bash <(curl -s https://codecov.io/bash)
#
# SonarCloud
#
- os: linux
env:
- TEST="sonarcloud"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- ca-certificates
- gcc
- g++
- gpm
- libgpm-dev
- libcppunit-dev
- autoconf-archive
sonarcloud:
organization: "gansm"
token:
secure: |-
Vai4Z9BoLsCdrtra5bP/xM8uZnMLKXWS3AH0Z6NnP6bBIa7o9i44Hg5b80P5yL3w
22NgZcX5BrPNhTFbbsulw+F8OdnDETV1bxrDkAVaLGlw+pVjBFNhwXZzyHTx7rsX
GQ/5ry1gIclRlyUO6atW5zQsImAPkTuMv6fFzjgiN1z5vheOTjOKpKqVZNWOURJT
kKgSqiPgHMlR8JLqlHJ/322YVjOOwTLNPrHV6/TrWFrIHI3nChYYX60394sTzKrv
XkU0uvoiJts0cEk97AWcWEfq5TkF1X9604UOZRifNps9kfNZOHjgUuFUvvo3WE8W
ek9LU/0Ec9kViJEASsSE6VzNXWDqu+VkqisJwchUkn6OxoDILSkJpceco/Rx4dAO
phMSgXjCCsvz5igniVyFUixoBvGo4D1bLO6zZPDVxXMDMhpzQKqwqkJo6FYcl109
rni9IuLvMFDAwUuzCbXlbjSPvdOoDiq+8NY1A0TOtTp4z4q9NCPr6TlCcKrazqnN
Xz4Nxo8xZCHxaH7CaXjBmh91Wp5aIzbwJS9fg6A7e2Is1HJm9YW1j3akBjzT//kE
GhOEiXesrPvH5c9XxyO8ZgnkYjNBAES/9aUn8NZBPgQqcUhWAAe1r9fH4iy3Zj+/
26IUvLfJ05uf1yEAzR9/xDIJFF7Heg1FRtzd6IiAdQ4=
script:
- autoreconf -v --install --force
- ./configure --prefix=/usr
- build-wrapper-linux-x86-64 --out-dir bw-output make all
- sonar-scanner
cache:
directories:
- '$HOME/.sonar/cache'
#
# macOS
#
- os: osx
osx_image: xcode11
env:
- TEST="macOS"
before_install:
- uname -a
- g++ --version
script:
- autoreconf -v --install --force
- ./configure --prefix=/usr
- make -j10
#
# FreeBSD
#
- os: freebsd
env:
- TEST="FreeBSD"
before_install:
- uname -a
- g++ --version
- sudo pkg install -y autoconf-archive
script:
- autoreconf -v --install --force
- ./configure --prefix=/usr
- make -j10
#
# Linux ARM64 build
#
- arch: arm64
os: linux
env:
- TEST="ARM64"
before_install:
- uname -a
- g++ --version
script:
- autoreconf -v --install --force
- ./configure --prefix=/usr
- make -j10

View File

@ -1,3 +1,4 @@
sonar.organization=gansm
sonar.projectKey=gansm_finalcut
sonar.projectName=finalcut
sonar.projectVersion=0.7.2
@ -16,6 +17,9 @@ sonar.links.issue=https://github.com/gansm/finalcut/issues
#----------------------------------------------------------------------
sonar.sources=.
sonar.cfamily.build-wrapper-output=bw-output
sonar.cfamily.threads=2
sonar.cfamily.cache.enabled=true
sonar.cfamily.cache.path=/tmp/sonar-cache
sonar.exclusions=src/include/final/fconfig.h
sonar.coverage.exclusions=**/**

View File

@ -98,12 +98,18 @@ class FMouseData
// Copy constructor
FMouseData (const FMouseData&) = default;
// Move constructor
FMouseData (FMouseData&&) noexcept = default;
// Destructor
virtual ~FMouseData() noexcept;
// copy assignment operator (=)
FMouseData& operator = (const FMouseData&) = default;
// Move assignment operator (=)
FMouseData& operator = (FMouseData&&) noexcept = default;
// Accessors
virtual FString getClassName() const;
const FPoint& getPos() const;

View File

@ -2097,6 +2097,7 @@ void FTermLinuxTest::linuxConsoleTest()
data.setVGAFont (false);
data.setMonochron (false);
data.setTermResized (false);
setenv ("TERM", "linux", 1);
auto& term_detection = finalcut::FTermDetection::getInstance();
finalcut::FTermLinux linux;

View File

@ -371,6 +371,7 @@ void ftermopenbsdTest::netbsdConsoleTest()
data.setVGAFont (false);
data.setMonochron (false);
data.setTermResized (false);
setenv ("TERM", "wsvt25", 1);
// setupterm is needed for tputs in ncurses >= 6.1
setupterm (static_cast<char*>(0), 1, static_cast<int*>(0));
@ -476,6 +477,7 @@ void ftermopenbsdTest::openbsdConsoleTest()
data.setVGAFont (false);
data.setMonochron (false);
data.setTermResized (false);
setenv ("TERM", "vt220", 1);
// setupterm is needed for tputs in ncurses >= 6.1
setupterm (static_cast<char*>(0), 1, static_cast<int*>(0));