Run tests (#125)
* [git] ignore IDE setting, Meson subprojects * [win_installer] rename *.mo -> *.gmo * [win_installer] only add aeg translations * [win_installer] split aeg/wx translations * [win_installer] gen & pack translations * [git] ignore hunspell source dir * [git] ignore uchardet source dir * [test] Generate the test executable run with `meson test` * [test] add tools to remove test data files `unset.bat FULL_PATH` * [test] set to correct Error type * [test] Set Source character sets to UTF-8 for MSVC * [test] move test data files to build_root * [git] remove IDE dir * [git] ignore gtest subprojects * [ci] run test in ci * [meson/test] use more meaningful name * [test] Add more comments and help msg
This commit is contained in:
parent
dfb0a1ca99
commit
7e9c7d7aa0
6 changed files with 119 additions and 2 deletions
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
|
@ -98,6 +98,9 @@ jobs:
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: meson compile -C build
|
run: meson compile -C build
|
||||||
|
|
||||||
|
- name: Run test
|
||||||
|
run: meson test -C build --verbose
|
||||||
|
|
||||||
- name: Generate Windows installer
|
- name: Generate Windows installer
|
||||||
if: matrix.config.os == 'windows-latest'
|
if: matrix.config.os == 'windows-latest'
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -26,6 +26,7 @@ subprojects/fontconfig*
|
||||||
subprojects/freetype2
|
subprojects/freetype2
|
||||||
subprojects/fribidi
|
subprojects/fribidi
|
||||||
subprojects/glib*
|
subprojects/glib*
|
||||||
|
subprojects/googletest-*
|
||||||
subprojects/harfbuzz
|
subprojects/harfbuzz
|
||||||
subprojects/icu
|
subprojects/icu
|
||||||
subprojects/libass
|
subprojects/libass
|
||||||
|
|
|
@ -320,6 +320,7 @@ subdir('libaegisub')
|
||||||
subdir('packages')
|
subdir('packages')
|
||||||
subdir('po')
|
subdir('po')
|
||||||
subdir('src')
|
subdir('src')
|
||||||
|
subdir('tests')
|
||||||
|
|
||||||
aegisub_cpp_pch = ['src/include/agi_pre.h']
|
aegisub_cpp_pch = ['src/include/agi_pre.h']
|
||||||
aegisub_c_pch = ['src/include/agi_pre_c.h']
|
aegisub_c_pch = ['src/include/agi_pre_c.h']
|
||||||
|
|
88
tests/meson.build
Normal file
88
tests/meson.build
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
all_test_deps = []
|
||||||
|
all_test_dep_libs = []
|
||||||
|
all_test_sources = []
|
||||||
|
|
||||||
|
|
||||||
|
gtest_proj = subproject('gtest')
|
||||||
|
gtest_dep = gtest_proj.get_variable('gtest_dep')
|
||||||
|
gmock_dep = gtest_proj.get_variable('gmock_dep')
|
||||||
|
|
||||||
|
|
||||||
|
all_test_deps += [
|
||||||
|
gtest_dep,
|
||||||
|
gmock_dep,
|
||||||
|
iconv_dep,
|
||||||
|
boost_dep
|
||||||
|
]
|
||||||
|
all_test_dep_libs += [
|
||||||
|
libaegisub
|
||||||
|
]
|
||||||
|
all_test_sources += [
|
||||||
|
'support/main.cpp',
|
||||||
|
'support/util.cpp',
|
||||||
|
|
||||||
|
'tests/access.cpp',
|
||||||
|
'tests/audio.cpp',
|
||||||
|
'tests/cajun.cpp',
|
||||||
|
'tests/calltip_provider.cpp',
|
||||||
|
'tests/character_count.cpp',
|
||||||
|
'tests/color.cpp',
|
||||||
|
'tests/dialogue_lexer.cpp',
|
||||||
|
'tests/format.cpp',
|
||||||
|
'tests/fs.cpp',
|
||||||
|
'tests/hotkey.cpp',
|
||||||
|
'tests/iconv.cpp',
|
||||||
|
'tests/ifind.cpp',
|
||||||
|
'tests/karaoke_matcher.cpp',
|
||||||
|
'tests/keyframe.cpp',
|
||||||
|
'tests/line_iterator.cpp',
|
||||||
|
'tests/line_wrap.cpp',
|
||||||
|
'tests/mru.cpp',
|
||||||
|
'tests/option.cpp',
|
||||||
|
'tests/path.cpp',
|
||||||
|
'tests/signals.cpp',
|
||||||
|
'tests/split.cpp',
|
||||||
|
'tests/syntax_highlight.cpp',
|
||||||
|
'tests/thesaurus.cpp',
|
||||||
|
'tests/time.cpp',
|
||||||
|
'tests/type_name.cpp',
|
||||||
|
'tests/util.cpp',
|
||||||
|
'tests/uuencode.cpp',
|
||||||
|
'tests/vfr.cpp',
|
||||||
|
'tests/word_split.cpp'
|
||||||
|
]
|
||||||
|
|
||||||
|
test_inc = include_directories('support')
|
||||||
|
|
||||||
|
# force UTF8 for MSVC
|
||||||
|
if host_machine.system() == 'windows'
|
||||||
|
extra_args = ['/utf-8']
|
||||||
|
else
|
||||||
|
extra_args = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
runner = executable(
|
||||||
|
'gtest-main',
|
||||||
|
all_test_sources,
|
||||||
|
include_directories : [test_inc, libaegisub_inc, deps_inc],
|
||||||
|
dependencies : all_test_deps,
|
||||||
|
cpp_args : extra_args,
|
||||||
|
link_with : all_test_dep_libs,
|
||||||
|
)
|
||||||
|
test('gtest main', runner)
|
||||||
|
|
||||||
|
|
||||||
|
# setup test env
|
||||||
|
if host_machine.system() == 'windows'
|
||||||
|
setup_sh = find_program('setup.bat')
|
||||||
|
else
|
||||||
|
setup_sh = find_program('setup.sh')
|
||||||
|
endif
|
||||||
|
|
||||||
|
test_data_des = meson.project_build_root()
|
||||||
|
custom_target('setup-test-data',
|
||||||
|
input: runner,
|
||||||
|
output: 'applied_test_setup',
|
||||||
|
command: [setup_sh, test_data_des],
|
||||||
|
build_by_default: true
|
||||||
|
)
|
|
@ -41,8 +41,9 @@ TEST(lagi_keyframe, save) {
|
||||||
|
|
||||||
TEST(lagi_keyframe, bad_files) {
|
TEST(lagi_keyframe, bad_files) {
|
||||||
EXPECT_THROW(Load(""), agi::fs::FileSystemError);
|
EXPECT_THROW(Load(""), agi::fs::FileSystemError);
|
||||||
EXPECT_THROW(Load("data/keyframe/empty.txt"), Error);
|
// TODO: use more clearly error type
|
||||||
EXPECT_THROW(Load("data/keyframe/garbage.txt"), Error);
|
EXPECT_THROW(Load("data/keyframe/empty.txt"), agi::InvalidInputException);
|
||||||
|
EXPECT_THROW(Load("data/keyframe/garbage.txt"), agi::InvalidInputException);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(lagi_keyframe, xvid) {
|
TEST(lagi_keyframe, xvid) {
|
||||||
|
|
23
tests/unset.bat
Normal file
23
tests/unset.bat
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
IF [%1]==[] GOTO :help
|
||||||
|
|
||||||
|
|
||||||
|
:main
|
||||||
|
@REM Switch to the build directory
|
||||||
|
cd %1
|
||||||
|
|
||||||
|
@REM Restores all permissions to the four read-only and access denied files
|
||||||
|
icacls data\file_access_denied /grant %USERNAME%:F
|
||||||
|
icacls data\file_read_only /grant %USERNAME%:W
|
||||||
|
icacls data\dir_access_denied /grant %USERNAME%:F
|
||||||
|
icacls data\dir_read_only /grant %USERNAME%:W
|
||||||
|
|
||||||
|
@REM Delete the entire test data folder
|
||||||
|
rmdir /s/q data
|
||||||
|
|
||||||
|
|
||||||
|
:help
|
||||||
|
@REM Show help information
|
||||||
|
ECHO Restore access and delete the test data folder.
|
||||||
|
ECHO Usage: unset PATH_TO_BUILD_DIR
|
Loading…
Reference in a new issue