Skip to content

Commit

Permalink
Run tests (#125)
Browse files Browse the repository at this point in the history
* [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
  • Loading branch information
inkydragon authored May 24, 2021
1 parent dfb0a1c commit 7e9c7d7
Show file tree
Hide file tree
Showing 6 changed files with 119 additions and 2 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ jobs:

- name: Build
run: meson compile -C build

- name: Run test
run: meson test -C build --verbose

- name: Generate Windows installer
if: matrix.config.os == 'windows-latest'
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ subprojects/fontconfig*
subprojects/freetype2
subprojects/fribidi
subprojects/glib*
subprojects/googletest-*
subprojects/harfbuzz
subprojects/icu
subprojects/libass
Expand Down
1 change: 1 addition & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,7 @@ subdir('libaegisub')
subdir('packages')
subdir('po')
subdir('src')
subdir('tests')

aegisub_cpp_pch = ['src/include/agi_pre.h']
aegisub_c_pch = ['src/include/agi_pre_c.h']
Expand Down
88 changes: 88 additions & 0 deletions tests/meson.build
Original file line number Diff line number Diff line change
@@ -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
)
5 changes: 3 additions & 2 deletions tests/tests/keyframe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ TEST(lagi_keyframe, save) {

TEST(lagi_keyframe, bad_files) {
EXPECT_THROW(Load(""), agi::fs::FileSystemError);
EXPECT_THROW(Load("data/keyframe/empty.txt"), Error);
EXPECT_THROW(Load("data/keyframe/garbage.txt"), Error);
// TODO: use more clearly error type
EXPECT_THROW(Load("data/keyframe/empty.txt"), agi::InvalidInputException);
EXPECT_THROW(Load("data/keyframe/garbage.txt"), agi::InvalidInputException);
}

TEST(lagi_keyframe, xvid) {
Expand Down
23 changes: 23 additions & 0 deletions tests/unset.bat
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 7e9c7d7

Please sign in to comment.