forked from AttorneyOnline/AO2-Client
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request AttorneyOnline#368 from skyedeving/add-tests
Add a CMakeLists, tests, and pipeline to automatically test with Github actions
- Loading branch information
Showing
14 changed files
with
569 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
name: build | ||
|
||
on: | ||
push: | ||
branches: | ||
- add-tests | ||
|
||
env: | ||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | ||
BUILD_TYPE: Release | ||
|
||
jobs: | ||
windows: | ||
runs-on: windows-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: Install Catch2 | ||
shell: bash | ||
run: | | ||
curl -L https://github.com/catchorg/Catch2/archive/v2.13.4.tar.gz -o catch2.tar.gz | ||
tar xvf catch2.tar.gz | ||
cd Catch2-2.13.4 | ||
cmake -Bbuild -H. -DBUILD_TESTING=OFF | ||
cmake --build build/ --target install | ||
- name: Fetch external libs | ||
run: | | ||
# QtApng | ||
curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.4/qtapng-msvc2017_64-5.14.1.zip -o apng.zip | ||
unzip apng.zip | ||
# discord-rpc | ||
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-win.zip -o discord_rpc_win.zip | ||
unzip discord_rpc_win.zip | ||
cp ./discord-rpc/win64-dynamic/lib/discord-rpc.lib ./lib | ||
# BASS | ||
curl http://www.un4seen.com/files/bass24.zip -o bass.zip | ||
unzip bass.zip | ||
cp ./c/x64/bass.lib ./lib | ||
# BASS Opus | ||
curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip | ||
unzip bassopus.zip | ||
cp ./c/x64/bassopus.lib ./lib | ||
- name: Cache Qt | ||
id: cache-qt | ||
uses: actions/cache@v1 | ||
with: | ||
path: ../Qt | ||
key: ${{ runner.os }}-qt5 | ||
|
||
- name: Install Qt | ||
uses: jurplel/install-qt-action@v2 | ||
with: | ||
version: '5.15.2' | ||
cached: ${{steps.cache-qt.outputs.cache-hit}} | ||
|
||
- name: Create Build Environment | ||
run: cmake -E make_directory ${{github.workspace}}/build | ||
|
||
- name: Configure CMake | ||
shell: bash | ||
working-directory: ${{github.workspace}}/build | ||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE | ||
|
||
- name: Build | ||
working-directory: ${{github.workspace}}/build | ||
shell: bash | ||
run: cmake --build . --config $BUILD_TYPE --target Attorney_Online | ||
|
||
- name: Deploy | ||
working-directory: ${{github.workspace}}/build/Release | ||
shell: bash | ||
run: | | ||
windeployqt . | ||
cp ../../msvc2017_64/plugins/imageformats/qapng.dll ./imageformats/ | ||
cp ../../discord-rpc/win64-dynamic/bin/discord-rpc.dll . | ||
cp ../../x64/bass.dll . | ||
cp ../../x64/bassopus.dll . | ||
- name: Upload Artifact | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Attorney_Online-x64 | ||
path: ${{github.workspace}}/build/Release/ | ||
|
||
# linux: | ||
# # The CMake configure and build commands are platform agnostic and should work equally | ||
# # well on Windows or Mac. You can convert this to a matrix build if you need | ||
# # cross-platform coverage. | ||
# # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | ||
# runs-on: ubuntu-20.04 | ||
|
||
# steps: | ||
# - uses: actions/checkout@v2 | ||
|
||
# - name: Install catch2 | ||
# run: | | ||
# curl -L https://github.com/catchorg/Catch2/archive/v2.13.4.tar.gz -o catch2.tar.gz | ||
# tar xvf catch2.tar.gz | ||
# cd Catch2-2.13.4 | ||
# cmake -Bbuild -H. -DBUILD_TESTING=OFF | ||
# sudo cmake --build build/ --target install | ||
|
||
# - name: Fetch external libs | ||
# run: | | ||
# # Download | ||
# curl http://www.un4seen.com/files/bass24-linux.zip -o bass_linux.zip | ||
# curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus_linux.zip | ||
# curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc_linux.zip | ||
# # Extract | ||
# unzip bass_linux.zip | ||
# unzip bassopus_linux.zip | ||
# unzip discord_rpc_linux.zip | ||
# # Copy | ||
# cp x64/libbass.so lib | ||
# cp x64/libbassopus.so lib | ||
# cp discord-rpc/linux-dynamic/lib/libdiscord-rpc.so lib | ||
|
||
# - name: Install Qt5 | ||
# run: sudo apt update -y && sudo apt install -y qt5-default | ||
|
||
# - name: Install QtApng | ||
# run: | | ||
# git clone https://github.com/Skycoder42/QtApng | ||
# cd QtApng | ||
# qmake | ||
# make | ||
# sudo make install | ||
|
||
# - name: Create Build Environment | ||
# # Some projects don't allow in-source building, so create a separate build directory | ||
# # We'll use this as our working directory for all subsequent commands | ||
# run: cmake -E make_directory ${{github.workspace}}/build | ||
|
||
# - name: Configure CMake | ||
# # Use a bash shell so we can use the same syntax for environment variable | ||
# # access regardless of the host operating system | ||
# shell: bash | ||
# env: | ||
# CC: gcc-10 | ||
# CXX: g++-10 | ||
# working-directory: ${{github.workspace}}/build | ||
# # Note the current convention is to use the -S and -B options here to specify source | ||
# # and build directories, but this is only available with CMake 3.13 and higher. | ||
# # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 | ||
# run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE | ||
|
||
# - name: Build | ||
# working-directory: ${{github.workspace}}/build | ||
# shell: bash | ||
# # Execute the build. You can specify a specific target with "--target <NAME>" | ||
# run: cmake --build . --config $BUILD_TYPE --target Attorney_Online | ||
|
||
# - name: Strip | ||
# working-directory: ${{github.workspace}}/build | ||
# shell: bash | ||
# run: strip -s Attorney_Online | ||
|
||
# - name: Compress | ||
# working-directory: ${{github.workspace}}/build | ||
# shell: bash | ||
# run: tar czvf Attorney_Online-linux-x86_64.tgz Attorney_Online | ||
|
||
# - name: Upload Artifact | ||
# uses: actions/upload-artifact@v2 | ||
# with: | ||
# name: Attorney_Online | ||
# path: ${{github.workspace}}/build/Attorney_Online-linux-x86_64.tgz |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
name: test | ||
|
||
on: | ||
push: | ||
branches: | ||
- add-tests | ||
|
||
env: | ||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | ||
BUILD_TYPE: Release | ||
|
||
jobs: | ||
build: | ||
# The CMake configure and build commands are platform agnostic and should work equally | ||
# well on Windows or Mac. You can convert this to a matrix build if you need | ||
# cross-platform coverage. | ||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | ||
runs-on: ubuntu-20.04 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: Install catch2 | ||
run: | | ||
curl -L https://github.com/catchorg/Catch2/archive/v2.13.4.tar.gz -o catch2.tar.gz | ||
tar xvf catch2.tar.gz | ||
cd Catch2-2.13.4 | ||
cmake -Bbuild -H. -DBUILD_TESTING=OFF | ||
sudo cmake --build build/ --target install | ||
- name: Fetch external libs | ||
run: | | ||
# Download | ||
curl http://www.un4seen.com/files/bass24-linux.zip -o bass_linux.zip | ||
curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus_linux.zip | ||
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc_linux.zip | ||
# Extract | ||
unzip bass_linux.zip | ||
unzip bassopus_linux.zip | ||
unzip discord_rpc_linux.zip | ||
# Copy | ||
cp x64/libbass.so lib | ||
cp x64/libbassopus.so lib | ||
cp discord-rpc/linux-dynamic/lib/libdiscord-rpc.so lib | ||
- name: Install Qt5 | ||
run: sudo apt update -y && sudo apt install -y qt5-default | ||
|
||
- name: Install QtApng | ||
run: | | ||
git clone https://github.com/Skycoder42/QtApng | ||
cd QtApng | ||
qmake | ||
make | ||
sudo make install | ||
- name: Create Build Environment | ||
# Some projects don't allow in-source building, so create a separate build directory | ||
# We'll use this as our working directory for all subsequent commands | ||
run: cmake -E make_directory ${{github.workspace}}/build | ||
|
||
- name: Configure CMake | ||
# Use a bash shell so we can use the same syntax for environment variable | ||
# access regardless of the host operating system | ||
shell: bash | ||
env: | ||
CC: gcc-10 | ||
CXX: g++-10 | ||
working-directory: ${{github.workspace}}/build | ||
# Note the current convention is to use the -S and -B options here to specify source | ||
# and build directories, but this is only available with CMake 3.13 and higher. | ||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12 | ||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE | ||
|
||
- name: Build | ||
working-directory: ${{github.workspace}}/build | ||
shell: bash | ||
# Execute the build. You can specify a specific target with "--target <NAME>" | ||
run: cmake --build . --config $BUILD_TYPE --target test | ||
|
||
- name: Test | ||
working-directory: ${{github.workspace}}/build/test | ||
shell: bash | ||
env: | ||
QT_QPA_PLATFORM: offscreen | ||
run: | | ||
ln -s ../../test/*.png . | ||
./test ~[noci] |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# Configure cmake | ||
cmake_minimum_required(VERSION 3.1.0) | ||
cmake_policy(SET CMP0076 NEW) # silence warning | ||
|
||
project(AttorneyOnline) | ||
|
||
set(CMAKE_CXX_STANDARD 20) | ||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||
|
||
set(CMAKE_AUTOMOC ON) | ||
set(CMAKE_AUTORCC ON) | ||
set(CMAKE_AUTOUIC ON) | ||
|
||
if(CMAKE_VERSION VERSION_LESS "3.7.0") | ||
set(CMAKE_INCLUDE_CURRENT_DIR ON) | ||
endif() | ||
|
||
# AO | ||
add_executable(Attorney_Online resources.qrc) | ||
|
||
# WIN32 | ||
if(WIN32) | ||
if(CMAKE_BUILD_TYPE STREQUAL "Release") | ||
set_property(TARGET Attorney_Online PROPERTY WIN32_EXECUTABLE true) | ||
set(APP_ICON_RESOURCE_WINDOWS "${CMAKE_CURRENT_SOURCE_DIR}/resource/logo_ao2.rc") | ||
target_sources(Attorney_Online PRIVATE ${APP_ICON_RESOURCE_WINDOWS}) | ||
endif() | ||
endif() | ||
|
||
# Target Include | ||
target_include_directories(Attorney_Online PRIVATE include) | ||
|
||
# Target Lib | ||
find_package(Qt5 COMPONENTS Core Gui Network Widgets REQUIRED) | ||
target_link_directories(Attorney_Online PRIVATE lib) | ||
target_link_libraries(Attorney_Online PRIVATE Qt5::Core Qt5::Gui Qt5::Network Qt5::Widgets | ||
bass bassopus discord-rpc) | ||
target_compile_definitions(Attorney_Online PRIVATE DISCORD) | ||
|
||
# Subdirectories | ||
add_subdirectory(test) | ||
add_subdirectory(src) | ||
add_subdirectory(include) |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
Running tests requires Catch2 and cmake | ||
|
||
# Running Tests | ||
```sh | ||
mkdir cbuild && cd cbuild | ||
cmake .. | ||
make test | ||
|
||
# usage: run all tests | ||
./test/test | ||
|
||
# usage: Optionally specify tests and success verbosity | ||
./test/test [bass] --success | ||
``` | ||
|
||
# Writing Tests | ||
`[noci]` tag is used to disable a test on Github actions |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
target_sources(Attorney_Online PRIVATE | ||
aoapplication.h | ||
aoblipplayer.h | ||
aobutton.h | ||
aocaseannouncerdialog.h | ||
aocharbutton.h | ||
aoclocklabel.h | ||
aoemotebutton.h | ||
aoevidencebutton.h | ||
aoevidencedisplay.h | ||
aoimage.h | ||
aolayer.h | ||
aolineedit.h | ||
aomusicplayer.h | ||
aooptionsdialog.h | ||
aopacket.h | ||
aosfxplayer.h | ||
aotextarea.h | ||
aotextedit.h | ||
bass.h | ||
bassopus.h | ||
chatlogpiece.h | ||
courtroom.h | ||
datatypes.h | ||
debug_functions.h | ||
demoserver.h | ||
discord-rpc.h | ||
discord_register.h | ||
discord_rich_presence.h | ||
discord_rpc.h | ||
file_functions.h | ||
hardware_functions.h | ||
lobby.h | ||
misc_functions.h | ||
networkmanager.h | ||
scrolltext.h | ||
text_file_functions.h | ||
) |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
IDI_ICON1 ICON "logo_ao2.ico" |
Oops, something went wrong.