Log of Meson test suite run on 2026-09-06T04:30:45.351822

Inherited environment: REPODEST=/home/buildozer/packages/ APORTSDIR=/home/buildozer/aports JOBS=64 GOFLAGS='-buildmode=pie -modcacherw -trimpath -buildvcs=false' CTEST_OUTPUT_ON_FAILURE=ON git=/usr/bin/git MAKE_TERMOUT=/dev/pts/5 NINJAFLAGS=-j80 PERL_MM_USE_DEFAULT=1 HARECACHE=/home/buildozer/aports/community/koreader/tmp/hare-cache PWD=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2 SOURCE_DATE_EPOCH=1788668595 CTEST_PARALLEL_LEVEL=80 BUILDCXX=c++ TESSDATA_PREFIX=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/data CARGO_PROFILE_RELEASE_PANIC=abort CXX=g++ CXXFLAGS='-O2 -g -pipe -fomit-frame-pointer -DNDEBUG -fdata-sections -ffunction-sections -ffile-prefix-map=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/= -march=native -fPIC' ABUILD_LAST_COMMIT=fe9c232562b86a8a25daa41023d9438becb1716b LDFLAGS='-Wl,-O1,--as-needed,--gc-sections -Wl,@/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/origin.ldflags -Wl,-z,noexecstack -Wl,--build-id=none' HOME=/home/buildozer CARGO_HOME=/home/buildozer/aports/community/koreader/tmp/cargo SRCDEST=/var/cache/distfiles/edge CARGO_PROFILE_RELEASE_OPT_LEVEL=s RUSTFLAGS=' -Clink-arg=-Wl,-z,pack-relative-relocs' GOTMPDIR=/home/buildozer/aports/community/koreader/tmp CLICOLOR_FORCE=1 CARGO_BUILD_JOBS=80 GOMODCACHE=/home/buildozer/aports/community/koreader/tmp/go NINJA_STATUS='[32;1m▸%p[0m | ' ANDROID_NDK_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/toolchain/android-ndk-r23c PKG_CONFIG_LIBDIR=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/staging/lib/pkgconfig BUILDCC=cc MFLAGS='-j80 --jobserver-auth=fifo:/tmp/GMfifo866563' MAKEFLAGS=' -j80 --jobserver-auth=fifo:/tmp/GMfifo866563' BUILDLDFLAGS='-Wl,--as-needed,-O1,--sort-common -Wl,-z,pack-relative-relocs' ANDROID_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/toolchain/android-sdk-linux TERM=xterm-256color CARGO_PROFILE_RELEASE_LTO=true USER=buildozer BUILDCXXFLAGS='-Os -fstack-clash-protection -Wformat -Werror=format-security -D_GLIBCXX_ASSERTIONS=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST' MAKE_TERMERR=/dev/pts/5 SHLVL=5 BUILDCFLAGS='-Os -fstack-clash-protection -Wformat -Werror=format-security' SAMUFLAGS=-j80 MAKELEVEL=1 ANDROID_SDK_ROOT=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/toolchain/android-sdk-linux CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1 KODEBUG='' CMAKE_BUILD_PARALLEL_LEVEL=80 GIT_CEILING_DIRECTORIES=/home/buildozer/aports/community/koreader GOCACHE=/home/buildozer/aports/community/koreader/tmp/go MQTT_EXEC_PASSWORD=d57lWgCDj94F ANDROID_NDK_ROOT=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/toolchain/android-ndk-r23c BUILDLD=ld LUA_CPATH='?.so;common/?.so;spec/rocks/lib/lua/5.1/?.so' RUST_LIBC_UNSTABLE_MUSL_V1_2_3=1 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/lib/ninja-build/bin CC=gcc CFLAGS='-O2 -g -pipe -fomit-frame-pointer -DNDEBUG -fdata-sections -ffunction-sections -ffile-prefix-map=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/= -march=native -fPIC' BUILDCPPFLAGS='' DFLAGS=-Os LUA_PATH='?.lua;common/?.lua;frontend/?.lua;spec/rocks/share/lua/5.1/?.lua;spec/rocks/share/lua/5.1/?/init.lua' CMAKE_GENERATOR=Ninja OLDPWD=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2 VERBOSE='' TARGET='' CTEST_NO_TESTS_ACTION=error _=/usr/bin/meson 

==================================== 1/78 ====================================
test:         front - koreader-testrunner:autosuspend
start time:   04:30:45
duration:     0.31s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=70 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_autosuspend LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/autosuspend_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/autosuspend_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/autosuspend_spec.lua[0m:[36m30[0m: [1mAutoSuspend suspend should be able to execute suspend when timing out[0m
[32m[       OK ][0m [36mspec/front/unit/autosuspend_spec.lua[0m:[36m30[0m: [1mAutoSuspend suspend should be able to execute suspend when timing out[0m (2.71 ms)
[32m[ RUN      ][0m [36mspec/front/unit/autosuspend_spec.lua[0m:[36m43[0m: [1mAutoSuspend suspend should be able to deprecate last task[0m
[32m[       OK ][0m [36mspec/front/unit/autosuspend_spec.lua[0m:[36m43[0m: [1mAutoSuspend suspend should be able to deprecate last task[0m (0.86 ms)
[32m[ RUN      ][0m [36mspec/front/unit/autosuspend_spec.lua[0m:[36m88[0m: [1mAutoSuspend shutdown should be able to execute suspend when timing out[0m
[32m[       OK ][0m [36mspec/front/unit/autosuspend_spec.lua[0m:[36m88[0m: [1mAutoSuspend shutdown should be able to execute suspend when timing out[0m (1.66 ms)
[32m[ RUN      ][0m [36mspec/front/unit/autosuspend_spec.lua[0m:[36m101[0m: [1mAutoSuspend shutdown should be able to deprecate last task[0m
[32m[       OK ][0m [36mspec/front/unit/autosuspend_spec.lua[0m:[36m101[0m: [1mAutoSuspend shutdown should be able to deprecate last task[0m (2.11 ms)
[32m[----------][0m 4 tests from spec/front/unit/autosuspend_spec.lua (70.71 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (71.18 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

==================================== 2/78 ====================================
test:         front - koreader-testrunner:batterystat
start time:   04:30:45
duration:     0.31s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_batterystat MALLOC_PERTURB_=87 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/batterystat_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/batterystat_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
[32m[ RUN      ][0m [36mspec/front/unit/batterystat_spec.lua[0m:[36m26[0m: [1mBatteryState plugin tests should record charging time[0m
[32m[       OK ][0m [36mspec/front/unit/batterystat_spec.lua[0m:[36m26[0m: [1mBatteryState plugin tests should record charging time[0m (1.44 ms)
[32m[ RUN      ][0m [36mspec/front/unit/batterystat_spec.lua[0m:[36m72[0m: [1mBatteryState plugin tests should record suspending time[0m
[32m[       OK ][0m [36mspec/front/unit/batterystat_spec.lua[0m:[36m72[0m: [1mBatteryState plugin tests should record suspending time[0m (1.86 ms)
[32m[ RUN      ][0m [36mspec/front/unit/batterystat_spec.lua[0m:[36m115[0m: [1mBatteryState plugin tests should not swap the state when several charging events fired[0m
[32m[       OK ][0m [36mspec/front/unit/batterystat_spec.lua[0m:[36m115[0m: [1mBatteryState plugin tests should not swap the state when several charging events fired[0m (0.37 ms)
[32m[ RUN      ][0m [36mspec/front/unit/batterystat_spec.lua[0m:[36m149[0m: [1mBatteryState plugin tests should not swap the state when several suspending events fired[0m
[32m[       OK ][0m [36mspec/front/unit/batterystat_spec.lua[0m:[36m149[0m: [1mBatteryState plugin tests should not swap the state when several suspending events fired[0m (0.50 ms)
[32m[----------][0m 4 tests from spec/front/unit/batterystat_spec.lua (125.86 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (126.23 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

==================================== 3/78 ====================================
test:         front - koreader-testrunner:cachesqlite
start time:   04:30:45
duration:     0.30s
result:       exit status 0
command:      LSAN_OPTIONS=exitcode=0 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=55 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_cachesqlite /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/cachesqlite_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/cachesqlite_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: sqlite3 [0]
ffi.load: libs/libsqlite3.so.0
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m18[0m: [1mCacheSQLite module CacheSQLite on disk should clear cache[0m
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m18[0m: [1mCacheSQLite module CacheSQLite on disk should clear cache[0m (2.95 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m22[0m: [1mCacheSQLite module CacheSQLite on disk should insert and get[0m
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m22[0m: [1mCacheSQLite module CacheSQLite on disk should insert and get[0m (2.24 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m29[0m: [1mCacheSQLite module CacheSQLite on disk should remove object[0m
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m29[0m: [1mCacheSQLite module CacheSQLite on disk should remove object[0m (4.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m37[0m: [1mCacheSQLite module CacheSQLite on disk should accept regular object[0m
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m37[0m: [1mCacheSQLite module CacheSQLite on disk should accept regular object[0m (2.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m43[0m: [1mCacheSQLite module CacheSQLite on disk should reject giant object[0m
09/06/26-04:30:45 WARN  Too much memory would be claimed by caching test 
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m43[0m: [1mCacheSQLite module CacheSQLite on disk should reject giant object[0m (0.24 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m65[0m: [1mCacheSQLite module CacheSQLite in memory should clear cache[0m
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m65[0m: [1mCacheSQLite module CacheSQLite in memory should clear cache[0m (0.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m69[0m: [1mCacheSQLite module CacheSQLite in memory should insert and get[0m
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m69[0m: [1mCacheSQLite module CacheSQLite in memory should insert and get[0m (0.74 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m76[0m: [1mCacheSQLite module CacheSQLite in memory should remove object[0m
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m76[0m: [1mCacheSQLite module CacheSQLite in memory should remove object[0m (0.50 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m84[0m: [1mCacheSQLite module CacheSQLite in memory should accept regular object[0m
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m84[0m: [1mCacheSQLite module CacheSQLite in memory should accept regular object[0m (0.38 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m90[0m: [1mCacheSQLite module CacheSQLite in memory should reject giant object[0m
09/06/26-04:30:45 WARN  Too much memory would be claimed by caching test 
[32m[       OK ][0m [36mspec/front/unit/cachesqlite_spec.lua[0m:[36m90[0m: [1mCacheSQLite module CacheSQLite in memory should reject giant object[0m (0.32 ms)
[32m[----------][0m 10 tests from spec/front/unit/cachesqlite_spec.lua (62.16 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 10 tests from 1 test file ran. (62.72 ms total)
[32m[  PASSED  ][0m 10 tests.
==============================================================================

==================================== 4/78 ====================================
test:         front - koreader-testrunner:datetime
start time:   04:30:45
duration:     0.30s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_datetime MESON_TEST_ITERATION=1 MALLOC_PERTURB_=20 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/datetime_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/datetime_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m9[0m: [1mdatetime module secondsToClock() should convert seconds to 00:00 format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m9[0m: [1mdatetime module secondsToClock() should convert seconds to 00:00 format[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m15[0m: [1mdatetime module secondsToClock() should round seconds to minutes in 00:00 format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m15[0m: [1mdatetime module secondsToClock() should round seconds to minutes in 00:00 format[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m33[0m: [1mdatetime module secondsToClock() should convert seconds to 00:00:00 format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m33[0m: [1mdatetime module secondsToClock() should convert seconds to 00:00:00 format[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m47[0m: [1mdatetime module secondsToClock() should convert seconds to 0d00:00:00 format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m47[0m: [1mdatetime module secondsToClock() should convert seconds to 0d00:00:00 format[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m55[0m: [1mdatetime module secondsToClock() should convert seconds to 0d00:00 format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m55[0m: [1mdatetime module secondsToClock() should convert seconds to 0d00:00 format[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m68[0m: [1mdatetime module secondsToHClock() should convert seconds to 0' format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m68[0m: [1mdatetime module secondsToHClock() should convert seconds to 0' format[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m76[0m: [1mdatetime module secondsToHClock() should round seconds to minutes in 0h00' format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m76[0m: [1mdatetime module secondsToHClock() should round seconds to minutes in 0h00' format[0m (0.38 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m96[0m: [1mdatetime module secondsToHClock() should round seconds to minutes in 0h 0m (thinspace) format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m96[0m: [1mdatetime module secondsToHClock() should round seconds to minutes in 0h 0m (thinspace) format[0m (0.22 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m112[0m: [1mdatetime module secondsToHClock() should round seconds to minutes in 0h 0m (hairspace) format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m112[0m: [1mdatetime module secondsToHClock() should round seconds to minutes in 0h 0m (hairspace) format[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m128[0m: [1mdatetime module secondsToHClock() should convert seconds to 0h00'00'' format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m128[0m: [1mdatetime module secondsToHClock() should convert seconds to 0h00'00'' format[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m145[0m: [1mdatetime module secondsToClockDuration() should change type based on format[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m145[0m: [1mdatetime module secondsToClockDuration() should change type based on format[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m157[0m: [1mdatetime module secondsToClockDuration() should pass along withoutSeconds[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m157[0m: [1mdatetime module secondsToClockDuration() should pass along withoutSeconds[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m171[0m: [1mdatetime module secondsToClockDuration() should pass along withDays[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m171[0m: [1mdatetime module secondsToClockDuration() should pass along withDays[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m188[0m: [1mdatetime module secondsToDate() should deliver a date string[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m188[0m: [1mdatetime module secondsToDate() should deliver a date string[0m (0.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m203[0m: [1mdatetime module secondsToDateTime() should should deliver a date and time string[0m
[32m[       OK ][0m [36mspec/front/unit/datetime_spec.lua[0m:[36m203[0m: [1mdatetime module secondsToDateTime() should should deliver a date and time string[0m (1.09 ms)
[32m[----------][0m 15 tests from spec/front/unit/datetime_spec.lua (30.41 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 15 tests from 1 test file ran. (31.02 ms total)
[32m[  PASSED  ][0m 15 tests.
==============================================================================

==================================== 5/78 ====================================
test:         front - koreader-testrunner:dbg
start time:   04:30:45
duration:     0.30s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=186 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_dbg LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/dbg_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/dbg_spec.lua
[32m[ RUN      ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m16[0m: [1mDbg module setup mt.__call and guard after tunrnOn is called[0m
[32m[       OK ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m16[0m: [1mDbg module setup mt.__call and guard after tunrnOn is called[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m25[0m: [1mDbg module should call pre_gard callback[0m
[32m[       OK ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m25[0m: [1mDbg module should call pre_gard callback[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m40[0m: [1mDbg module should call post_gard callback[0m
[32m[       OK ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m40[0m: [1mDbg module should call post_gard callback[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m55[0m: [1mDbg module should return all values returned by the guarded function[0m
[32m[       OK ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m55[0m: [1mDbg module should return all values returned by the guarded function[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m76[0m: [1mDbg module should set verbose[0m
[32m[       OK ][0m [36mspec/front/unit/dbg_spec.lua[0m:[36m76[0m: [1mDbg module should set verbose[0m (0.09 ms)
[32m[----------][0m 5 tests from spec/front/unit/dbg_spec.lua (2.14 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 5 tests from 1 test file ran. (2.30 ms total)
[32m[  PASSED  ][0m 5 tests.
==============================================================================

==================================== 6/78 ====================================
test:         front - koreader-testrunner:defaults
start time:   04:30:45
duration:     0.30s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_defaults LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=163 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/defaults_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/defaults_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/defaults_spec.lua[0m:[36m11[0m: [1mdefaults module should load all defaults from defaults.lua[0m
[32m[       OK ][0m [36mspec/front/unit/defaults_spec.lua[0m:[36m11[0m: [1mdefaults module should load all defaults from defaults.lua[0m (0.98 ms)
[32m[ RUN      ][0m [36mspec/front/unit/defaults_spec.lua[0m:[36m16[0m: [1mdefaults module should save changes to defaults.custom.lua[0m
[32m[       OK ][0m [36mspec/front/unit/defaults_spec.lua[0m:[36m16[0m: [1mdefaults module should save changes to defaults.custom.lua[0m (2.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/defaults_spec.lua[0m:[36m39[0m: [1mdefaults module should delete entry from defaults.custom.lua if value is reverted back to default[0m
[32m[       OK ][0m [36mspec/front/unit/defaults_spec.lua[0m:[36m39[0m: [1mdefaults module should delete entry from defaults.custom.lua if value is reverted back to default[0m (0.83 ms)
[32m[----------][0m 3 tests from spec/front/unit/defaults_spec.lua (28.66 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (29.06 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

==================================== 7/78 ====================================
test:         front - koreader-testrunner:depgraph
start time:   04:30:45
duration:     0.30s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=66 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_depgraph LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/depgraph_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/depgraph_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m8[0m: [1mDepGraph module should serialize simple graph[0m
[32m[       OK ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m8[0m: [1mDepGraph module should serialize simple graph[0m (0.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m16[0m: [1mDepGraph module should serialize complex graph[0m
[32m[       OK ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m16[0m: [1mDepGraph module should serialize complex graph[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m46[0m: [1mDepGraph module should serialize complex graph2[0m
[32m[       OK ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m46[0m: [1mDepGraph module should serialize complex graph2[0m (0.25 ms)
[32m[ RUN      ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m71[0m: [1mDepGraph module should serialize complex graph with duplicates[0m
[32m[       OK ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m71[0m: [1mDepGraph module should serialize complex graph with duplicates[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m102[0m: [1mDepGraph module should not add duplicate dependencies[0m
[32m[       OK ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m102[0m: [1mDepGraph module should not add duplicate dependencies[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m117[0m: [1mDepGraph module should re-enable disabled dependencies added with addNodeDep[0m
[32m[       OK ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m117[0m: [1mDepGraph module should re-enable disabled dependencies added with addNodeDep[0m (0.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m134[0m: [1mDepGraph module should serialize complex graph and keep dependencies after removing and re-adding[0m
[32m[       OK ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m134[0m: [1mDepGraph module should serialize complex graph and keep dependencies after removing and re-adding[0m (0.19 ms)
[32m[ RUN      ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m175[0m: [1mDepGraph module should not serialize removed/disabled nodes[0m
[32m[       OK ][0m [36mspec/front/unit/depgraph_spec.lua[0m:[36m175[0m: [1mDepGraph module should not serialize removed/disabled nodes[0m (0.26 ms)
[32m[----------][0m 8 tests from spec/front/unit/depgraph_spec.lua (26.39 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 8 tests from 1 test file ran. (26.77 ms total)
[32m[  PASSED  ][0m 8 tests.
==============================================================================

==================================== 8/78 ====================================
test:         front - koreader-testrunner:dispatcher
start time:   04:30:45
duration:     0.29s
result:       exit status 0
command:      MALLOC_PERTURB_=199 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_dispatcher UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/dispatcher_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/dispatcher_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
[32m[ RUN      ][0m [36mspec/front/unit/dispatcher_spec.lua[0m:[36m22[0m: [1mDispatcher runtime actions should add and remove a custom action[0m
[32m[       OK ][0m [36mspec/front/unit/dispatcher_spec.lua[0m:[36m22[0m: [1mDispatcher runtime actions should add and remove a custom action[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/dispatcher_spec.lua[0m:[36m33[0m: [1mDispatcher runtime actions removeAction on missing name does not error[0m
[32m[       OK ][0m [36mspec/front/unit/dispatcher_spec.lua[0m:[36m33[0m: [1mDispatcher runtime actions removeAction on missing name does not error[0m (0.08 ms)
[32m[----------][0m 2 tests from spec/front/unit/dispatcher_spec.lua (113.12 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 2 tests from 1 test file ran. (113.62 ms total)
[32m[  PASSED  ][0m 2 tests.
==============================================================================

==================================== 9/78 ====================================
test:         front - koreader-testrunner:djvudocument
start time:   04:30:45
duration:     0.29s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=104 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_djvudocument LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/djvudocument_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/djvudocument_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/djvudocument_spec.lua[0m:[36m31[0m: [1mDjVu document module should flatten nested line nodes[0m
[32m[       OK ][0m [36mspec/front/unit/djvudocument_spec.lua[0m:[36m31[0m: [1mDjVu document module should flatten nested line nodes[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/djvudocument_spec.lua[0m:[36m48[0m: [1mDjVu document module should preserve source order for direct word children[0m
[32m[       OK ][0m [36mspec/front/unit/djvudocument_spec.lua[0m:[36m48[0m: [1mDjVu document module should preserve source order for direct word children[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/djvudocument_spec.lua[0m:[36m63[0m: [1mDjVu document module should fall back to geometric grouping when only loose words exist[0m
[32m[       OK ][0m [36mspec/front/unit/djvudocument_spec.lua[0m:[36m63[0m: [1mDjVu document module should fall back to geometric grouping when only loose words exist[0m (0.13 ms)
[32m[----------][0m 3 tests from spec/front/unit/djvudocument_spec.lua (27.41 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (27.85 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

=================================== 10/78 ====================================
test:         front - koreader-testrunner:docsettings
start time:   04:30:45
duration:     0.29s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=165 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_docsettings /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/docsettings_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/docsettings_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m17[0m: [1mdocsettings module should generate sidecar folder path in book folder (by default)[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m17[0m: [1mdocsettings module should generate sidecar folder path in book folder (by default)[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m24[0m: [1mdocsettings module should generate sidecar folder path in book folder[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m24[0m: [1mdocsettings module should generate sidecar folder path in book folder[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m31[0m: [1mdocsettings module should generate sidecar folder path in docsettings folder[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m31[0m: [1mdocsettings module should generate sidecar folder path in docsettings folder[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m37[0m: [1mdocsettings module should generate sidecar metadata file (book folder)[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m37[0m: [1mdocsettings module should generate sidecar metadata file (book folder)[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m44[0m: [1mdocsettings module should generate sidecar metadata file (docsettings folder)[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m44[0m: [1mdocsettings module should generate sidecar metadata file (docsettings folder)[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m50[0m: [1mdocsettings module should read legacy history file[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m50[0m: [1mdocsettings module should read legacy history file[0m (4.70 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m85[0m: [1mdocsettings module should respect newest history file[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m85[0m: [1mdocsettings module should respect newest history file[0m (3.25 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m113[0m: [1mdocsettings module should build correct legacy history path[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m113[0m: [1mdocsettings module should build correct legacy history path[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m121[0m: [1mdocsettings module should reserve last good file[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m121[0m: [1mdocsettings module should reserve last good file[0m (3.71 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m180[0m: [1mdocsettings module ignore empty sidecar file should ignore empty file[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m180[0m: [1mdocsettings module ignore empty sidecar file should ignore empty file[0m (2.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m214[0m: [1mdocsettings module ignore empty sidecar file should ignore empty table[0m
[32m[       OK ][0m [36mspec/front/unit/docsettings_spec.lua[0m:[36m214[0m: [1mdocsettings module ignore empty sidecar file should ignore empty table[0m (2.56 ms)
[32m[----------][0m 11 tests from spec/front/unit/docsettings_spec.lua (43.63 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 11 tests from 1 test file ran. (44.18 ms total)
[32m[  PASSED  ][0m 11 tests.
==============================================================================

=================================== 11/78 ====================================
test:         front - koreader-testrunner:document_registry
start time:   04:30:45
duration:     0.28s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_document_registry UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=217 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/document_registry_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/document_registry_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
[32m[ RUN      ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m10[0m: [1mdocument registry module should get preferred rendering engine[0m
[32m[       OK ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m10[0m: [1mdocument registry module should get preferred rendering engine[0m (0.26 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m17[0m: [1mdocument registry module should return all supported rendering engines[0m
[32m[       OK ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m17[0m: [1mdocument registry module should return all supported rendering engines[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m25[0m: [1mdocument registry module should set per-document setting for rendering engine[0m
[32m[       OK ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m25[0m: [1mdocument registry module should set per-document setting for rendering engine[0m (1.19 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m37[0m: [1mdocument registry module should set global setting for rendering engine[0m
[32m[       OK ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m37[0m: [1mdocument registry module should set global setting for rendering engine[0m (0.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m49[0m: [1mdocument registry module should return per-document setting for rendering engine[0m
[32m[       OK ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m49[0m: [1mdocument registry module should return per-document setting for rendering engine[0m (0.97 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m61[0m: [1mdocument registry module should return global setting for rendering engine[0m
[32m[       OK ][0m [36mspec/front/unit/document_registry_spec.lua[0m:[36m61[0m: [1mdocument registry module should return global setting for rendering engine[0m (0.11 ms)
[32m[----------][0m 6 tests from spec/front/unit/document_registry_spec.lua (77.75 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 6 tests from 1 test file ran. (78.21 ms total)
[32m[  PASSED  ][0m 6 tests.
==============================================================================

=================================== 12/78 ====================================
test:         front - koreader-testrunner:eink_optimization
start time:   04:30:45
duration:     0.28s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=109 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_eink_optimization /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/eink_optimization_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/eink_optimization_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/eink_optimization_spec.lua[0m:[36m6[0m: [1meink optimization setting should be correctly loaded[0m
[32m[       OK ][0m [36mspec/front/unit/eink_optimization_spec.lua[0m:[36m6[0m: [1meink optimization setting should be correctly loaded[0m (0.11 ms)
[32m[----------][0m 1 test from spec/front/unit/eink_optimization_spec.lua (24.34 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (24.62 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 13/78 ====================================
test:         front - koreader-testrunner:filemanager
start time:   04:30:45
duration:     0.27s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_filemanager LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/filemanager_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/filemanager_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
[32m[ RUN      ][0m [36mspec/front/unit/filemanager_spec.lua[0m:[36m16[0m: [1mFileManager module should show file manager[0m
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[       OK ][0m [36mspec/front/unit/filemanager_spec.lua[0m:[36m16[0m: [1mFileManager module should show file manager[0m (63.63 ms)
[32m[ RUN      ][0m [36mspec/front/unit/filemanager_spec.lua[0m:[36m26[0m: [1mFileManager module should show error on non-existent file[0m
[32m[       OK ][0m [36mspec/front/unit/filemanager_spec.lua[0m:[36m26[0m: [1mFileManager module should show error on non-existent file[0m (9.97 ms)
[32m[ RUN      ][0m [36mspec/front/unit/filemanager_spec.lua[0m:[36m44[0m: [1mFileManager module should not delete not empty sidecar folder[0m
[32m[       OK ][0m [36mspec/front/unit/filemanager_spec.lua[0m:[36m44[0m: [1mFileManager module should not delete not empty sidecar folder[0m (6.39 ms)
[32m[ RUN      ][0m [36mspec/front/unit/filemanager_spec.lua[0m:[36m77[0m: [1mFileManager module should delete document with its settings[0m
[32m[       OK ][0m [36mspec/front/unit/filemanager_spec.lua[0m:[36m77[0m: [1mFileManager module should delete document with its settings[0m (6.14 ms)
[32m[----------][0m 4 tests from spec/front/unit/filemanager_spec.lua (180.09 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (180.53 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

=================================== 14/78 ====================================
test:         front - koreader-testrunner:filemanagerconverter
start time:   04:30:45
duration:     0.27s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_filemanagerconverter UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=80 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/filemanagerconverter_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/filemanagerconverter_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/filemanagerconverter_spec.lua[0m:[36m7[0m: [1mFileConverter module should show conversion support for Markdown[0m
[32m[       OK ][0m [36mspec/front/unit/filemanagerconverter_spec.lua[0m:[36m7[0m: [1mFileConverter module should show conversion support for Markdown[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/filemanagerconverter_spec.lua[0m:[36m10[0m: [1mFileConverter module should not show conversion support for PDF[0m
[32m[       OK ][0m [36mspec/front/unit/filemanagerconverter_spec.lua[0m:[36m10[0m: [1mFileConverter module should not show conversion support for PDF[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/filemanagerconverter_spec.lua[0m:[36m13[0m: [1mFileConverter module should convert Markdown to HTML[0m
[32m[       OK ][0m [36mspec/front/unit/filemanagerconverter_spec.lua[0m:[36m13[0m: [1mFileConverter module should convert Markdown to HTML[0m (1.85 ms)
[32m[----------][0m 3 tests from spec/front/unit/filemanagerconverter_spec.lua (59.58 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (59.90 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

=================================== 15/78 ====================================
test:         front - koreader-testrunner:focusmanager
start time:   04:30:45
duration:     0.26s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=30 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_focusmanager /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/focusmanager_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/focusmanager_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m37[0m: [1mFocusManager module should go right[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m37[0m: [1mFocusManager module should go right[0m (0.31 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m44[0m: [1mFocusManager module should go left[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m44[0m: [1mFocusManager module should go left[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m51[0m: [1mFocusManager module should go up[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m51[0m: [1mFocusManager module should go up[0m (0.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m58[0m: [1mFocusManager module should go down[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m58[0m: [1mFocusManager module should go down[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m65[0m: [1mFocusManager module should vertical wrapAround up[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m65[0m: [1mFocusManager module should vertical wrapAround up[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m72[0m: [1mFocusManager module should vertical wrapAround down[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m72[0m: [1mFocusManager module should vertical wrapAround down[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m79[0m: [1mFocusManager module should do vertical step to the right[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m79[0m: [1mFocusManager module should do vertical step to the right[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m86[0m: [1mFocusManager module should do vertical step to the left[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m86[0m: [1mFocusManager module should do vertical step to the left[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m93[0m: [1mFocusManager module should respect left limit[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m93[0m: [1mFocusManager module should respect left limit[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m100[0m: [1mFocusManager module should respect right limit[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m100[0m: [1mFocusManager module should respect right limit[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m107[0m: [1mFocusManager module should move next right[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m107[0m: [1mFocusManager module should move next right[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m114[0m: [1mFocusManager module should move next row at end of row[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m114[0m: [1mFocusManager module should move next row at end of row[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m121[0m: [1mFocusManager module should move next left[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m121[0m: [1mFocusManager module should move next left[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m128[0m: [1mFocusManager module should move previous at start of row[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m128[0m: [1mFocusManager module should move previous at start of row[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m135[0m: [1mFocusManager module should move half rows or columns[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m135[0m: [1mFocusManager module should move half rows or columns[0m (0.25 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m148[0m: [1mFocusManager module should move to specified position[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m148[0m: [1mFocusManager module should move to specified position[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m155[0m: [1mFocusManager module should set layout to nil[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m155[0m: [1mFocusManager module should set layout to nil[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m161[0m: [1mFocusManager module should merge into rows[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m161[0m: [1mFocusManager module should merge into rows[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m178[0m: [1mFocusManager module should merge into rows at specified position[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m178[0m: [1mFocusManager module should merge into rows at specified position[0m (0.22 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m197[0m: [1mFocusManager module should merge into columns[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m197[0m: [1mFocusManager module should merge into columns[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m216[0m: [1mFocusManager module alternative key[0m
[32m[       OK ][0m [36mspec/front/unit/focusmanager_spec.lua[0m:[36m216[0m: [1mFocusManager module alternative key[0m (0.11 ms)
[32m[----------][0m 21 tests from spec/front/unit/focusmanager_spec.lua (56.97 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 21 tests from 1 test file ran. (57.40 ms total)
[32m[  PASSED  ][0m 21 tests.
==============================================================================

=================================== 16/78 ====================================
test:         front - koreader-testrunner:font
start time:   04:30:45
duration:     0.26s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=129 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_font /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/font_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/font_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/font_spec.lua[0m:[36m7[0m: [1mFont module should get face[0m
[32m[       OK ][0m [36mspec/front/unit/font_spec.lua[0m:[36m7[0m: [1mFont module should get face[0m (0.24 ms)
[32m[----------][0m 1 test from spec/front/unit/font_spec.lua (49.46 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (49.98 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 17/78 ====================================
test:         front - koreader-testrunner:frontlight
start time:   04:30:45
duration:     0.26s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=201 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_frontlight LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/frontlight_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/frontlight_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m52[0m: [1mFrontlight function in PowerD should read frontlight intensity during initialization[0m
[32m[       OK ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m52[0m: [1mFrontlight function in PowerD should read frontlight intensity during initialization[0m (1.21 ms)
[32m[ RUN      ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m196[0m: [1mFrontlight function in PowerD should turn on and off frontlight when the frontlight was off[0m
[32m[       OK ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m196[0m: [1mFrontlight function in PowerD should turn on and off frontlight when the frontlight was off[0m (4.29 ms)
[32m[ RUN      ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m200[0m: [1mFrontlight function in PowerD should turn on and off frontlight when the minimum level is 1 and frontlight was off[0m
[32m[       OK ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m200[0m: [1mFrontlight function in PowerD should turn on and off frontlight when the minimum level is 1 and frontlight was off[0m (5.28 ms)
[32m[ RUN      ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m203[0m: [1mFrontlight function in PowerD should turn on and off frontlight when the frontlight was on[0m
[32m[       OK ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m203[0m: [1mFrontlight function in PowerD should turn on and off frontlight when the frontlight was on[0m (6.92 ms)
[32m[ RUN      ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m207[0m: [1mFrontlight function in PowerD should turn on and off frontlight when the minimum level is 1 and frontlight was on[0m
[32m[       OK ][0m [36mspec/front/unit/frontlight_spec.lua[0m:[36m207[0m: [1mFrontlight function in PowerD should turn on and off frontlight when the minimum level is 1 and frontlight was on[0m (4.42 ms)
[32m[----------][0m 5 tests from spec/front/unit/frontlight_spec.lua (81.81 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 5 tests from 1 test file ran. (82.23 ms total)
[32m[  PASSED  ][0m 5 tests.
==============================================================================

=================================== 18/78 ====================================
test:         front - koreader-testrunner:gesturedetector
start time:   04:30:45
duration:     0.26s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_gesturedetector UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=171 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/gesturedetector_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/gesturedetector_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/gesturedetector_spec.lua[0m:[36m28[0m: [1mgesturedetector module adjustGesCoordinate should not translate rotation 0[0m
[32m[       OK ][0m [36mspec/front/unit/gesturedetector_spec.lua[0m:[36m28[0m: [1mgesturedetector module adjustGesCoordinate should not translate rotation 0[0m (0.17 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gesturedetector_spec.lua[0m:[36m35[0m: [1mgesturedetector module adjustGesCoordinate should translate rotation 270[0m
[32m[       OK ][0m [36mspec/front/unit/gesturedetector_spec.lua[0m:[36m35[0m: [1mgesturedetector module adjustGesCoordinate should translate rotation 270[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gesturedetector_spec.lua[0m:[36m42[0m: [1mgesturedetector module adjustGesCoordinate should translate rotation 180[0m
[32m[       OK ][0m [36mspec/front/unit/gesturedetector_spec.lua[0m:[36m42[0m: [1mgesturedetector module adjustGesCoordinate should translate rotation 180[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gesturedetector_spec.lua[0m:[36m49[0m: [1mgesturedetector module adjustGesCoordinate should translate rotation 90[0m
[32m[       OK ][0m [36mspec/front/unit/gesturedetector_spec.lua[0m:[36m49[0m: [1mgesturedetector module adjustGesCoordinate should translate rotation 90[0m (0.12 ms)
[32m[----------][0m 4 tests from spec/front/unit/gesturedetector_spec.lua (26.22 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (26.51 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

=================================== 19/78 ====================================
test:         front - koreader-testrunner:gesturerange
start time:   04:30:45
duration:     0.25s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_gesturerange MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=243 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/gesturerange_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/gesturerange_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/gesturerange_spec.lua[0m:[36m9[0m: [1mgesturerange module should match tap event within range[0m
[32m[       OK ][0m [36mspec/front/unit/gesturerange_spec.lua[0m:[36m9[0m: [1mgesturerange module should match tap event within range[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gesturerange_spec.lua[0m:[36m20[0m: [1mgesturerange module should not match tap event outside of range[0m
[32m[       OK ][0m [36mspec/front/unit/gesturerange_spec.lua[0m:[36m20[0m: [1mgesturerange module should not match tap event outside of range[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gesturerange_spec.lua[0m:[36m31[0m: [1mgesturerange module should match any event within nil range[0m
[32m[       OK ][0m [36mspec/front/unit/gesturerange_spec.lua[0m:[36m31[0m: [1mgesturerange module should match any event within nil range[0m (0.05 ms)
[32m[----------][0m 3 tests from spec/front/unit/gesturerange_spec.lua (25.96 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (26.31 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

=================================== 20/78 ====================================
test:         front - koreader-testrunner:gettext
start time:   04:30:45
duration:     0.25s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=20 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_gettext /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/gettext_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/gettext_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m150[0m: [1mGetText module changeLang should return nil when passing newlang = C[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m150[0m: [1mGetText module changeLang should return nil when passing newlang = C[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m153[0m: [1mGetText module changeLang should return nil when passing empty string or nil value[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m153[0m: [1mGetText module changeLang should return nil when passing empty string or nil value[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m157[0m: [1mGetText module changeLang should return nil when passing values that start with en_US[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m157[0m: [1mGetText module changeLang should return nil when passing values that start with en_US[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m162[0m: [1mGetText module changeLang should return false when it can't find a po file[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m162[0m: [1mGetText module changeLang should return false when it can't find a po file[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m169[0m: [1mGetText module cannot find string gettext should return input string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m169[0m: [1mGetText module cannot find string gettext should return input string[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m172[0m: [1mGetText module cannot find string ngettext should return input string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m172[0m: [1mGetText module cannot find string ngettext should return input string[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m176[0m: [1mGetText module cannot find string pgettext should return input string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m176[0m: [1mGetText module cannot find string pgettext should return input string[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m179[0m: [1mGetText module cannot find string npgettext should return input string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m179[0m: [1mGetText module cannot find string npgettext should return input string[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m189[0m: [1mGetText module language with standard plurals gettext should ignore fuzzy strings[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m189[0m: [1mGetText module language with standard plurals gettext should ignore fuzzy strings[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m192[0m: [1mGetText module language with standard plurals gettext should translate multiline string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m192[0m: [1mGetText module language with standard plurals gettext should translate multiline string[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m195[0m: [1mGetText module language with standard plurals ngettext should translate plurals[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m195[0m: [1mGetText module language with standard plurals ngettext should translate plurals[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m200[0m: [1mGetText module language with standard plurals pgettext should distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m200[0m: [1mGetText module language with standard plurals pgettext should distinguish context[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m204[0m: [1mGetText module language with standard plurals npgettext should translate plurals and distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m204[0m: [1mGetText module language with standard plurals npgettext should translate plurals and distinguish context[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m216[0m: [1mGetText module language with simple plurals n > 2 gettext should ignore fuzzy strings[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m216[0m: [1mGetText module language with simple plurals n > 2 gettext should ignore fuzzy strings[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m219[0m: [1mGetText module language with simple plurals n > 2 gettext should translate multiline string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m219[0m: [1mGetText module language with simple plurals n > 2 gettext should translate multiline string[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m222[0m: [1mGetText module language with simple plurals n > 2 ngettext should translate plurals[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m222[0m: [1mGetText module language with simple plurals n > 2 ngettext should translate plurals[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m227[0m: [1mGetText module language with simple plurals n > 2 pgettext should distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m227[0m: [1mGetText module language with simple plurals n > 2 pgettext should distinguish context[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m231[0m: [1mGetText module language with simple plurals n > 2 npgettext should translate plurals and distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m231[0m: [1mGetText module language with simple plurals n > 2 npgettext should translate plurals and distinguish context[0m (0.27 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m245[0m: [1mGetText module language with no plurals gettext should ignore fuzzy strings[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m245[0m: [1mGetText module language with no plurals gettext should ignore fuzzy strings[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m248[0m: [1mGetText module language with no plurals gettext should translate multiline string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m248[0m: [1mGetText module language with no plurals gettext should translate multiline string[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m251[0m: [1mGetText module language with no plurals ngettext should translate plurals[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m251[0m: [1mGetText module language with no plurals ngettext should translate plurals[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m256[0m: [1mGetText module language with no plurals pgettext should distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m256[0m: [1mGetText module language with no plurals pgettext should distinguish context[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m260[0m: [1mGetText module language with no plurals npgettext should translate plurals and distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m260[0m: [1mGetText module language with no plurals npgettext should translate plurals and distinguish context[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m274[0m: [1mGetText module language with complex plurals (Arabic) gettext should ignore fuzzy strings[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m274[0m: [1mGetText module language with complex plurals (Arabic) gettext should ignore fuzzy strings[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m277[0m: [1mGetText module language with complex plurals (Arabic) gettext should translate multiline string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m277[0m: [1mGetText module language with complex plurals (Arabic) gettext should translate multiline string[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m280[0m: [1mGetText module language with complex plurals (Arabic) ngettext should translate plurals[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m280[0m: [1mGetText module language with complex plurals (Arabic) ngettext should translate plurals[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m285[0m: [1mGetText module language with complex plurals (Arabic) pgettext should distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m285[0m: [1mGetText module language with complex plurals (Arabic) pgettext should distinguish context[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m289[0m: [1mGetText module language with complex plurals (Arabic) npgettext should translate plurals and distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m289[0m: [1mGetText module language with complex plurals (Arabic) npgettext should translate plurals and distinguish context[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m305[0m: [1mGetText module language with complex plurals (Russian) gettext should ignore fuzzy strings[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m305[0m: [1mGetText module language with complex plurals (Russian) gettext should ignore fuzzy strings[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m308[0m: [1mGetText module language with complex plurals (Russian) gettext should translate multiline string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m308[0m: [1mGetText module language with complex plurals (Russian) gettext should translate multiline string[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m311[0m: [1mGetText module language with complex plurals (Russian) ngettext should translate plurals[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m311[0m: [1mGetText module language with complex plurals (Russian) ngettext should translate plurals[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m316[0m: [1mGetText module language with complex plurals (Russian) pgettext should distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m316[0m: [1mGetText module language with complex plurals (Russian) pgettext should distinguish context[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m320[0m: [1mGetText module language with complex plurals (Russian) npgettext should translate plurals and distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m320[0m: [1mGetText module language with complex plurals (Russian) npgettext should translate plurals and distinguish context[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m336[0m: [1mGetText module language with many plurals gettext should ignore fuzzy strings[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m336[0m: [1mGetText module language with many plurals gettext should ignore fuzzy strings[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m339[0m: [1mGetText module language with many plurals gettext should translate multiline string[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m339[0m: [1mGetText module language with many plurals gettext should translate multiline string[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m342[0m: [1mGetText module language with many plurals ngettext should translate plurals[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m342[0m: [1mGetText module language with many plurals ngettext should translate plurals[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m347[0m: [1mGetText module language with many plurals ngettext should fallback to default plural if not yet translated[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m347[0m: [1mGetText module language with many plurals ngettext should fallback to default plural if not yet translated[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m359[0m: [1mGetText module language with many plurals pgettext should distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m359[0m: [1mGetText module language with many plurals pgettext should distinguish context[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m363[0m: [1mGetText module language with many plurals npgettext should translate plurals and distinguish context[0m
[32m[       OK ][0m [36mspec/front/unit/gettext_spec.lua[0m:[36m363[0m: [1mGetText module language with many plurals npgettext should translate plurals and distinguish context[0m (0.04 ms)
[32m[----------][0m 39 tests from spec/front/unit/gettext_spec.lua (49.04 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 39 tests from 1 test file ran. (49.38 ms total)
[32m[  PASSED  ][0m 39 tests.
==============================================================================

=================================== 21/78 ====================================
test:         front - koreader-testrunner:hook_container
start time:   04:30:45
duration:     0.25s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=17 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_hook_container /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/hook_container_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/hook_container_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/hook_container_spec.lua[0m:[36m6[0m: [1mHookContainer tests should register and unregister functions[0m
[32m[       OK ][0m [36mspec/front/unit/hook_container_spec.lua[0m:[36m6[0m: [1mHookContainer tests should register and unregister functions[0m (0.82 ms)
[32m[ RUN      ][0m [36mspec/front/unit/hook_container_spec.lua[0m:[36m36[0m: [1mHookContainer tests should register and automatically unregister widget[0m
[32m[       OK ][0m [36mspec/front/unit/hook_container_spec.lua[0m:[36m36[0m: [1mHookContainer tests should register and automatically unregister widget[0m (0.32 ms)
[32m[ RUN      ][0m [36mspec/front/unit/hook_container_spec.lua[0m:[36m52[0m: [1mHookContainer tests should pass widget itself[0m
[32m[       OK ][0m [36mspec/front/unit/hook_container_spec.lua[0m:[36m52[0m: [1mHookContainer tests should pass widget itself[0m (0.17 ms)
[32m[----------][0m 3 tests from spec/front/unit/hook_container_spec.lua (26.32 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (26.72 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

=================================== 22/78 ====================================
test:         front - koreader-testrunner:httpclient
start time:   04:30:45
duration:     0.25s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=85 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_httpclient LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/httpclient_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/httpclient_spec.lua
[32m[----------][0m 0 tests from spec/front/unit/httpclient_spec.lua (0.08 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 0 tests from 1 test file ran. (0.30 ms total)
[32m[  PASSED  ][0m 0 tests.
==============================================================================

=================================== 23/78 ====================================
test:         front - koreader-testrunner:imagewidget
start time:   04:30:45
duration:     0.24s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=114 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_imagewidget /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/imagewidget_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/imagewidget_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/imagewidget_spec.lua[0m:[36m8[0m: [1mImageWidget module should render without error[0m
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
[32m[       OK ][0m [36mspec/front/unit/imagewidget_spec.lua[0m:[36m8[0m: [1mImageWidget module should render without error[0m (53.49 ms)
[32m[----------][0m 1 test from spec/front/unit/imagewidget_spec.lua (80.91 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (81.39 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 24/78 ====================================
test:         front - koreader-testrunner:input
start time:   04:30:45
duration:     0.24s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_input UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=63 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/input_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/input_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/input_spec.lua[0m:[36m44[0m: [1minput module handleTouchEvPhoenix should set cur_slot correctly[0m
[32m[       OK ][0m [36mspec/front/unit/input_spec.lua[0m:[36m44[0m: [1minput module handleTouchEvPhoenix should set cur_slot correctly[0m (0.34 ms)
[32m[ RUN      ][0m [36mspec/front/unit/input_spec.lua[0m:[36m154[0m: [1minput module stylus callback routing routes stylus slots before gesture detection and removes dominated slots[0m
[32m[       OK ][0m [36mspec/front/unit/input_spec.lua[0m:[36m154[0m: [1minput module stylus callback routing routes stylus slots before gesture detection and removes dominated slots[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/input_spec.lua[0m:[36m180[0m: [1minput module stylus callback routing does not turn SDL pen side buttons into eraser tool selectors[0m
[32m[       OK ][0m [36mspec/front/unit/input_spec.lua[0m:[36m180[0m: [1minput module stylus callback routing does not turn SDL pen side buttons into eraser tool selectors[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/input_spec.lua[0m:[36m202[0m: [1minput module stylus callback routing ignores pen tool key events without a stylus tool protocol[0m
[32m[       OK ][0m [36mspec/front/unit/input_spec.lua[0m:[36m202[0m: [1minput module stylus callback routing ignores pen tool key events without a stylus tool protocol[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/input_spec.lua[0m:[36m225[0m: [1minput module stylus callback routing accepts pen tool key events from SDL[0m
[32m[       OK ][0m [36mspec/front/unit/input_spec.lua[0m:[36m225[0m: [1minput module stylus callback routing accepts pen tool key events from SDL[0m (0.14 ms)
[32m[----------][0m 5 tests from spec/front/unit/input_spec.lua (26.94 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 5 tests from 1 test file ran. (27.44 ms total)
[32m[  PASSED  ][0m 5 tests.
==============================================================================

=================================== 25/78 ====================================
test:         front - koreader-testrunner:inputtext
start time:   04:30:45
duration:     0.24s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_inputtext MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=238 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/inputtext_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/inputtext_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/inputtext_spec.lua[0m:[36m12[0m: [1mInputText widget module addChars() should add regular text[0m
[32m[       OK ][0m [36mspec/front/unit/inputtext_spec.lua[0m:[36m12[0m: [1mInputText widget module addChars() should add regular text[0m (0.75 ms)
[32m[ RUN      ][0m [36mspec/front/unit/inputtext_spec.lua[0m:[36m19[0m: [1mInputText widget module addChars() should add unicode text[0m
[32m[       OK ][0m [36mspec/front/unit/inputtext_spec.lua[0m:[36m19[0m: [1mInputText widget module addChars() should add unicode text[0m (1.12 ms)
[32m[----------][0m 2 tests from spec/front/unit/inputtext_spec.lua (68.35 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 2 tests from 1 test file ran. (68.83 ms total)
[32m[  PASSED  ][0m 2 tests.
==============================================================================

=================================== 26/78 ====================================
test:         front - koreader-testrunner:key
start time:   04:30:45
duration:     0.24s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=188 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_key MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/key_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/key_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/key_spec.lua[0m:[36m9[0m: [1mKey module returns the key sequence for string conversion[0m
[32m[       OK ][0m [36mspec/front/unit/key_spec.lua[0m:[36m9[0m: [1mKey module returns the key sequence for string conversion[0m (0.13 ms)
[32m[----------][0m 1 test from spec/front/unit/key_spec.lua (25.72 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (26.03 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 27/78 ====================================
test:         front - koreader-testrunner:kosync
start time:   04:30:45
duration:     0.22s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_kosync MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=42 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/kosync_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/kosync_spec.lua
[32m[----------][0m 0 tests from spec/front/unit/kosync_spec.lua (0.06 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 0 tests from 1 test file ran. (0.29 ms total)
[32m[  PASSED  ][0m 0 tests.
==============================================================================

=================================== 28/78 ====================================
test:         front - koreader-testrunner:luadata
start time:   04:30:45
duration:     0.22s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=150 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_luadata /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/luadata_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/luadata_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m10[0m: [1mluadata module should handle undefined keys[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m10[0m: [1mluadata module should handle undefined keys[0m (0.23 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m22[0m: [1mluadata module should flip bool values[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m22[0m: [1mluadata module should flip bool values[0m (0.25 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m45[0m: [1mluadata module should create child settings[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m45[0m: [1mluadata module should create child settings[0m (0.33 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m77[0m: [1mluadata module table wrapper should add item to table[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m77[0m: [1mluadata module table wrapper should add item to table[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m87[0m: [1mluadata module table wrapper should remove item from table[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m87[0m: [1mluadata module table wrapper should remove item from table[0m (0.26 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m101[0m: [1mluadata module backup data file should generate data file[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m101[0m: [1mluadata module backup data file should generate data file[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m105[0m: [1mluadata module backup data file should generate backup data file on flush[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m105[0m: [1mluadata module backup data file should generate backup data file on flush[0m (0.26 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m112[0m: [1mluadata module backup data file should remove garbage data file[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m112[0m: [1mluadata module backup data file should remove garbage data file[0m (0.53 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m131[0m: [1mluadata module backup data file should open backup data file after garbage removal[0m
[32m[       OK ][0m [36mspec/front/unit/luadata_spec.lua[0m:[36m131[0m: [1mluadata module backup data file should open backup data file after garbage removal[0m (0.43 ms)
[32m[----------][0m 9 tests from spec/front/unit/luadata_spec.lua (29.59 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 9 tests from 1 test file ran. (30.11 ms total)
[32m[  PASSED  ][0m 9 tests.
==============================================================================

=================================== 29/78 ====================================
test:         front - koreader-testrunner:luasettings
start time:   04:30:45
duration:     0.22s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_luasettings MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=215 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/luasettings_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/luasettings_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m9[0m: [1mluasettings module should handle undefined keys[0m
[32m[       OK ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m9[0m: [1mluasettings module should handle undefined keys[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m21[0m: [1mluasettings module should flip bool values[0m
[32m[       OK ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m21[0m: [1mluasettings module should flip bool values[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m44[0m: [1mluasettings module should create child settings[0m
[32m[       OK ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m44[0m: [1mluasettings module should create child settings[0m (0.86 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m75[0m: [1mluasettings module table wrapper should add item to table[0m
[32m[       OK ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m75[0m: [1mluasettings module table wrapper should add item to table[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m85[0m: [1mluasettings module table wrapper should remove item from table[0m
[32m[       OK ][0m [36mspec/front/unit/luasettings_spec.lua[0m:[36m85[0m: [1mluasettings module table wrapper should remove item from table[0m (0.06 ms)
[32m[----------][0m 5 tests from spec/front/unit/luasettings_spec.lua (27.78 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 5 tests from 1 test file ran. (28.27 ms total)
[32m[  PASSED  ][0m 5 tests.
==============================================================================

=================================== 30/78 ====================================
test:         front - koreader-testrunner:menu_table_screen_color
start time:   04:30:45
duration:     0.22s
result:       exit status 0
command:      LSAN_OPTIONS=exitcode=0 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_menu_table_screen_color MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=46 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/menu_table_screen_color_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/menu_table_screen_color_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/menu_table_screen_color_spec.lua[0m:[36m10[0m: [1mmenu table screen color module should toggle color rendering[0m
[32m[       OK ][0m [36mspec/front/unit/menu_table_screen_color_spec.lua[0m:[36m10[0m: [1mmenu table screen color module should toggle color rendering[0m (0.19 ms)
[32m[----------][0m 1 test from spec/front/unit/menu_table_screen_color_spec.lua (26.23 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (26.70 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 31/78 ====================================
test:         front - koreader-testrunner:menusorter
start time:   04:30:45
duration:     0.21s
result:       exit status 0
command:      LSAN_OPTIONS=exitcode=0 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_menusorter UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=156 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/menusorter_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/menusorter_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m8[0m: [1mMenuSorter module should put menu items in the defined order[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m8[0m: [1mMenuSorter module should put menu items in the defined order[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m36[0m: [1mMenuSorter module should attach submenus correctly[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m36[0m: [1mMenuSorter module should attach submenus correctly[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m57[0m: [1mMenuSorter module should put orphans in the first menu[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m57[0m: [1mMenuSorter module should put orphans in the first menu[0m (0.17 ms)
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m83[0m: [1mMenuSorter module should put orphans with sorting_hint in the right menu[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m83[0m: [1mMenuSorter module should put orphans with sorting_hint in the right menu[0m (0.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m156[0m: [1mMenuSorter module should display submenu of orphaned submenu[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m156[0m: [1mMenuSorter module should display submenu of orphaned submenu[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m188[0m: [1mMenuSorter module should not treat disabled as orphans[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m188[0m: [1mMenuSorter module should not treat disabled as orphans[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m210[0m: [1mMenuSorter module should attach separator=true to previous item[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m210[0m: [1mMenuSorter module should attach separator=true to previous item[0m (0.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m232[0m: [1mMenuSorter module should ignore separator as first item[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m232[0m: [1mMenuSorter module should ignore separator as first item[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m254[0m: [1mMenuSorter module should compress menus when items from order are missing[0m
[32m[       OK ][0m [36mspec/front/unit/menusorter_spec.lua[0m:[36m254[0m: [1mMenuSorter module should compress menus when items from order are missing[0m (0.12 ms)
[32m[----------][0m 9 tests from spec/front/unit/menusorter_spec.lua (27.38 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 9 tests from 1 test file ran. (27.78 ms total)
[32m[  PASSED  ][0m 9 tests.
==============================================================================

=================================== 32/78 ====================================
test:         front - koreader-testrunner:mock_time
start time:   04:30:45
duration:     0.21s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_mock_time UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=81 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/mock_time_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/mock_time_spec.lua
[32m[ RUN      ][0m [36mspec/front/unit/mock_time_spec.lua[0m:[36m6[0m: [1mMockTime tests should be able to install and uninstall[0m
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[       OK ][0m [36mspec/front/unit/mock_time_spec.lua[0m:[36m6[0m: [1mMockTime tests should be able to install and uninstall[0m (24.63 ms)
[32m[ RUN      ][0m [36mspec/front/unit/mock_time_spec.lua[0m:[36m22[0m: [1mMockTime tests should be able to install several times[0m
[32m[       OK ][0m [36mspec/front/unit/mock_time_spec.lua[0m:[36m22[0m: [1mMockTime tests should be able to install several times[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/mock_time_spec.lua[0m:[36m34[0m: [1mMockTime tests should reject invalid value[0m
[32m[       OK ][0m [36mspec/front/unit/mock_time_spec.lua[0m:[36m34[0m: [1mMockTime tests should reject invalid value[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/mock_time_spec.lua[0m:[36m42[0m: [1mMockTime tests should increase time[0m
[32m[       OK ][0m [36mspec/front/unit/mock_time_spec.lua[0m:[36m42[0m: [1mMockTime tests should increase time[0m (0.12 ms)
[32m[----------][0m 4 tests from spec/front/unit/mock_time_spec.lua (25.76 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (26.01 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

=================================== 33/78 ====================================
test:         front - koreader-testrunner:network_manager
start time:   04:30:45
duration:     0.21s
result:       exit status 0
command:      LSAN_OPTIONS=exitcode=0 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_network_manager MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=222 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/network_manager_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/network_manager_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m54[0m: [1mnetwork_manager module should restore wifi in init if wifi was on[0m
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[       OK ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m54[0m: [1mnetwork_manager module should restore wifi in init if wifi was on[0m (32.71 ms)
[32m[ RUN      ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m65[0m: [1mnetwork_manager module should not restore wifi in init if wifi was off[0m
[32m[       OK ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m65[0m: [1mnetwork_manager module should not restore wifi in init if wifi was off[0m (0.86 ms)
[32m[ RUN      ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m110[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns false when not connected[0m
[32m[       OK ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m110[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns false when not connected[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m116[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns true when backend cannot report an SSID (non-wpa_supplicant platforms)[0m
[32m[       OK ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m116[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns true when backend cannot report an SSID (non-wpa_supplicant platforms)[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m123[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns true when connected and lease matches the current SSID (no churn)[0m
[32m[       OK ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m123[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns true when connected and lease matches the current SSID (no churn)[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m130[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns false when lease_ssid differs from current SSID (stale lease)[0m
[32m[       OK ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m130[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns false when lease_ssid differs from current SSID (stale lease)[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m137[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns false when lease_ssid is nil even though a SSID is reported[0m
[32m[       OK ][0m [36mspec/front/unit/network_manager_spec.lua[0m:[36m137[0m: [1mNetworkMgr:hasLeaseForCurrentNetwork returns false when lease_ssid is nil even though a SSID is reported[0m (0.14 ms)
[32m[----------][0m 7 tests from spec/front/unit/network_manager_spec.lua (64.14 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 7 tests from 1 test file ran. (64.48 ms total)
[32m[  PASSED  ][0m 7 tests.
==============================================================================

=================================== 34/78 ====================================
test:         front - koreader-testrunner:networksetting
start time:   04:30:45
duration:     0.20s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=119 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_networksetting MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/networksetting_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/networksetting_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/networksetting_spec.lua[0m:[36m10[0m: [1mNetworkSetting module should initialize properly with empty network list[0m
[32m[       OK ][0m [36mspec/front/unit/networksetting_spec.lua[0m:[36m10[0m: [1mNetworkSetting module should initialize properly with empty network list[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/networksetting_spec.lua[0m:[36m15[0m: [1mNetworkSetting module should NOT call connect_callback after disconnect[0m
[32m[       OK ][0m [36mspec/front/unit/networksetting_spec.lua[0m:[36m15[0m: [1mNetworkSetting module should NOT call connect_callback after disconnect[0m (16.63 ms)
[32m[ RUN      ][0m [36mspec/front/unit/networksetting_spec.lua[0m:[36m42[0m: [1mNetworkSetting module should call disconnect_callback after disconnect[0m
[32m[       OK ][0m [36mspec/front/unit/networksetting_spec.lua[0m:[36m42[0m: [1mNetworkSetting module should call disconnect_callback after disconnect[0m (1.40 ms)
[32m[ RUN      ][0m [36mspec/front/unit/networksetting_spec.lua[0m:[36m69[0m: [1mNetworkSetting module should set connected_item to nil after disconnect[0m
[32m[       OK ][0m [36mspec/front/unit/networksetting_spec.lua[0m:[36m69[0m: [1mNetworkSetting module should set connected_item to nil after disconnect[0m (1.98 ms)
[32m[----------][0m 4 tests from spec/front/unit/networksetting_spec.lua (84.08 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (84.59 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

=================================== 35/78 ====================================
test:         front - koreader-testrunner:newsdownloader
start time:   04:30:45
duration:     0.20s
result:       exit status 0
command:      LSAN_OPTIONS=exitcode=0 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_newsdownloader MALLOC_PERTURB_=255 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/newsdownloader_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/newsdownloader_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: sqlite3 [0]
ffi.load: libs/libsqlite3.so.0
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m38[0m: [1mNewsDownloader module RSS feed parsing should parse RSS feed titles correctly[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m38[0m: [1mNewsDownloader module RSS feed parsing should parse RSS feed titles correctly[0m (1.19 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m52[0m: [1mNewsDownloader module RSS feed parsing should parse RSS feed descriptions correctly[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m52[0m: [1mNewsDownloader module RSS feed parsing should parse RSS feed descriptions correctly[0m (0.41 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m68[0m: [1mNewsDownloader module RSS feed parsing should parse RSS feed links correctly[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m68[0m: [1mNewsDownloader module RSS feed parsing should parse RSS feed links correctly[0m (0.46 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m115[0m: [1mNewsDownloader module Atom feed parsing should parse Atom feed titles correctly[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m115[0m: [1mNewsDownloader module Atom feed parsing should parse Atom feed titles correctly[0m (0.63 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m131[0m: [1mNewsDownloader module Atom feed parsing should parse Atom feed content correctly[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m131[0m: [1mNewsDownloader module Atom feed parsing should parse Atom feed content correctly[0m (0.52 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m145[0m: [1mNewsDownloader module Atom feed parsing should parse Atom feed links correctly[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m145[0m: [1mNewsDownloader module Atom feed parsing should parse Atom feed links correctly[0m (0.47 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m162[0m: [1mNewsDownloader module Special case handling should handle single-item RSS feeds properly[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m162[0m: [1mNewsDownloader module Special case handling should handle single-item RSS feeds properly[0m (0.39 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m196[0m: [1mNewsDownloader module Special case handling should handle single-item Atom feeds properly[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m196[0m: [1mNewsDownloader module Special case handling should handle single-item Atom feeds properly[0m (0.48 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m249[0m: [1mNewsDownloader module parseMaxAge returns (nil, nil) for nil (disabled)[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m249[0m: [1mNewsDownloader module parseMaxAge returns (nil, nil) for nil (disabled)[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m255[0m: [1mNewsDownloader module parseMaxAge returns (nil, nil) for empty string (disabled)[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m255[0m: [1mNewsDownloader module parseMaxAge returns (nil, nil) for empty string (disabled)[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m261[0m: [1mNewsDownloader module parseMaxAge parses seconds[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m261[0m: [1mNewsDownloader module parseMaxAge parses seconds[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m265[0m: [1mNewsDownloader module parseMaxAge parses minutes (lowercase m)[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m265[0m: [1mNewsDownloader module parseMaxAge parses minutes (lowercase m)[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m269[0m: [1mNewsDownloader module parseMaxAge parses hours[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m269[0m: [1mNewsDownloader module parseMaxAge parses hours[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m273[0m: [1mNewsDownloader module parseMaxAge parses days[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m273[0m: [1mNewsDownloader module parseMaxAge parses days[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m277[0m: [1mNewsDownloader module parseMaxAge parses weeks[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m277[0m: [1mNewsDownloader module parseMaxAge parses weeks[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m281[0m: [1mNewsDownloader module parseMaxAge parses months (uppercase M, 30d)[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m281[0m: [1mNewsDownloader module parseMaxAge parses months (uppercase M, 30d)[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m285[0m: [1mNewsDownloader module parseMaxAge parses years (365d)[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m285[0m: [1mNewsDownloader module parseMaxAge parses years (365d)[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m289[0m: [1mNewsDownloader module parseMaxAge rejects bare number[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m289[0m: [1mNewsDownloader module parseMaxAge rejects bare number[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m295[0m: [1mNewsDownloader module parseMaxAge rejects 7days[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m295[0m: [1mNewsDownloader module parseMaxAge rejects 7days[0m (0.25 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m301[0m: [1mNewsDownloader module parseMaxAge rejects uppercase D (case-sensitive)[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m301[0m: [1mNewsDownloader module parseMaxAge rejects uppercase D (case-sensitive)[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m307[0m: [1mNewsDownloader module parseMaxAge rejects negative duration[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m307[0m: [1mNewsDownloader module parseMaxAge rejects negative duration[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m313[0m: [1mNewsDownloader module parseMaxAge rejects pure garbage[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m313[0m: [1mNewsDownloader module parseMaxAge rejects pure garbage[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m319[0m: [1mNewsDownloader module parseMaxAge rejects non-string types[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m319[0m: [1mNewsDownloader module parseMaxAge rejects non-string types[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m334[0m: [1mNewsDownloader module getFeedItemTimestamp parses RSS pubDate[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m334[0m: [1mNewsDownloader module getFeedItemTimestamp parses RSS pubDate[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m339[0m: [1mNewsDownloader module getFeedItemTimestamp parses Atom updated[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m339[0m: [1mNewsDownloader module getFeedItemTimestamp parses Atom updated[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m344[0m: [1mNewsDownloader module getFeedItemTimestamp parses Atom published[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m344[0m: [1mNewsDownloader module getFeedItemTimestamp parses Atom published[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m349[0m: [1mNewsDownloader module getFeedItemTimestamp returns nil when no date fields present[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m349[0m: [1mNewsDownloader module getFeedItemTimestamp returns nil when no date fields present[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m353[0m: [1mNewsDownloader module getFeedItemTimestamp returns nil for unparseable date string[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m353[0m: [1mNewsDownloader module getFeedItemTimestamp returns nil for unparseable date string[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m357[0m: [1mNewsDownloader module getFeedItemTimestamp prefers updated over pubDate and published[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m357[0m: [1mNewsDownloader module getFeedItemTimestamp prefers updated over pubDate and published[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m374[0m: [1mNewsDownloader module getFeedItemTimestamp publisher quirk returns nil for an item missing all date fields, so the for-loop processes it without filtering[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_spec.lua[0m:[36m374[0m: [1mNewsDownloader module getFeedItemTimestamp publisher quirk returns nil for an item missing all date fields, so the for-loop processes it without filtering[0m (0.02 ms)
[32m[----------][0m 30 tests from spec/front/unit/newsdownloader_spec.lua (95.38 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 30 tests from 1 test file ran. (96.05 ms total)
[32m[  PASSED  ][0m 30 tests.
==============================================================================

=================================== 36/78 ====================================
test:         front - koreader-testrunner:newsdownloader_url_normalization
start time:   04:30:45
duration:     0.20s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_newsdownloader_url_normalization UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=29 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/newsdownloader_url_normalization_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/newsdownloader_url_normalization_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: sqlite3 [0]
ffi.load: libs/libsqlite3.so.0
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_url_normalization_spec.lua[0m:[36m49[0m: [1mNewsDownloader URL normalization parses a valid RSS fixture[0m
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_url_normalization_spec.lua[0m:[36m49[0m: [1mNewsDownloader URL normalization parses a valid RSS fixture[0m (1.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_url_normalization_spec.lua[0m:[36m66[0m: [1mNewsDownloader URL normalization preserves path separators while encoding spaces[0m
09/06/26-04:30:45 WARN  NewsDownloader: Request didn't return a Content-Type header 
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_url_normalization_spec.lua[0m:[36m66[0m: [1mNewsDownloader URL normalization preserves path separators while encoding spaces[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/newsdownloader_url_normalization_spec.lua[0m:[36m81[0m: [1mNewsDownloader URL normalization preserves existing percent-encoded octets in path[0m
09/06/26-04:30:45 WARN  NewsDownloader: Request didn't return a Content-Type header 
[32m[       OK ][0m [36mspec/front/unit/newsdownloader_url_normalization_spec.lua[0m:[36m81[0m: [1mNewsDownloader URL normalization preserves existing percent-encoded octets in path[0m (0.08 ms)
[32m[----------][0m 3 tests from spec/front/unit/newsdownloader_url_normalization_spec.lua (88.12 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (88.59 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

=================================== 37/78 ====================================
test:         front - koreader-testrunner:nickel_conf
start time:   04:30:45
duration:     0.20s
result:       exit status 0
command:      MALLOC_PERTURB_=2 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_nickel_conf UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/nickel_conf_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/nickel_conf_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m10[0m: [1mNickel configuration module Frontlight module should read value[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m10[0m: [1mNickel configuration module Frontlight module should read value[0m (0.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m31[0m: [1mNickel configuration module Frontlight module should also read value[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m31[0m: [1mNickel configuration module Frontlight module should also read value[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m52[0m: [1mNickel configuration module Frontlight module should have default value[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m52[0m: [1mNickel configuration module Frontlight module should have default value[0m (0.19 ms)
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m70[0m: [1mNickel configuration module Frontlight module should create section[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m70[0m: [1mNickel configuration module Frontlight module should create section[0m (0.24 ms)
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m109[0m: [1mNickel configuration module Frontlight module should replace value[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m109[0m: [1mNickel configuration module Frontlight module should replace value[0m (0.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m141[0m: [1mNickel configuration module Frontlight module should insert entry[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m141[0m: [1mNickel configuration module Frontlight module should insert entry[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m168[0m: [1mNickel configuration module Frontlight module should create config file[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m168[0m: [1mNickel configuration module Frontlight module should create config file[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m187[0m: [1mNickel configuration module Frontlight module should not crash on nil values for regular users[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m187[0m: [1mNickel configuration module Frontlight module should not crash on nil values for regular users[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m213[0m: [1mNickel configuration module Frontlight module should crash on nil values in debug mode[0m
[32m[       OK ][0m [36mspec/front/unit/nickel_conf_spec.lua[0m:[36m213[0m: [1mNickel configuration module Frontlight module should crash on nil values in debug mode[0m (0.36 ms)
[32m[----------][0m 9 tests from spec/front/unit/nickel_conf_spec.lua (28.07 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 9 tests from 1 test file ran. (28.50 ms total)
[32m[  PASSED  ][0m 9 tests.
==============================================================================

=================================== 38/78 ====================================
test:         front - koreader-testrunner:optmath
start time:   04:30:45
duration:     0.19s
result:       exit status 0
command:      MALLOC_PERTURB_=195 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_optmath /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/optmath_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/optmath_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m10[0m: [1mMath module tmin should return nil on empty table[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m10[0m: [1mMath module tmin should return nil on empty table[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m13[0m: [1mMath module tmin should get minimum element in table[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m13[0m: [1mMath module tmin should get minimum element in table[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m16[0m: [1mMath module tmin should get minimum element in table using custom function[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m16[0m: [1mMath module tmin should get minimum element in table using custom function[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m24[0m: [1mMath module tmax should return nil on empty table[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m24[0m: [1mMath module tmax should return nil on empty table[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m27[0m: [1mMath module tmax should get maximum element in table[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m27[0m: [1mMath module tmax should get maximum element in table[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m30[0m: [1mMath module tmax should get maximum element in table using custom function[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m30[0m: [1mMath module tmax should get maximum element in table using custom function[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m37[0m: [1mMath module should round away from zero[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m37[0m: [1mMath module should round away from zero[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m44[0m: [1mMath module should round[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m44[0m: [1mMath module should round[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m51[0m: [1mMath module should determine odd or even[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m51[0m: [1mMath module should determine odd or even[0m (0.22 ms)
[32m[ RUN      ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m62[0m: [1mMath module minmax should return a value within a range[0m
[32m[       OK ][0m [36mspec/front/unit/optmath_spec.lua[0m:[36m62[0m: [1mMath module minmax should return a value within a range[0m (0.23 ms)
[32m[----------][0m 10 tests from spec/front/unit/optmath_spec.lua (27.59 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 10 tests from 1 test file ran. (27.95 ms total)
[32m[  PASSED  ][0m 10 tests.
==============================================================================

=================================== 39/78 ====================================
test:         front - koreader-testrunner:pluginloader
start time:   04:30:45
duration:     0.18s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=198 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_pluginloader /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/pluginloader_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/pluginloader_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m55[0m: [1mPluginLoader module discovers plugins by directory id and matches disabled settings against that id[0m
[32m[       OK ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m55[0m: [1mPluginLoader module discovers plugins by directory id and matches disabled settings against that id[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m78[0m: [1mPluginLoader module normalizes the internal id for enabled plugins[0m
09/06/26-04:30:45 WARN  PluginLoader: test name in _meta.lua, is deprecated and will be ignored. 
[32m[       OK ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m78[0m: [1mPluginLoader module normalizes the internal id for enabled plugins[0m (0.29 ms)
[32m[ RUN      ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m110[0m: [1mPluginLoader module normalizes the internal id for disabled plugins[0m
[32m[       OK ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m110[0m: [1mPluginLoader module normalizes the internal id for disabled plugins[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m136[0m: [1mPluginLoader module stores plugin manager toggles by internal plugin id[0m
[32m[       OK ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m136[0m: [1mPluginLoader module stores plugin manager toggles by internal plugin id[0m (0.51 ms)
[32m[ RUN      ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m164[0m: [1mPluginLoader module calls deletePluginSettings on the loaded plugin instance by internal plugin id[0m
[32m[       OK ][0m [36mspec/front/unit/pluginloader_spec.lua[0m:[36m164[0m: [1mPluginLoader module calls deletePluginSettings on the loaded plugin instance by internal plugin id[0m (0.16 ms)
[32m[----------][0m 5 tests from spec/front/unit/pluginloader_spec.lua (63.67 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 5 tests from 1 test file ran. (64.17 ms total)
[32m[  PASSED  ][0m 5 tests.
==============================================================================

=================================== 40/78 ====================================
test:         front - koreader-testrunner:provider
start time:   04:30:45
duration:     0.18s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=114 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_provider LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/provider_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/provider_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m10[0m: [1mProvider module should fail to register an improper provider[0m
[32m[       OK ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m10[0m: [1mProvider module should fail to register an improper provider[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m13[0m: [1mProvider module should fail to unregister an improper provider[0m
[32m[       OK ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m13[0m: [1mProvider module should fail to unregister an improper provider[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m16[0m: [1mProvider module should register a proper provider with empty implementation[0m
[32m[       OK ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m16[0m: [1mProvider module should register a proper provider with empty implementation[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m19[0m: [1mProvider module should override an implementation for the same name of the same kind[0m
[32m[       OK ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m19[0m: [1mProvider module should override an implementation for the same name of the same kind[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m23[0m: [1mProvider module should unregister a provider[0m
[32m[       OK ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m23[0m: [1mProvider module should unregister a provider[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m26[0m: [1mProvider module should count providers for a specific feature[0m
[32m[       OK ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m26[0m: [1mProvider module should count providers for a specific feature[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m33[0m: [1mProvider module should dump a table of providers for a specific feature[0m
[32m[       OK ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m33[0m: [1mProvider module should dump a table of providers for a specific feature[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m37[0m: [1mProvider module should dump an empty table for an invalid feature[0m
[32m[       OK ][0m [36mspec/front/unit/provider_spec.lua[0m:[36m37[0m: [1mProvider module should dump an empty table for an invalid feature[0m (0.15 ms)
[32m[----------][0m 8 tests from spec/front/unit/provider_spec.lua (26.52 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 8 tests from 1 test file ran. (26.98 ms total)
[32m[  PASSED  ][0m 8 tests.
==============================================================================

=================================== 41/78 ====================================
test:         front - koreader-testrunner:quickstart
start time:   04:30:45
duration:     0.18s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_quickstart MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=137 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/quickstart_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/quickstart_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/quickstart_spec.lua[0m:[36m5[0m: [1mQuickStart module should return false shown_version lower than force_show_version[0m
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[       OK ][0m [36mspec/front/unit/quickstart_spec.lua[0m:[36m5[0m: [1mQuickStart module should return false shown_version lower than force_show_version[0m (34.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/quickstart_spec.lua[0m:[36m12[0m: [1mQuickStart module should return true when shown_version equal to force_show_version[0m
[32m[       OK ][0m [36mspec/front/unit/quickstart_spec.lua[0m:[36m12[0m: [1mQuickStart module should return true when shown_version equal to force_show_version[0m (0.64 ms)
[32m[ RUN      ][0m [36mspec/front/unit/quickstart_spec.lua[0m:[36m19[0m: [1mQuickStart module should return true when shown_version higher than force_show_version[0m
[32m[       OK ][0m [36mspec/front/unit/quickstart_spec.lua[0m:[36m19[0m: [1mQuickStart module should return true when shown_version higher than force_show_version[0m (0.77 ms)
[32m[ RUN      ][0m [36mspec/front/unit/quickstart_spec.lua[0m:[36m26[0m: [1mQuickStart module should return a proper quickstart filename[0m
[32m[       OK ][0m [36mspec/front/unit/quickstart_spec.lua[0m:[36m26[0m: [1mQuickStart module should return a proper quickstart filename[0m (7.71 ms)
[32m[----------][0m 4 tests from spec/front/unit/quickstart_spec.lua (70.04 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (70.41 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

=================================== 42/78 ====================================
test:         front - koreader-testrunner:random
start time:   04:30:45
duration:     0.18s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=166 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_random LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/random_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/random_spec.lua
[32m[ RUN      ][0m [36mspec/front/unit/random_spec.lua[0m:[36m12[0m: [1mrandom package tests should generate uuid without dash[0m
[32m[       OK ][0m [36mspec/front/unit/random_spec.lua[0m:[36m12[0m: [1mrandom package tests should generate uuid without dash[0m (19.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/random_spec.lua[0m:[36m21[0m: [1mrandom package tests should generate uuid with dash[0m
[32m[       OK ][0m [36mspec/front/unit/random_spec.lua[0m:[36m21[0m: [1mrandom package tests should generate uuid with dash[0m (37.21 ms)
[32m[----------][0m 2 tests from spec/front/unit/random_spec.lua (56.81 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 2 tests from 1 test file ran. (57.22 ms total)
[32m[  PASSED  ][0m 2 tests.
==============================================================================

=================================== 43/78 ====================================
test:         front - koreader-testrunner:size
start time:   04:30:45
duration:     0.12s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_size UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=245 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/size_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/size_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/size_spec.lua[0m:[36m8[0m: [1mSize module should get size for window border[0m
[32m[       OK ][0m [36mspec/front/unit/size_spec.lua[0m:[36m8[0m: [1mSize module should get size for window border[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/size_spec.lua[0m:[36m12[0m: [1mSize module should be nil for non-existent property[0m
[32m[       OK ][0m [36mspec/front/unit/size_spec.lua[0m:[36m12[0m: [1mSize module should be nil for non-existent property[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/size_spec.lua[0m:[36m16[0m: [1mSize module should fail for non-existent property when debug is activated[0m
[32m[       OK ][0m [36mspec/front/unit/size_spec.lua[0m:[36m16[0m: [1mSize module should fail for non-existent property when debug is activated[0m (0.25 ms)
[32m[----------][0m 3 tests from spec/front/unit/size_spec.lua (26.67 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (26.96 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

=================================== 44/78 ====================================
test:         front - koreader-testrunner:spore
start time:   04:30:45
duration:     0.12s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=226 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_spore /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/spore_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/spore_spec.lua
[32m[----------][0m 0 tests from spec/front/unit/spore_spec.lua (0.08 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 0 tests from 1 test file ran. (0.41 ms total)
[32m[  PASSED  ][0m 0 tests.
==============================================================================

=================================== 45/78 ====================================
test:         front - koreader-testrunner:time
start time:   04:30:45
duration:     0.11s
result:       exit status 0
command:      MALLOC_PERTURB_=199 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_time /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/time_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/time_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/time_spec.lua[0m:[36m18[0m: [1mTime module should set[0m
[32m[       OK ][0m [36mspec/front/unit/time_spec.lua[0m:[36m18[0m: [1mTime module should set[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/time_spec.lua[0m:[36m28[0m: [1mTime module should convert[0m
[32m[       OK ][0m [36mspec/front/unit/time_spec.lua[0m:[36m28[0m: [1mTime module should convert[0m (0.27 ms)
[32m[ RUN      ][0m [36mspec/front/unit/time_spec.lua[0m:[36m52[0m: [1mTime module should add[0m
[32m[       OK ][0m [36mspec/front/unit/time_spec.lua[0m:[36m52[0m: [1mTime module should add[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/time_spec.lua[0m:[36m61[0m: [1mTime module should subtract[0m
[32m[       OK ][0m [36mspec/front/unit/time_spec.lua[0m:[36m61[0m: [1mTime module should subtract[0m (0.30 ms)
[32m[ RUN      ][0m [36mspec/front/unit/time_spec.lua[0m:[36m95[0m: [1mTime module should derive sec and usec from more than 1 sec worth of usec[0m
[32m[       OK ][0m [36mspec/front/unit/time_spec.lua[0m:[36m95[0m: [1mTime module should derive sec and usec from more than 1 sec worth of usec[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/time_spec.lua[0m:[36m101[0m: [1mTime module should compare[0m
[32m[       OK ][0m [36mspec/front/unit/time_spec.lua[0m:[36m101[0m: [1mTime module should compare[0m (0.35 ms)
[32m[ RUN      ][0m [36mspec/front/unit/time_spec.lua[0m:[36m125[0m: [1mTime module should calculate durations[0m
[32m[       OK ][0m [36mspec/front/unit/time_spec.lua[0m:[36m125[0m: [1mTime module should calculate durations[0m (0.11 ms)
[32m[----------][0m 7 tests from spec/front/unit/time_spec.lua (28.07 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 7 tests from 1 test file ran. (28.37 ms total)
[32m[  PASSED  ][0m 7 tests.
==============================================================================

=================================== 46/78 ====================================
test:         front - koreader-testrunner:cache
start time:   04:30:45
duration:     0.34s
result:       exit status 0
command:      MALLOC_PERTURB_=183 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_cache UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/cache_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/cache_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m17[0m: [1mCache module should clear cache[0m
[32m[       OK ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m17[0m: [1mCache module should clear cache[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m21[0m: [1mCache module should serialize blitbuffer[0m
[32m[       OK ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m21[0m: [1mCache module should serialize blitbuffer[0m (29.77 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m29[0m: [1mCache module should deserialize blitbuffer[0m
[32m[       OK ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m29[0m: [1mCache module should deserialize blitbuffer[0m (4.56 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m36[0m: [1mCache module should serialize koptcontext[0m
[32m[       OK ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m36[0m: [1mCache module should serialize koptcontext[0m (61.56 ms)
[32m[ RUN      ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m47[0m: [1mCache module should deserialize koptcontext[0m
[32m[       OK ][0m [36mspec/front/unit/cache_spec.lua[0m:[36m47[0m: [1mCache module should deserialize koptcontext[0m (4.77 ms)
[32m[----------][0m 5 tests from spec/front/unit/cache_spec.lua (190.87 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 5 tests from 1 test file ran. (191.31 ms total)
[32m[  PASSED  ][0m 5 tests.
----------------------------------- stderr -----------------------------------
Error in boxaSort2d: boxas is empty
Error in boxaSort2d: boxas is empty
Error in boxaaFlattenToBoxa: baa not defined
Error in boxaaFlattenToBoxa: baa not defined
==============================================================================

=================================== 47/78 ====================================
test:         front - koreader-testrunner:uimanager
start time:   04:30:45
duration:     0.10s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_uimanager MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=163 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/uimanager_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/uimanager_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m12[0m: [1mUIManager spec should consume due tasks[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m12[0m: [1mUIManager spec should consume due tasks[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m31[0m: [1mUIManager spec should calculate wait_until properly in checkTasks routine[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m31[0m: [1mUIManager spec should calculate wait_until properly in checkTasks routine[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m46[0m: [1mUIManager spec should return nil wait_until properly in checkTasks routine[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m46[0m: [1mUIManager spec should return nil wait_until properly in checkTasks routine[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m59[0m: [1mUIManager spec should insert new task properly in empty task queue[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m59[0m: [1mUIManager spec should insert new task properly in empty task queue[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m68[0m: [1mUIManager spec should insert new task properly in single task queue[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m68[0m: [1mUIManager spec should insert new task properly in single task queue[0m (0.19 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m95[0m: [1mUIManager spec should insert new task in descendant order[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m95[0m: [1mUIManager spec should insert new task in descendant order[0m (0.32 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m121[0m: [1mUIManager spec should insert new tasks with same times before existing tasks[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m121[0m: [1mUIManager spec should insert new tasks with same times before existing tasks[0m (1.29 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m173[0m: [1mUIManager spec should unschedule all the tasks with the same action[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m173[0m: [1mUIManager spec should unschedule all the tasks with the same action[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m192[0m: [1mUIManager spec should not have race between unschedule and _checkTasks[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m192[0m: [1mUIManager spec should not have race between unschedule and _checkTasks[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m217[0m: [1mUIManager spec should clear _task_queue_dirty bit before looping[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m217[0m: [1mUIManager spec should clear _task_queue_dirty bit before looping[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m226[0m: [1mUIManager spec modal widgets should insert modal widget on top[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m226[0m: [1mUIManager spec modal widgets should insert modal widget on top[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m247[0m: [1mUIManager spec modal widgets should insert second modal widget on top of first modal widget[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m247[0m: [1mUIManager spec modal widgets should insert second modal widget on top of first modal widget[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m262[0m: [1mUIManager spec should check active widgets in order[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m262[0m: [1mUIManager spec should check active widgets in order[0m (0.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m301[0m: [1mUIManager spec should handle stack change when checking for active widgets[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m301[0m: [1mUIManager spec should handle stack change when checking for active widgets[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m374[0m: [1mUIManager spec should handle stack change when broadcasting events[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m374[0m: [1mUIManager spec should handle stack change when broadcasting events[0m (0.34 ms)
[32m[ RUN      ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m459[0m: [1mUIManager spec should handle stack change when closing widgets[0m
[32m[       OK ][0m [36mspec/front/unit/uimanager_spec.lua[0m:[36m459[0m: [1mUIManager spec should handle stack change when closing widgets[0m (0.07 ms)
[32m[----------][0m 16 tests from spec/front/unit/uimanager_spec.lua (33.30 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 16 tests from 1 test file ran. (33.71 ms total)
[32m[  PASSED  ][0m 16 tests.
==============================================================================

=================================== 48/78 ====================================
test:         front - koreader-testrunner:util
start time:   04:30:45
duration:     0.10s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_util MALLOC_PERTURB_=123 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/util_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/util_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m9[0m: [1mutil module should strip punctuation marks around word[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m9[0m: [1mutil module should strip punctuation marks around word[0m (0.20 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m20[0m: [1mutil module gsplit() should split string with patterns[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m20[0m: [1mutil module gsplit() should split string with patterns[0m (0.16 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m28[0m: [1mutil module gsplit() should split command line arguments with quotation[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m28[0m: [1mutil module gsplit() should split command line arguments with quotation[0m (0.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m43[0m: [1mutil module gsplit() should split string with dashes[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m43[0m: [1mutil module gsplit() should split string with dashes[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m50[0m: [1mutil module gsplit() should split string with dashes with final dash[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m50[0m: [1mutil module gsplit() should split string with dashes with final dash[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m60[0m: [1mutil module splitToWords() should split line into words[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m60[0m: [1mutil module splitToWords() should split line into words[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m74[0m: [1mutil module splitToWords() should split ancient greek words[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m74[0m: [1mutil module splitToWords() should split ancient greek words[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m85[0m: [1mutil module splitToWords() should split Chinese words[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m85[0m: [1mutil module splitToWords() should split Chinese words[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m91[0m: [1mutil module splitToWords() should split Japanese words[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m91[0m: [1mutil module splitToWords() should split Japanese words[0m (0.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m98[0m: [1mutil module splitToWords() should split Korean words[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m98[0m: [1mutil module splitToWords() should split Korean words[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m108[0m: [1mutil module splitToWords() should split words of multilingual text[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m108[0m: [1mutil module splitToWords() should split words of multilingual text[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m115[0m: [1mutil module splitToChars() should split text to line - unicode[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m115[0m: [1mutil module splitToChars() should split text to line - unicode[0m (0.53 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m141[0m: [1mutil module splitToChars() should split text to line - CJK Chinese[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m141[0m: [1mutil module splitToChars() should split text to line - CJK Chinese[0m (0.32 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m160[0m: [1mutil module splitToChars() should split text to line - CJK Japanese[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m160[0m: [1mutil module splitToChars() should split text to line - CJK Japanese[0m (0.26 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m180[0m: [1mutil module splitToChars() should split text to line - CJK Korean[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m180[0m: [1mutil module splitToChars() should split text to line - CJK Korean[0m (0.35 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m201[0m: [1mutil module splitToChars() should split text to line - mixed CJK and latin[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m201[0m: [1mutil module splitToChars() should split text to line - mixed CJK and latin[0m (0.53 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m224[0m: [1mutil module splitToChars() should split text to line with next_c - unicode[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m224[0m: [1mutil module splitToChars() should split text to line with next_c - unicode[0m (0.20 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m256[0m: [1mutil module splitToChars() should split text to line with next_c and prev_c - unicode[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m256[0m: [1mutil module splitToChars() should split text to line with next_c and prev_c - unicode[0m (0.21 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m289[0m: [1mutil module should split file path and name[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m289[0m: [1mutil module should split file path and name[0m (0.27 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m306[0m: [1mutil module should split file name and suffix[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m306[0m: [1mutil module should split file name and suffix[0m (0.21 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m324[0m: [1mutil module getSafeFileName() should replace unsafe characters[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m324[0m: [1mutil module getSafeFileName() should replace unsafe characters[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m327[0m: [1mutil module getSafeFileName() should truncate any characters beyond the limit[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m327[0m: [1mutil module getSafeFileName() should truncate any characters beyond the limit[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m330[0m: [1mutil module getSafeFileName() should truncate extension beyond the limit[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m330[0m: [1mutil module getSafeFileName() should truncate extension beyond the limit[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m333[0m: [1mutil module getSafeFileName() should strip HTML from the filename[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m333[0m: [1mutil module getSafeFileName() should strip HTML from the filename[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m339[0m: [1mutil module partialMD5() should calculate partial md5 hash of pdf file[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m339[0m: [1mutil module partialMD5() should calculate partial md5 hash of pdf file[0m (0.55 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m342[0m: [1mutil module partialMD5() should calculate partial md5 hash of epub file[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m342[0m: [1mutil module partialMD5() should calculate partial md5 hash of epub file[0m (0.23 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m348[0m: [1mutil module fixUtf8() should replace invalid UTF-8 characters with an underscore[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m348[0m: [1mutil module fixUtf8() should replace invalid UTF-8 characters with an underscore[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m352[0m: [1mutil module fixUtf8() should replace invalid UTF-8 characters with multiple characters[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m352[0m: [1mutil module fixUtf8() should replace invalid UTF-8 characters with multiple characters[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m356[0m: [1mutil module fixUtf8() should replace invalid UTF-8 characters with empty char[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m356[0m: [1mutil module fixUtf8() should replace invalid UTF-8 characters with empty char[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m360[0m: [1mutil module fixUtf8() should not replace valid UTF-8 � character[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m360[0m: [1mutil module fixUtf8() should not replace valid UTF-8 � character[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m364[0m: [1mutil module fixUtf8() should not replace valid UTF-8 characters[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m364[0m: [1mutil module fixUtf8() should not replace valid UTF-8 characters[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m368[0m: [1mutil module fixUtf8() should not replace valid UTF-8 characters Polish chars[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m368[0m: [1mutil module fixUtf8() should not replace valid UTF-8 characters Polish chars[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m372[0m: [1mutil module fixUtf8() should not replace valid UTF-8 characters German chars[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m372[0m: [1mutil module fixUtf8() should not replace valid UTF-8 characters German chars[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m378[0m: [1mutil module splitToArray() should split input to array[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m378[0m: [1mutil module splitToArray() should split input to array[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m383[0m: [1mutil module splitToArray() should also split input to array[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m383[0m: [1mutil module splitToArray() should also split input to array[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m388[0m: [1mutil module splitToArray() should split input to array without empty entities[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m388[0m: [1mutil module splitToArray() should split input to array without empty entities[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m395[0m: [1mutil module htmlToPlainTextIfHtml() should guess it is not HTML and let is as is[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m395[0m: [1mutil module htmlToPlainTextIfHtml() should guess it is not HTML and let is as is[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m399[0m: [1mutil module htmlToPlainTextIfHtml() should guess it is HTML and convert it to text[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m399[0m: [1mutil module htmlToPlainTextIfHtml() should guess it is HTML and convert it to text[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m403[0m: [1mutil module htmlToPlainTextIfHtml() should guess it is double encoded HTML and convert it to text[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m403[0m: [1mutil module htmlToPlainTextIfHtml() should guess it is double encoded HTML and convert it to text[0m (0.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m410[0m: [1mutil module isEmptyDir() should return true on empty dir[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m410[0m: [1mutil module isEmptyDir() should return true on empty dir[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m413[0m: [1mutil module isEmptyDir() should return false on non-empty dir[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m413[0m: [1mutil module isEmptyDir() should return false on non-empty dir[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m416[0m: [1mutil module isEmptyDir() should return nil on non-existent dir[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m416[0m: [1mutil module isEmptyDir() should return nil on non-existent dir[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m423[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 100.0 GB[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m423[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 100.0 GB[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m427[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 GB[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m427[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 GB[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m431[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 MB[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m431[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 MB[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m435[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 kB[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m435[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 kB[0m (0.01 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m439[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to B[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m439[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to B[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m443[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 100.0 GB with minimum field width alignment[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m443[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 100.0 GB with minimum field width alignment[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m447[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 GB with minimum field width alignment[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m447[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 GB with minimum field width alignment[0m (0.01 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m451[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 MB with minimum field width alignment[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m451[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 MB with minimum field width alignment[0m (0.01 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m455[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 kB with minimum field width alignment[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m455[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to 1.0 kB with minimum field width alignment[0m (0.01 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m459[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to B with minimum field width alignment[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m459[0m: [1mutil module getFriendlySize() should convert bytes to friendly size as string to B with minimum field width alignment[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m464[0m: [1mutil module getFriendlySize() should return nil when input is nil or false[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m464[0m: [1mutil module getFriendlySize() should return nil when input is nil or false[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m468[0m: [1mutil module getFriendlySize() should return nil when input is not a number[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m468[0m: [1mutil module getFriendlySize() should return nil when input is not a number[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m474[0m: [1mutil module urlEncode() and urlDecode should encode string[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m474[0m: [1mutil module urlEncode() and urlDecode should encode string[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m481[0m: [1mutil module urlEncode() and urlDecode should decode string[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m481[0m: [1mutil module urlEncode() and urlDecode should decode string[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/util_spec.lua[0m:[36m488[0m: [1mutil module urlEncode() and urlDecode should encode and back decode string[0m
[32m[       OK ][0m [36mspec/front/unit/util_spec.lua[0m:[36m488[0m: [1mutil module urlEncode() and urlDecode should encode and back decode string[0m (0.05 ms)
[32m[----------][0m 57 tests from spec/front/unit/util_spec.lua (38.46 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 57 tests from 1 test file ran. (38.75 ms total)
[32m[  PASSED  ][0m 57 tests.
==============================================================================

=================================== 49/78 ====================================
test:         front - koreader-testrunner:widget_inputcontainer
start time:   04:30:45
duration:     0.09s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=220 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_widget_inputcontainer UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/widget_inputcontainer_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/widget_inputcontainer_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/widget_inputcontainer_spec.lua[0m:[36m9[0m: [1mInputContainer widget should register touch zones[0m
[32m[       OK ][0m [36mspec/front/unit/widget_inputcontainer_spec.lua[0m:[36m9[0m: [1mInputContainer widget should register touch zones[0m (0.26 ms)
[32m[ RUN      ][0m [36mspec/front/unit/widget_inputcontainer_spec.lua[0m:[36m44[0m: [1mInputContainer widget should support overrides for touch zones[0m
[32m[       OK ][0m [36mspec/front/unit/widget_inputcontainer_spec.lua[0m:[36m44[0m: [1mInputContainer widget should support overrides for touch zones[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/widget_inputcontainer_spec.lua[0m:[36m78[0m: [1mInputContainer widget should support indirect overrides for touch zones[0m
[32m[       OK ][0m [36mspec/front/unit/widget_inputcontainer_spec.lua[0m:[36m78[0m: [1mInputContainer widget should support indirect overrides for touch zones[0m (0.39 ms)
[32m[----------][0m 3 tests from spec/front/unit/widget_inputcontainer_spec.lua (28.21 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (28.64 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

=================================== 50/78 ====================================
test:         front - koreader-testrunner:textboxwidget
start time:   04:30:45
duration:     0.12s
result:       exit status 0
command:      KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_textboxwidget ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=92 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/textboxwidget_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/textboxwidget_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m9[0m: [1mTextBoxWidget module should select the correct word on HoldWord event[0m
[32m[       OK ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m9[0m: [1mTextBoxWidget module should select the correct word on HoldWord event[0m (5.55 ms)
[32m[ RUN      ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m58[0m: [1mTextBoxWidget module should build text cache correctly[0m
[32m[       OK ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m58[0m: [1mTextBoxWidget module should build text cache correctly[0m (0.95 ms)
[32m[ RUN      ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m73[0m: [1mTextBoxWidget module should find text in widget[0m
[32m[       OK ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m73[0m: [1mTextBoxWidget module should find text in widget[0m (0.82 ms)
[32m[ RUN      ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m89[0m: [1mTextBoxWidget module should return false when finding nonexistent text[0m
[32m[       OK ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m89[0m: [1mTextBoxWidget module should return false when finding nonexistent text[0m (0.50 ms)
[32m[ RUN      ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m102[0m: [1mTextBoxWidget module should clear search results[0m
[32m[       OK ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m102[0m: [1mTextBoxWidget module should clear search results[0m (0.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m126[0m: [1mTextBoxWidget module should build match page list correctly[0m
[32m[       OK ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m126[0m: [1mTextBoxWidget module should build match page list correctly[0m (0.37 ms)
[32m[ RUN      ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m142[0m: [1mTextBoxWidget module should navigate to next page with matches[0m
[32m[       OK ][0m [36mspec/front/unit/textboxwidget_spec.lua[0m:[36m142[0m: [1mTextBoxWidget module should navigate to next page with matches[0m (0.25 ms)
[32m[----------][0m 7 tests from spec/front/unit/textboxwidget_spec.lua (63.28 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 7 tests from 1 test file ran. (63.71 ms total)
[32m[  PASSED  ][0m 7 tests.
==============================================================================

=================================== 51/78 ====================================
test:         front - koreader-testrunner:toggleswitch
start time:   04:30:45
duration:     0.12s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=157 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_toggleswitch /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/toggleswitch_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/toggleswitch_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/toggleswitch_spec.lua[0m:[36m8[0m: [1mToggleSwitch module should toggle without args[0m
[32m[       OK ][0m [36mspec/front/unit/toggleswitch_spec.lua[0m:[36m8[0m: [1mToggleSwitch module should toggle without args[0m (0.84 ms)
[32m[----------][0m 1 test from spec/front/unit/toggleswitch_spec.lua (55.00 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (55.34 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 52/78 ====================================
test:         front - koreader-testrunner:widget_progresswidget
start time:   04:30:45
duration:     0.08s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=189 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_widget_progresswidget LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/widget_progresswidget_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/widget_progresswidget_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/widget_progresswidget_spec.lua[0m:[36m9[0m: [1mProgressWidget widget should not crash with nil self.last[0m
[32m[       OK ][0m [36mspec/front/unit/widget_progresswidget_spec.lua[0m:[36m9[0m: [1mProgressWidget widget should not crash with nil self.last[0m (0.28 ms)
[32m[----------][0m 1 test from spec/front/unit/widget_progresswidget_spec.lua (28.57 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (28.94 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 53/78 ====================================
test:         front - koreader-testrunner:wikipedia
start time:   04:30:45
duration:     0.08s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=165 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_wikipedia /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/wikipedia_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/wikipedia_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/wikipedia_spec.lua[0m:[36m8[0m: [1mWikipedia module should return Wikipedia server[0m
[32m[       OK ][0m [36mspec/front/unit/wikipedia_spec.lua[0m:[36m8[0m: [1mWikipedia module should return Wikipedia server[0m (0.11 ms)
[32m[----------][0m 1 test from spec/front/unit/wikipedia_spec.lua (31.18 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (31.57 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 54/78 ====================================
test:         front - koreader-testrunner:switch_plugin
start time:   04:30:45
duration:     0.13s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_switch_plugin MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=93 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/switch_plugin_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/switch_plugin_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m43[0m: [1mSwitchPlugin should be able to create a enabled plugin[0m
[32m[       OK ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m43[0m: [1mSwitchPlugin should be able to create a enabled plugin[0m (0.32 ms)
[32m[ RUN      ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m68[0m: [1mSwitchPlugin should be able to create a disabled plugin[0m
[32m[       OK ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m68[0m: [1mSwitchPlugin should be able to create a disabled plugin[0m (0.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m89[0m: [1mSwitchPlugin should be able to create a derived enabled plugin[0m
[32m[       OK ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m89[0m: [1mSwitchPlugin should be able to create a derived enabled plugin[0m (0.17 ms)
[32m[ RUN      ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m107[0m: [1mSwitchPlugin should be able to create a derived disabled plugin[0m
[32m[       OK ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m107[0m: [1mSwitchPlugin should be able to create a derived disabled plugin[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m119[0m: [1mSwitchPlugin should be able to create an invisible plugin[0m
[32m[       OK ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m119[0m: [1mSwitchPlugin should be able to create an invisible plugin[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m133[0m: [1mSwitchPlugin should show a correct message box[0m
[32m[       OK ][0m [36mspec/front/unit/switch_plugin_spec.lua[0m:[36m133[0m: [1mSwitchPlugin should show a correct message box[0m (27.37 ms)
[32m[----------][0m 6 tests from spec/front/unit/switch_plugin_spec.lua (85.32 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 6 tests from 1 test file ran. (85.83 ms total)
[32m[  PASSED  ][0m 6 tests.
==============================================================================

=================================== 55/78 ====================================
test:         front - koreader-testrunner:document
start time:   04:30:45
duration:     0.32s
result:       exit status 0
command:      KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_document ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=117 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/document_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/document_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m10[0m: [1mPDF document module should open document[0m
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m10[0m: [1mPDF document module should open document[0m (12.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m15[0m: [1mPDF document module should get page dimensions[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m15[0m: [1mPDF document module should get page dimensions[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m20[0m: [1mPDF document module should get cover image[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m20[0m: [1mPDF document module should get cover image[0m (41.76 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m32[0m: [1mPDF document module should clip page rect to PNG file[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m32[0m: [1mPDF document module should clip page rect to PNG file[0m (49.72 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m36[0m: [1mPDF document module should clip page rect to PNG string[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m36[0m: [1mPDF document module should clip page rect to PNG string[0m (48.67 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m42[0m: [1mPDF document module should close document[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m42[0m: [1mPDF document module should close document[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m57[0m: [1mEPUB document module should open document[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m57[0m: [1mEPUB document module should open document[0m (13.00 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m61[0m: [1mEPUB document module should get cover image[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m61[0m: [1mEPUB document module should get cover image[0m (39.95 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m67[0m: [1mEPUB document module should register droid sans fallback[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m67[0m: [1mEPUB document module should register droid sans fallback[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/document_spec.lua[0m:[36m79[0m: [1mEPUB document module should close document[0m
[32m[       OK ][0m [36mspec/front/unit/document_spec.lua[0m:[36m79[0m: [1mEPUB document module should close document[0m (1.22 ms)
[32m[----------][0m 10 tests from spec/front/unit/document_spec.lua (284.70 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 10 tests from 1 test file ran. (285.22 ms total)
[32m[  PASSED  ][0m 10 tests.
==============================================================================

=================================== 56/78 ====================================
test:         front - koreader-testrunner:wakeupmgr
start time:   04:30:45
duration:     0.10s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_wakeupmgr UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=45 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/wakeupmgr_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/wakeupmgr_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m20[0m: [1mWakeupMgr should add a task[0m
[32m[       OK ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m20[0m: [1mWakeupMgr should add a task[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m25[0m: [1mWakeupMgr should add a task in order[0m
[32m[       OK ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m25[0m: [1mWakeupMgr should add a task in order[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m34[0m: [1mWakeupMgr should execute top task[0m
[32m[       OK ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m34[0m: [1mWakeupMgr should execute top task[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m37[0m: [1mWakeupMgr should have removed executed task from stack[0m
[32m[       OK ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m37[0m: [1mWakeupMgr should have removed executed task from stack[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m41[0m: [1mWakeupMgr should have scheduled next task after execution[0m
[32m[       OK ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m41[0m: [1mWakeupMgr should have scheduled next task after execution[0m (0.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m44[0m: [1mWakeupMgr should remove arbitrary task from stack[0m
[32m[       OK ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m44[0m: [1mWakeupMgr should remove arbitrary task from stack[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m49[0m: [1mWakeupMgr should execute last task[0m
[32m[       OK ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m49[0m: [1mWakeupMgr should execute last task[0m (0.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m52[0m: [1mWakeupMgr should not have scheduled a wakeup without a task[0m
[32m[       OK ][0m [36mspec/front/unit/wakeupmgr_spec.lua[0m:[36m52[0m: [1mWakeupMgr should not have scheduled a wakeup without a task[0m (0.04 ms)
[32m[----------][0m 8 tests from spec/front/unit/wakeupmgr_spec.lua (60.88 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 8 tests from 1 test file ran. (61.52 ms total)
[32m[  PASSED  ][0m 8 tests.
==============================================================================

=================================== 57/78 ====================================
test:         front - koreader-testrunner:touch_probe
start time:   04:30:45
duration:     0.12s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_touch_probe UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=169 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/touch_probe_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/touch_probe_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/touch_probe_spec.lua[0m:[36m7[0m: [1mtouch probe module should probe properly for kobo touch[0m
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[       OK ][0m [36mspec/front/unit/touch_probe_spec.lua[0m:[36m7[0m: [1mtouch probe module should probe properly for kobo touch[0m (51.64 ms)
[32m[----------][0m 1 test from spec/front/unit/touch_probe_spec.lua (76.90 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (77.37 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 58/78 ====================================
test:         front - koreader-testrunner:widget_menu
start time:   04:30:45
duration:     0.09s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_widget_menu LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=51 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/widget_menu_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/widget_menu_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/widget_menu_spec.lua[0m:[36m8[0m: [1mMenu widget should convert item table from touch menu properly[0m
[32m[       OK ][0m [36mspec/front/unit/widget_menu_spec.lua[0m:[36m8[0m: [1mMenu widget should convert item table from touch menu properly[0m (0.14 ms)
[32m[----------][0m 1 test from spec/front/unit/widget_menu_spec.lua (57.60 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 1 test from 1 test file ran. (58.15 ms total)
[32m[  PASSED  ][0m 1 test.
==============================================================================

=================================== 59/78 ====================================
test:         front - koreader-testrunner:readhistory
start time:   04:30:45
duration:     0.18s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=9 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readhistory LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readhistory_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readhistory_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m67[0m: [1mReadHistory module should read empty history.lua[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m67[0m: [1mReadHistory module should read empty history.lua[0m (1.30 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m76[0m: [1mReadHistory module should read non-empty history.lua[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m76[0m: [1mReadHistory module should read non-empty history.lua[0m (2.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m88[0m: [1mReadHistory module should order legacy and history.lua[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m88[0m: [1mReadHistory module should order legacy and history.lua[0m (4.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m106[0m: [1mReadHistory module should read legacy history folder[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m106[0m: [1mReadHistory module should read legacy history folder[0m (4.80 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m145[0m: [1mReadHistory module should add item[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m145[0m: [1mReadHistory module should add item[0m (1.25 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m156[0m: [1mReadHistory module should be able to remove the first item[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m156[0m: [1mReadHistory module should be able to remove the first item[0m (3.36 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m178[0m: [1mReadHistory module should be able to remove an item in the middle[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m178[0m: [1mReadHistory module should be able to remove an item in the middle[0m (3.28 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m196[0m: [1mReadHistory module should be able to remove the last item[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m196[0m: [1mReadHistory module should be able to remove the last item[0m (3.42 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m216[0m: [1mReadHistory module should be able to remove two items[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m216[0m: [1mReadHistory module should be able to remove two items[0m (3.89 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m238[0m: [1mReadHistory module should be able to remove three items[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m238[0m: [1mReadHistory module should be able to remove three items[0m (4.83 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m264[0m: [1mReadHistory module should reduce the total count[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m264[0m: [1mReadHistory module should reduce the total count[0m (87.38 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m286[0m: [1mReadHistory module should reload the history file if it updated[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m286[0m: [1mReadHistory module should reload the history file if it updated[0m (2.43 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m349[0m: [1mReadHistory module should automatically remove deleted items from history if setting has been set[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m349[0m: [1mReadHistory module should automatically remove deleted items from history if setting has been set[0m (2.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m356[0m: [1mReadHistory module should not automatically remove deleted items from history if setting has not been set[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m356[0m: [1mReadHistory module should not automatically remove deleted items from history if setting has not been set[0m (1.79 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m362[0m: [1mReadHistory module should not automatically remove deleted items from history if setting has been set to false[0m
[32m[       OK ][0m [36mspec/front/unit/readhistory_spec.lua[0m:[36m362[0m: [1mReadHistory module should not automatically remove deleted items from history if setting has been set to false[0m (1.79 ms)
[32m[----------][0m 15 tests from spec/front/unit/readhistory_spec.lua (156.43 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 15 tests from 1 test file ran. (156.73 ms total)
[32m[  PASSED  ][0m 15 tests.
==============================================================================

=================================== 60/78 ====================================
test:         front - koreader-testrunner:exporter_plugin_main
start time:   04:30:45
duration:     0.35s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=236 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_exporter_plugin_main LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/exporter_plugin_main_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/exporter_plugin_main_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: sqlite3 [0]
ffi.load: libs/libsqlite3.so.0
[32m[ RUN      ][0m [36mspec/front/unit/exporter_plugin_main_spec.lua[0m:[36m80[0m: [1mExporter plugin module should write clippings to a timestamped txt file[0m
[32m[       OK ][0m [36mspec/front/unit/exporter_plugin_main_spec.lua[0m:[36m80[0m: [1mExporter plugin module should write clippings to a timestamped txt file[0m (0.24 ms)
[32m[ RUN      ][0m [36mspec/front/unit/exporter_plugin_main_spec.lua[0m:[36m91[0m: [1mExporter plugin module should fail to export to non configured targets[0m
[32m[       OK ][0m [36mspec/front/unit/exporter_plugin_main_spec.lua[0m:[36m91[0m: [1mExporter plugin module should fail to export to non configured targets[0m (0.05 ms)
[32m[----------][0m 2 tests from spec/front/unit/exporter_plugin_main_spec.lua (320.50 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 2 tests from 1 test file ran. (321.04 ms total)
[32m[  PASSED  ][0m 2 tests.
==============================================================================

=================================== 61/78 ====================================
test:         front - koreader-testrunner:persist
start time:   04:30:45
duration:     0.24s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=133 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_persist /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/persist_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/persist_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m39[0m: [1mPersist module should save a table to file[0m
[32m[       OK ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m39[0m: [1mPersist module should save a table to file[0m (39.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m47[0m: [1mPersist module should generate a valid file[0m
[32m[       OK ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m47[0m: [1mPersist module should generate a valid file[0m (0.21 ms)
[32m[ RUN      ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m61[0m: [1mPersist module should load a table from file[0m
[32m[       OK ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m61[0m: [1mPersist module should load a table from file[0m (20.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m69[0m: [1mPersist module should delete the file[0m
[32m[       OK ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m69[0m: [1mPersist module should delete the file[0m (0.39 ms)
[32m[ RUN      ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m82[0m: [1mPersist module should return standalone serializers/deserializers[0m
[32m[       OK ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m82[0m: [1mPersist module should return standalone serializers/deserializers[0m (47.01 ms)
[32m[ RUN      ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m97[0m: [1mPersist module should work with huge tables[0m
[32m[       OK ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m97[0m: [1mPersist module should work with huge tables[0m (76.35 ms)
[32m[ RUN      ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m107[0m: [1mPersist module should fail to serialize functions[0m
[32m[       OK ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m107[0m: [1mPersist module should fail to serialize functions[0m (0.75 ms)
[32m[ RUN      ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m117[0m: [1mPersist module should successfully serialize functions[0m
[32m[       OK ][0m [36mspec/front/unit/persist_spec.lua[0m:[36m117[0m: [1mPersist module should successfully serialize functions[0m (0.31 ms)
[32m[----------][0m 8 tests from spec/front/unit/persist_spec.lua (215.14 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 8 tests from 1 test file ran. (215.65 ms total)
[32m[  PASSED  ][0m 8 tests.
==============================================================================

=================================== 62/78 ====================================
test:         front - koreader-testrunner:device
start time:   04:30:45
duration:     0.41s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=108 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_device /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/device_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/device_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m86[0m: [1mdevice module kobo should initialize properly on Kobo dahlia[0m
ffi.findlib: fbink_input [1]
ffi.load: libfbink_input.so.1
fbink_input not loaded:	Error loading shared library libfbink_input.so.1: No such file or directory
09/06/26-04:30:45 WARN  We failed to auto-detect the proper input devices, input handling may be inconsistent! 
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m86[0m: [1mdevice module kobo should initialize properly on Kobo dahlia[0m (4.00 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m94[0m: [1mdevice module kobo should setup eventAdjustHooks properly for input on trilogy C[0m
ffi.findlib: fbink_input [1]
ffi.load: libfbink_input.so.1
fbink_input not loaded:	Error loading shared library libfbink_input.so.1: No such file or directory
09/06/26-04:30:45 WARN  We failed to auto-detect the proper input devices, input handling may be inconsistent! 
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m94[0m: [1mdevice module kobo should setup eventAdjustHooks properly for input on trilogy C[0m (2.50 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m137[0m: [1mdevice module kobo should setup eventAdjustHooks properly for trilogy with non-epoch ev time[0m
ffi.findlib: fbink_input [1]
ffi.load: libfbink_input.so.1
fbink_input not loaded:	Error loading shared library libfbink_input.so.1: No such file or directory
09/06/26-04:30:45 WARN  We failed to auto-detect the proper input devices, input handling may be inconsistent! 
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m137[0m: [1mdevice module kobo should setup eventAdjustHooks properly for trilogy with non-epoch ev time[0m (2.95 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m224[0m: [1mdevice module kindle without framework sets framework_lipc_handle[0m
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m224[0m: [1mdevice module kindle without framework sets framework_lipc_handle[0m (2.80 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m231[0m: [1mdevice module kindle without framework reactivates voyage whispertouch keys[0m
ffi.findlib: fbink_input [1]
ffi.load: libfbink_input.so.1
fbink_input not loaded:	Error loading shared library libfbink_input.so.1: No such file or directory
09/06/26-04:30:45 WARN  We failed to auto-detect the proper input devices, input handling may be inconsistent! 
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m231[0m: [1mdevice module kindle without framework reactivates voyage whispertouch keys[0m (2.25 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m252[0m: [1mdevice module kindle with framework does not set framework_lipc_handle[0m
09/06/26-04:30:45 WARN  could not load liblipclua: module 'liblipclua' not found:
	no field package.preload['liblipclua']
	no file 'spec/front/unit/liblipclua.lua'
	no file 'liblipclua.lua'
	no file 'common/liblipclua.lua'
	no file 'frontend/liblipclua.lua'
	no file './csrc/liblipclua.so'
	no file './csrc/liblipclua/liblipclua.so'
	no file 'liblipclua.so'
	no file 'common/liblipclua.so' 
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m252[0m: [1mdevice module kindle with framework does not set framework_lipc_handle[0m (4.43 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m260[0m: [1mdevice module kindle should initialize voyage without error[0m
09/06/26-04:30:45 WARN  could not load liblipclua: module 'liblipclua' not found:
	no field package.preload['liblipclua']
	no file 'spec/front/unit/liblipclua.lua'
	no file 'liblipclua.lua'
	no file 'common/liblipclua.lua'
	no file 'frontend/liblipclua.lua'
	no file './csrc/liblipclua.so'
	no file './csrc/liblipclua/liblipclua.so'
	no file 'liblipclua.so'
	no file 'common/liblipclua.so' 
ffi.findlib: fbink_input [1]
ffi.load: libfbink_input.so.1
fbink_input not loaded:	Error loading shared library libfbink_input.so.1: No such file or directory
09/06/26-04:30:45 WARN  We failed to auto-detect the proper input devices, input handling may be inconsistent! 
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m260[0m: [1mdevice module kindle should initialize voyage without error[0m (3.17 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m273[0m: [1mdevice module kindle should toggle frontlight[0m
ffi.findlib: fbink_input [1]
ffi.load: libfbink_input.so.1
fbink_input not loaded:	Error loading shared library libfbink_input.so.1: No such file or directory
09/06/26-04:30:45 WARN  We failed to auto-detect the proper input devices, input handling may be inconsistent! 
Cannot open file `/sys/class/backlight/max77696-bl/brightness`:	No such file or directory
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m273[0m: [1mdevice module kindle should toggle frontlight[0m (0.41 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m309[0m: [1mdevice module kindle oasis should interpret orientation event[0m
09/06/26-04:30:45 WARN  could not load liblipclua: module 'liblipclua' not found:
	no field package.preload['liblipclua']
	no file 'spec/front/unit/liblipclua.lua'
	no file 'liblipclua.lua'
	no file 'common/liblipclua.lua'
	no file 'frontend/liblipclua.lua'
	no file './csrc/liblipclua.so'
	no file './csrc/liblipclua/liblipclua.so'
	no file 'liblipclua.so'
	no file 'common/liblipclua.so' 
ffi.findlib: fbink_input [1]
ffi.load: libfbink_input.so.1
fbink_input not loaded:	Error loading shared library libfbink_input.so.1: No such file or directory
09/06/26-04:30:45 WARN  We failed to auto-detect the proper input devices, input handling may be inconsistent! 
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m309[0m: [1mdevice module kindle oasis should interpret orientation event[0m (6.47 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m343[0m: [1mdevice module Flush book Settings for Kobo[0m
ffi.findlib: fbink_input [1]
ffi.load: libfbink_input.so.1
fbink_input not loaded:	Error loading shared library libfbink_input.so.1: No such file or directory
09/06/26-04:30:45 WARN  We failed to auto-detect the proper input devices, input handling may be inconsistent! 
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m343[0m: [1mdevice module Flush book Settings for Kobo[0m (179.86 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m387[0m: [1mdevice module Flush book Settings for Cervantes[0m
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m387[0m: [1mdevice module Flush book Settings for Cervantes[0m (39.28 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m429[0m: [1mdevice module Flush book Settings for Remarkable[0m
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m429[0m: [1mdevice module Flush book Settings for Remarkable[0m (41.60 ms)
[32m[ RUN      ][0m [36mspec/front/unit/device_spec.lua[0m:[36m477[0m: [1mdevice module Flush book Settings for SDL[0m
[32m[       OK ][0m [36mspec/front/unit/device_spec.lua[0m:[36m477[0m: [1mdevice module Flush book Settings for SDL[0m (31.35 ms)
[32m[----------][0m 13 tests from spec/front/unit/device_spec.lua (383.17 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 13 tests from 1 test file ran. (383.56 ms total)
[32m[  PASSED  ][0m 13 tests.
==============================================================================

=================================== 63/78 ====================================
test:         front - koreader-testrunner:kosync_queue
start time:   04:30:45
duration:     0.33s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_kosync_queue UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=229 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/kosync_queue_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/kosync_queue_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m21[0m: [1mKOSyncQueue module should start with an empty queue[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m21[0m: [1mKOSyncQueue module should start with an empty queue[0m (0.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m25[0m: [1mKOSyncQueue module should push and persist an item[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m25[0m: [1mKOSyncQueue module should push and persist an item[0m (0.56 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m36[0m: [1mKOSyncQueue module should deduplicate same document on same day[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m36[0m: [1mKOSyncQueue module should deduplicate same document on same day[0m (1.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m56[0m: [1mKOSyncQueue module should keep entries from different days for same document[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m56[0m: [1mKOSyncQueue module should keep entries from different days for same document[0m (1.19 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m79[0m: [1mKOSyncQueue module should keep different documents on same day[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m79[0m: [1mKOSyncQueue module should keep different documents on same day[0m (1.29 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m97[0m: [1mKOSyncQueue module should expire entries older than 4 weeks[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m97[0m: [1mKOSyncQueue module should expire entries older than 4 weeks[0m (1.49 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m122[0m: [1mKOSyncQueue module should drain successfully[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m122[0m: [1mKOSyncQueue module should drain successfully[0m (1.47 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m131[0m: [1mKOSyncQueue module should stop draining on first failure and keep remaining[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m131[0m: [1mKOSyncQueue module should stop draining on first failure and keep remaining[0m (2.31 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m145[0m: [1mKOSyncQueue module should clear the queue[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m145[0m: [1mKOSyncQueue module should clear the queue[0m (1.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m151[0m: [1mKOSyncQueue module should respect the hard cap[0m
[32m[       OK ][0m [36mspec/front/unit/kosync_queue_spec.lua[0m:[36m151[0m: [1mKOSyncQueue module should respect the hard cap[0m (264.40 ms)
[32m[----------][0m 10 tests from spec/front/unit/kosync_queue_spec.lua (312.56 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 10 tests from 1 test file ran. (313.00 ms total)
[32m[  PASSED  ][0m 10 tests.
==============================================================================

=================================== 64/78 ====================================
test:         front - koreader-testrunner:readerdictionary
start time:   04:30:45
duration:     0.30s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=87 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerdictionary LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerdictionary_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerdictionary_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerdictionary_spec.lua[0m:[36m37[0m: [1mReaderdictionary module should show quick lookup window[0m
[32m[       OK ][0m [36mspec/front/unit/readerdictionary_spec.lua[0m:[36m37[0m: [1mReaderdictionary module should show quick lookup window[0m (34.27 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerdictionary_spec.lua[0m:[36m42[0m: [1mReaderdictionary module should attempt to deinflect (Japanese) word on lookup[0m
[32m[       OK ][0m [36mspec/front/unit/readerdictionary_spec.lua[0m:[36m42[0m: [1mReaderdictionary module should attempt to deinflect (Japanese) word on lookup[0m (32.58 ms)
[32m[----------][0m 2 tests from spec/front/unit/readerdictionary_spec.lua (275.03 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 2 tests from 1 test file ran. (275.44 ms total)
[32m[  PASSED  ][0m 2 tests.
==============================================================================

=================================== 65/78 ====================================
test:         front - koreader-testrunner:screenshoter
start time:   04:30:45
duration:     0.28s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=180 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_screenshoter LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/screenshoter_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/screenshoter_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/screenshoter_spec.lua[0m:[36m31[0m: [1mReaderScreenshot module should get screenshot in portrait[0m
[32m[       OK ][0m [36mspec/front/unit/screenshoter_spec.lua[0m:[36m31[0m: [1mReaderScreenshot module should get screenshot in portrait[0m (31.17 ms)
[32m[ RUN      ][0m [36mspec/front/unit/screenshoter_spec.lua[0m:[36m40[0m: [1mReaderScreenshot module should get screenshot in landscape[0m
[32m[       OK ][0m [36mspec/front/unit/screenshoter_spec.lua[0m:[36m40[0m: [1mReaderScreenshot module should get screenshot in landscape[0m (30.61 ms)
[32m[----------][0m 2 tests from spec/front/unit/screenshoter_spec.lua (254.72 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 2 tests from 1 test file ran. (255.07 ms total)
[32m[  PASSED  ][0m 2 tests.
==============================================================================

=================================== 66/78 ====================================
test:         front - koreader-testrunner:readertoc
start time:   04:30:45
duration:     0.34s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readertoc MALLOC_PERTURB_=137 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readertoc_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readertoc_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m29[0m: [1mReadertoc module should get max toc depth[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m29[0m: [1mReadertoc module should get max toc depth[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m33[0m: [1mReadertoc module should get toc title from page[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m33[0m: [1mReadertoc module should get toc title from page[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m42[0m: [1mReadertoc module getTocTicks API should get ticks of level 1[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m42[0m: [1mReadertoc module getTocTicks API should get ticks of level 1[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m47[0m: [1mReadertoc module getTocTicks API should get ticks of level 2[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m47[0m: [1mReadertoc module getTocTicks API should get ticks of level 2[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m52[0m: [1mReadertoc module getTocTicks API should get ticks of level -1[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m52[0m: [1mReadertoc module getTocTicks API should get ticks of level -1[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m56[0m: [1mReadertoc module getTocTicks API should get the same ticks of level -1 and level 2[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m56[0m: [1mReadertoc module getTocTicks API should get the same ticks of level -1 and level 2[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m62[0m: [1mReadertoc module getTocTicks API should get all ticks (flattened)[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m62[0m: [1mReadertoc module getTocTicks API should get all ticks (flattened)[0m (0.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m67[0m: [1mReadertoc module should get page of next chapter[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m67[0m: [1mReadertoc module should get page of next chapter[0m (0.17 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m72[0m: [1mReadertoc module should get page of previous chapter[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m72[0m: [1mReadertoc module should get page of previous chapter[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m77[0m: [1mReadertoc module should get page left of chapter[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m77[0m: [1mReadertoc module should get page left of chapter[0m (0.04 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m85[0m: [1mReadertoc module should get page done of chapter[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m85[0m: [1mReadertoc module should get page done of chapter[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m91[0m: [1mReadertoc module collasible TOC should collapse the secondary toc nodes by default[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m91[0m: [1mReadertoc module collasible TOC should collapse the secondary toc nodes by default[0m (7.17 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m95[0m: [1mReadertoc module collasible TOC should not expand toc nodes that have no child nodes[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m95[0m: [1mReadertoc module collasible TOC should not expand toc nodes that have no child nodes[0m (1.78 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m99[0m: [1mReadertoc module collasible TOC should expand toc nodes that have child nodes[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m99[0m: [1mReadertoc module collasible TOC should expand toc nodes that have child nodes[0m (1.82 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m105[0m: [1mReadertoc module collasible TOC should collapse toc nodes that have been expanded[0m
[32m[       OK ][0m [36mspec/front/unit/readertoc_spec.lua[0m:[36m105[0m: [1mReadertoc module collasible TOC should collapse toc nodes that have been expanded[0m (17.48 ms)
[32m[----------][0m 15 tests from spec/front/unit/readertoc_spec.lua (314.80 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 15 tests from 1 test file ran. (315.22 ms total)
[32m[  PASSED  ][0m 15 tests.
==============================================================================

=================================== 67/78 ====================================
test:         front - koreader-testrunner:readerview
start time:   04:30:45
duration:     0.43s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=16 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerview LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerview_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerview_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerview_spec.lua[0m:[36m16[0m: [1mReaderview module should stop hinting on document close event[0m
[32m[       OK ][0m [36mspec/front/unit/readerview_spec.lua[0m:[36m16[0m: [1mReaderview module should stop hinting on document close event[0m (158.83 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerview_spec.lua[0m:[36m55[0m: [1mReaderview module should return and restore view context in page mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerview_spec.lua[0m:[36m55[0m: [1mReaderview module should return and restore view context in page mode[0m (81.63 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerview_spec.lua[0m:[36m110[0m: [1mReaderview module should return and restore view context in scroll mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerview_spec.lua[0m:[36m110[0m: [1mReaderview module should return and restore view context in scroll mode[0m (28.98 ms)
[32m[----------][0m 3 tests from spec/front/unit/readerview_spec.lua (404.71 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 3 tests from 1 test file ran. (405.18 ms total)
[32m[  PASSED  ][0m 3 tests.
==============================================================================

=================================== 68/78 ====================================
test:         front - koreader-testrunner:readerpaging
start time:   04:30:45
duration:     0.52s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerpaging LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=38 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerpaging_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerpaging_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerpaging_spec.lua[0m:[36m28[0m: [1mReaderpaging module Page mode should emit EndOfBook event at the end[0m
[32m[       OK ][0m [36mspec/front/unit/readerpaging_spec.lua[0m:[36m28[0m: [1mReaderpaging module Page mode should emit EndOfBook event at the end[0m (14.77 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerpaging_spec.lua[0m:[36m60[0m: [1mReaderpaging module Scroll mode should emit EndOfBook event at the end[0m
[32m[       OK ][0m [36mspec/front/unit/readerpaging_spec.lua[0m:[36m60[0m: [1mReaderpaging module Scroll mode should emit EndOfBook event at the end[0m (82.69 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerpaging_spec.lua[0m:[36m91[0m: [1mReaderpaging module Scroll mode should scroll backward on the first page without crash[0m
[32m[       OK ][0m [36mspec/front/unit/readerpaging_spec.lua[0m:[36m91[0m: [1mReaderpaging module Scroll mode should scroll backward on the first page without crash[0m (0.49 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerpaging_spec.lua[0m:[36m95[0m: [1mReaderpaging module Scroll mode should scroll forward on the last page without crash[0m
[32m[       OK ][0m [36mspec/front/unit/readerpaging_spec.lua[0m:[36m95[0m: [1mReaderpaging module Scroll mode should scroll forward on the last page without crash[0m (71.09 ms)
[32m[----------][0m 4 tests from spec/front/unit/readerpaging_spec.lua (497.27 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (497.73 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

=================================== 69/78 ====================================
test:         front - koreader-testrunner:readerui
start time:   04:30:45
duration:     0.58s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerui MESON_TEST_ITERATION=1 MALLOC_PERTURB_=119 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerui_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerui_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerui_spec.lua[0m:[36m19[0m: [1mReaderui module should save settings[0m
[32m[       OK ][0m [36mspec/front/unit/readerui_spec.lua[0m:[36m19[0m: [1mReaderui module should save settings[0m (2.95 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerui_spec.lua[0m:[36m31[0m: [1mReaderui module should show reader[0m
[32m[       OK ][0m [36mspec/front/unit/readerui_spec.lua[0m:[36m31[0m: [1mReaderui module should show reader[0m (13.34 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerui_spec.lua[0m:[36m41[0m: [1mReaderui module should close document[0m
[32m[       OK ][0m [36mspec/front/unit/readerui_spec.lua[0m:[36m41[0m: [1mReaderui module should close document[0m (15.14 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerui_spec.lua[0m:[36m46[0m: [1mReaderui module should not reset ReaderUI.instance by mistake[0m
09/06/26-04:30:46 ERROR ReaderUI instance mismatch! Opened table: 0x70fdef27afa8 while we still have an existing instance: table: 0x70fdef09c858 stack traceback:
	frontend/apps/reader/readerui.lua:544: in function 'init'
	frontend/ui/widget/widget.lua:46: in function 'new'
	spec/front/unit/readerui_spec.lua:53: in function <spec/front/unit/readerui_spec.lua:46>
	[C]: in function 'xpcall'
	spec/rocks/share/lua/5.1/busted/core.lua:178: in function 'safe'
	spec/rocks/share/lua/5.1/busted/init.lua:40: in function 'executor'
	spec/rocks/share/lua/5.1/busted/core.lua:314: in function <spec/rocks/share/lua/5.1/busted/core.lua:314>
	[C]: in function 'xpcall'
	spec/rocks/share/lua/5.1/busted/core.lua:178: in function 'safe'
	spec/rocks/share/lua/5.1/busted/core.lua:314: in function 'execute'
	spec/rocks/share/lua/5.1/busted/block.lua:155: in function 'execute'
	...
	spec/rocks/share/lua/5.1/busted/block.lua:155: in function 'execute'
	spec/rocks/share/lua/5.1/busted/init.lua:7: in function 'executor'
	spec/rocks/share/lua/5.1/busted/core.lua:314: in function <spec/rocks/share/lua/5.1/busted/core.lua:314>
	[C]: in function 'xpcall'
	spec/rocks/share/lua/5.1/busted/core.lua:178: in function 'safe'
	spec/rocks/share/lua/5.1/busted/core.lua:314: in function 'execute'
	spec/rocks/share/lua/5.1/busted/execute.lua:58: in function 'execute'
	spec/rocks/share/lua/5.1/busted/runner.lua:216: in function <spec/rocks/share/lua/5.1/busted/runner.lua:8>
	(command line):1: in main chunk
	[C]: at 0xaaba97a58c60 
09/06/26-04:30:46 WARN  ReaderUI instance mismatch! Closed table: 0x70fdef09c858 while the active one is supposed to be nil 
[32m[       OK ][0m [36mspec/front/unit/readerui_spec.lua[0m:[36m46[0m: [1mReaderui module should not reset ReaderUI.instance by mistake[0m (239.15 ms)
[32m[----------][0m 4 tests from spec/front/unit/readerui_spec.lua (549.86 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 4 tests from 1 test file ran. (550.27 ms total)
[32m[  PASSED  ][0m 4 tests.
==============================================================================

=================================== 70/78 ====================================
test:         front - koreader-testrunner:readerlink
start time:   04:30:45
duration:     0.76s
result:       exit status 0
command:      LSAN_OPTIONS=exitcode=0 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerlink MALLOC_PERTURB_=56 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerlink_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerlink_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m33[0m: [1mReaderLink module with epub should jump to links[0m
[32m[       OK ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m33[0m: [1mReaderLink module with epub should jump to links[0m (1.41 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m39[0m: [1mReaderLink module with epub should be able to go back after link jump[0m
[32m[       OK ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m39[0m: [1mReaderLink module with epub should be able to go back after link jump[0m (2.99 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m58[0m: [1mReaderLink module with pdf should jump to links in page mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m58[0m: [1mReaderLink module with pdf should jump to links in page mode[0m (11.46 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m67[0m: [1mReaderLink module with pdf should jump to links in scroll mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m67[0m: [1mReaderLink module with pdf should jump to links in scroll mode[0m (12.20 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m80[0m: [1mReaderLink module with pdf should be able to go back after link jump in page mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m80[0m: [1mReaderLink module with pdf should be able to go back after link jump in page mode[0m (2.95 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m91[0m: [1mReaderLink module with pdf should be able to go back after link jump in scroll mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m91[0m: [1mReaderLink module with pdf should be able to go back after link jump in scroll mode[0m (4.76 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m110[0m: [1mReaderLink module with pdf should be able to go back to the same position after link jump in scroll mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerlink_spec.lua[0m:[36m110[0m: [1mReaderLink module with pdf should be able to go back to the same position after link jump in scroll mode[0m (26.92 ms)
[32m[----------][0m 7 tests from spec/front/unit/readerlink_spec.lua (728.67 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 7 tests from 1 test file ran. (729.16 ms total)
[32m[  PASSED  ][0m 7 tests.
==============================================================================

=================================== 71/78 ====================================
test:         front - koreader-testrunner:readerrolling
start time:   04:30:45
duration:     0.80s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=166 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerrolling MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerrolling_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerrolling_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m29[0m: [1mReaderrolling module test in portrait screen mode should goto portrait screen mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m29[0m: [1mReaderrolling module test in portrait screen mode should goto portrait screen mode[0m (0.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m33[0m: [1mReaderrolling module test in portrait screen mode should goto certain page[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m33[0m: [1mReaderrolling module test in portrait screen mode should goto certain page[0m (0.74 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m40[0m: [1mReaderrolling module test in portrait screen mode should goto relative page[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m40[0m: [1mReaderrolling module test in portrait screen mode should goto relative page[0m (4.87 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m50[0m: [1mReaderrolling module test in portrait screen mode should goto next chapter[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m50[0m: [1mReaderrolling module test in portrait screen mode should goto next chapter[0m (1.81 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m59[0m: [1mReaderrolling module test in portrait screen mode should goto previous chapter[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m59[0m: [1mReaderrolling module test in portrait screen mode should goto previous chapter[0m (2.65 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m68[0m: [1mReaderrolling module test in portrait screen mode should emit EndOfBook event at the end of sample epub[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m68[0m: [1mReaderrolling module test in portrait screen mode should emit EndOfBook event at the end of sample epub[0m (7.79 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m90[0m: [1mReaderrolling module test in portrait screen mode should emit EndOfBook event at the end sample txt[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m90[0m: [1mReaderrolling module test in portrait screen mode should emit EndOfBook event at the end sample txt[0m (38.60 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m129[0m: [1mReaderrolling module test in landscape screen mode should go to landscape screen mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m129[0m: [1mReaderrolling module test in landscape screen mode should go to landscape screen mode[0m (78.22 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m132[0m: [1mReaderrolling module test in landscape screen mode should goto certain page[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m132[0m: [1mReaderrolling module test in landscape screen mode should goto certain page[0m (0.92 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m138[0m: [1mReaderrolling module test in landscape screen mode should goto relative page[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m138[0m: [1mReaderrolling module test in landscape screen mode should goto relative page[0m (4.09 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m147[0m: [1mReaderrolling module test in landscape screen mode should goto next chapter[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m147[0m: [1mReaderrolling module test in landscape screen mode should goto next chapter[0m (1.72 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m155[0m: [1mReaderrolling module test in landscape screen mode should goto previous chapter[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m155[0m: [1mReaderrolling module test in landscape screen mode should goto previous chapter[0m (1.87 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m163[0m: [1mReaderrolling module test in landscape screen mode should emit EndOfBook event at the end[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m163[0m: [1mReaderrolling module test in landscape screen mode should emit EndOfBook event at the end[0m (0.83 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m180[0m: [1mReaderrolling module switching screen mode should not change current page number for portrait-landscape-portrait switching[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m180[0m: [1mReaderrolling module switching screen mode should not change current page number for portrait-landscape-portrait switching[0m (0.02 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m191[0m: [1mReaderrolling module switching screen mode should not change current page number for landscape-portrait-landscape switching[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m191[0m: [1mReaderrolling module switching screen mode should not change current page number for landscape-portrait-landscape switching[0m (0.01 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m205[0m: [1mReaderrolling module test changing word gap - space condensing should show pages for different word gap[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m205[0m: [1mReaderrolling module test changing word gap - space condensing should show pages for different word gap[0m (220.72 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m216[0m: [1mReaderrolling module test initialization should emit PageUpdate event after book is rendered[0m
[32m[       OK ][0m [36mspec/front/unit/readerrolling_spec.lua[0m:[36m216[0m: [1mReaderrolling module test initialization should emit PageUpdate event after book is rendered[0m (46.79 ms)
[32m[----------][0m 17 tests from spec/front/unit/readerrolling_spec.lua (769.83 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 17 tests from 1 test file ran. (770.31 ms total)
[32m[  PASSED  ][0m 17 tests.
==============================================================================

=================================== 72/78 ====================================
test:         front - koreader-testrunner:readerfooter
start time:   04:30:45
duration:     0.90s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=157 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerfooter MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerfooter_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerfooter_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m102[0m: [1mReaderfooter module should setup footer as visible in all_at_once mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m102[0m: [1mReaderfooter module should setup footer as visible in all_at_once mode[0m (55.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m116[0m: [1mReaderfooter module should setup footer as visible not in all_at_once[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m116[0m: [1mReaderfooter module should setup footer as visible not in all_at_once[0m (20.83 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m129[0m: [1mReaderfooter module should setup footer as invisible[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m129[0m: [1mReaderfooter module should setup footer as invisible[0m (127.44 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m145[0m: [1mReaderfooter module should setup footer for epub without error[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m145[0m: [1mReaderfooter module should setup footer for epub without error[0m (30.58 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m164[0m: [1mReaderfooter module should setup footer for pdf without error[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m164[0m: [1mReaderfooter module should setup footer for pdf without error[0m (19.60 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m180[0m: [1mReaderfooter module should switch between different modes[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m180[0m: [1mReaderfooter module should switch between different modes[0m (22.78 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m235[0m: [1mReaderfooter module should rotate through different modes[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m235[0m: [1mReaderfooter module should rotate through different modes[0m (23.80 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m276[0m: [1mReaderfooter module should pick up screen resize in resetLayout[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m276[0m: [1mReaderfooter module should pick up screen resize in resetLayout[0m (15.85 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m311[0m: [1mReaderfooter module should update width on PosUpdate event[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m311[0m: [1mReaderfooter module should update width on PosUpdate event[0m (24.81 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m334[0m: [1mReaderfooter module should support chapter markers[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m334[0m: [1mReaderfooter module should support chapter markers[0m (26.29 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m353[0m: [1mReaderfooter module should schedule/unschedule auto refresh time task[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m353[0m: [1mReaderfooter module should schedule/unschedule auto refresh time task[0m (27.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m384[0m: [1mReaderfooter module should not schedule auto refresh time task if footer is disabled[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m384[0m: [1mReaderfooter module should not schedule auto refresh time task if footer is disabled[0m (26.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m407[0m: [1mReaderfooter module should toggle auto refresh time task by toggling the menu[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m407[0m: [1mReaderfooter module should toggle auto refresh time task by toggling the menu[0m (18.62 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m453[0m: [1mReaderfooter module should support toggle footer through menu if tap zone is disabled[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m453[0m: [1mReaderfooter module should support toggle footer through menu if tap zone is disabled[0m (19.68 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m492[0m: [1mReaderfooter module should remove and add modes to footer text in all_at_once mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m492[0m: [1mReaderfooter module should remove and add modes to footer text in all_at_once mode[0m (20.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m523[0m: [1mReaderfooter module should initialize text mode in all_at_once mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m523[0m: [1mReaderfooter module should initialize text mode in all_at_once mode[0m (17.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m542[0m: [1mReaderfooter module should support disabling all the modes[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m542[0m: [1mReaderfooter module should support disabling all the modes[0m (30.49 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m584[0m: [1mReaderfooter module should return correct footer height in time mode[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m584[0m: [1mReaderfooter module should return correct footer height in time mode[0m (28.72 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m599[0m: [1mReaderfooter module should return correct footer height when all modes are disabled[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m599[0m: [1mReaderfooter module should return correct footer height when all modes are disabled[0m (26.86 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m622[0m: [1mReaderfooter module should disable footer when all modes + progressbar are disabled[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m622[0m: [1mReaderfooter module should disable footer when all modes + progressbar are disabled[0m (24.57 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m645[0m: [1mReaderfooter module should disable footer if settings.disabled is true[0m
[32m[       OK ][0m [36mspec/front/unit/readerfooter_spec.lua[0m:[36m645[0m: [1mReaderfooter module should disable footer if settings.disabled is true[0m (23.62 ms)
[32m[----------][0m 21 tests from spec/front/unit/readerfooter_spec.lua (875.44 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 21 tests from 1 test file ran. (876.01 ms total)
[32m[  PASSED  ][0m 21 tests.
==============================================================================

=================================== 73/78 ====================================
test:         front - koreader-testrunner:koptinterface
start time:   04:30:45
duration:     1.04s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_koptinterface MALLOC_PERTURB_=120 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/koptinterface_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/koptinterface_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m22[0m: [1mKoptinterface module should should get auto bbox[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m22[0m: [1mKoptinterface module should should get auto bbox[0m (63.52 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m30[0m: [1mKoptinterface module should should get semi auto bbox[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m30[0m: [1mKoptinterface module should should get semi auto bbox[0m (142.33 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m47[0m: [1mKoptinterface module should should render optimized page to de-watermark[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m47[0m: [1mKoptinterface module should should render optimized page to de-watermark[0m (68.34 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m55[0m: [1mKoptinterface module should should reflow page in foreground[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m55[0m: [1mKoptinterface module should should reflow page in foreground[0m (155.32 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m61[0m: [1mKoptinterface module should should hint reflowed page in background[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m61[0m: [1mKoptinterface module should should hint reflowed page in background[0m (0.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m69[0m: [1mKoptinterface module should should get native text boxes[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m69[0m: [1mKoptinterface module should should get native text boxes[0m (0.83 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m75[0m: [1mKoptinterface module should should get native text boxes from scratch[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m75[0m: [1mKoptinterface module should should get native text boxes from scratch[0m (80.84 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m81[0m: [1mKoptinterface module should should get reflow text boxes[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m81[0m: [1mKoptinterface module should should get reflow text boxes[0m (0.49 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m89[0m: [1mKoptinterface module should should get reflow text boxes from scratch[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m89[0m: [1mKoptinterface module should should get reflow text boxes from scratch[0m (52.64 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m112[0m: [1mKoptinterface module should should get page block of a two-column page[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m112[0m: [1mKoptinterface module should should get page block of a two-column page[0m (157.82 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m121[0m: [1mKoptinterface module should should get word from native position[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m121[0m: [1mKoptinterface module should should get word from native position[0m (14.80 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m128[0m: [1mKoptinterface module should should get word from reflow position[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m128[0m: [1mKoptinterface module should should get word from reflow position[0m (106.62 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m152[0m: [1mKoptinterface module should should get link from native position[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m152[0m: [1mKoptinterface module should should get link from native position[0m (0.64 ms)
[32m[ RUN      ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m161[0m: [1mKoptinterface module should should get link from reflow position[0m
[32m[       OK ][0m [36mspec/front/unit/koptinterface_spec.lua[0m:[36m161[0m: [1mKoptinterface module should should get link from reflow position[0m (60.78 ms)
[32m[----------][0m 14 tests from spec/front/unit/koptinterface_spec.lua (1018.09 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 14 tests from 1 test file ran. (1018.39 ms total)
[32m[  PASSED  ][0m 14 tests.
==============================================================================

=================================== 74/78 ====================================
test:         front - koreader-testrunner:readerbookmark
start time:   04:30:45
duration:     1.26s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerbookmark LSAN_OPTIONS=exitcode=0 MALLOC_PERTURB_=86 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerbookmark_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerbookmark_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m50[0m: [1mReaderBookmark module EPUB document should show dogear after toggling non-bookmarked page[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m50[0m: [1mReaderBookmark module EPUB document should show dogear after toggling non-bookmarked page[0m (23.42 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m58[0m: [1mReaderBookmark module EPUB document should not show dogear after toggling bookmarked page[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m58[0m: [1mReaderBookmark module EPUB document should not show dogear after toggling bookmarked page[0m (20.21 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m66[0m: [1mReaderBookmark module EPUB document should sort bookmarks with ascending page numbers[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m66[0m: [1mReaderBookmark module EPUB document should sort bookmarks with ascending page numbers[0m (47.62 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m78[0m: [1mReaderBookmark module EPUB document should keep descending page numbers after removing bookmarks[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m78[0m: [1mReaderBookmark module EPUB document should keep descending page numbers after removing bookmarks[0m (23.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m89[0m: [1mReaderBookmark module EPUB document should add bookmark by highlighting[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m89[0m: [1mReaderBookmark module EPUB document should add bookmark by highlighting[0m (23.41 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m99[0m: [1mReaderBookmark module EPUB document should get previous bookmark for certain page[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m99[0m: [1mReaderBookmark module EPUB document should get previous bookmark for certain page[0m (0.11 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m105[0m: [1mReaderBookmark module EPUB document should get next bookmark for certain page[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m105[0m: [1mReaderBookmark module EPUB document should get next bookmark for certain page[0m (0.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m132[0m: [1mReaderBookmark module PDF document should show dogear after toggling non-bookmarked page[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m132[0m: [1mReaderBookmark module PDF document should show dogear after toggling non-bookmarked page[0m (382.00 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m139[0m: [1mReaderBookmark module PDF document should not show dogear after toggling bookmarked page[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m139[0m: [1mReaderBookmark module PDF document should not show dogear after toggling bookmarked page[0m (43.74 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m146[0m: [1mReaderBookmark module PDF document should sort bookmarks with ascending page numbers[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m146[0m: [1mReaderBookmark module PDF document should sort bookmarks with ascending page numbers[0m (231.40 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m161[0m: [1mReaderBookmark module PDF document should keep descending page numbers after removing bookmarks[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m161[0m: [1mReaderBookmark module PDF document should keep descending page numbers after removing bookmarks[0m (20.68 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m172[0m: [1mReaderBookmark module PDF document should add bookmark by highlighting[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m172[0m: [1mReaderBookmark module PDF document should add bookmark by highlighting[0m (22.51 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m180[0m: [1mReaderBookmark module PDF document should get previous bookmark for certain page[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m180[0m: [1mReaderBookmark module PDF document should get previous bookmark for certain page[0m (0.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m183[0m: [1mReaderBookmark module PDF document should get next bookmark for certain page[0m
[32m[       OK ][0m [36mspec/front/unit/readerbookmark_spec.lua[0m:[36m183[0m: [1mReaderBookmark module PDF document should get next bookmark for certain page[0m (0.03 ms)
[32m[----------][0m 14 tests from spec/front/unit/readerbookmark_spec.lua (1223.38 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 14 tests from 1 test file ran. (1223.78 ms total)
[32m[  PASSED  ][0m 14 tests.
----------------------------------- stderr -----------------------------------
warning: bogus font ascent/descent values (34 / -2970)
==============================================================================

=================================== 75/78 ====================================
test:         front - koreader-testrunner:translator
start time:   04:30:45
duration:     1.27s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_translator UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=207 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/translator_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/translator_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m22[0m: [1mTranslator module should return server[0m
[32m[       OK ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m22[0m: [1mTranslator module should return server[0m (1.05 ms)
[32m[ RUN      ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m31[0m: [1mTranslator module should return translation #internet[0m
[32m[       OK ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m31[0m: [1mTranslator module should return translation #internet[0m (744.25 ms)
[32m[ RUN      ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m38[0m: [1mTranslator module should include romanization results when configured to be shown #internet[0m
[32m[       OK ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m38[0m: [1mTranslator module should include romanization results when configured to be shown #internet[0m (247.06 ms)
[32m[ RUN      ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m51[0m: [1mTranslator module should not include romanization results when not configured to be shown #internet[0m
[32m[       OK ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m51[0m: [1mTranslator module should not include romanization results when not configured to be shown #internet[0m (64.90 ms)
[32m[ RUN      ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m58[0m: [1mTranslator module should autodetect language #internet[0m
[32m[       OK ][0m [36mspec/front/unit/translator_spec.lua[0m:[36m58[0m: [1mTranslator module should autodetect language #internet[0m (123.47 ms)
[32m[----------][0m 5 tests from spec/front/unit/translator_spec.lua (1252.14 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 5 tests from 1 test file ran. (1252.53 ms total)
[32m[  PASSED  ][0m 5 tests.
==============================================================================

=================================== 76/78 ====================================
test:         front - koreader-testrunner:opds
start time:   04:30:45
duration:     1.45s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=70 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_opds /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/opds_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/opds_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m374[0m: [1mOPDS module OPDS parser module should parse OPDS navigation catalog[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m374[0m: [1mOPDS module OPDS parser module should parse OPDS navigation catalog[0m (2.42 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m389[0m: [1mOPDS module OPDS parser module should parse OPDS acquisition catalog[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m389[0m: [1mOPDS module OPDS parser module should parse OPDS acquisition catalog[0m (1.56 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m401[0m: [1mOPDS module OPDS parser module should not desync entries when a content tag is self-closing[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m401[0m: [1mOPDS module OPDS parser module should not desync entries when a content tag is self-closing[0m (0.24 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m434[0m: [1mOPDS module OPDS parser module should keep attribute values that are not ASCII[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m434[0m: [1mOPDS module OPDS parser module should keep attribute values that are not ASCII[0m (0.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m468[0m: [1mOPDS module OPDS browser module URL generation should generate search url and catalog items #internet[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m468[0m: [1mOPDS module OPDS browser module URL generation should generate search url and catalog items #internet[0m (8.96 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m495[0m: [1mOPDS module OPDS browser module URL generation should generate URL on rel=subsection #internet[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m495[0m: [1mOPDS module OPDS browser module URL generation should generate URL on rel=subsection #internet[0m (1013.92 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m503[0m: [1mOPDS module OPDS browser module URL generation should generate URL on rel=popular and rel=new #internet[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m503[0m: [1mOPDS module OPDS browser module URL generation should generate URL on rel=popular and rel=new #internet[0m (210.49 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m513[0m: [1mOPDS module OPDS browser module URL generation should parse single-quoted attributes[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m513[0m: [1mOPDS module OPDS browser module URL generation should parse single-quoted attributes[0m (0.56 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m524[0m: [1mOPDS module OPDS browser module URL generation should use the main URL for faceted links as long as faceted links aren't properly supported #internet[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m524[0m: [1mOPDS module OPDS browser module URL generation should use the main URL for faceted links as long as faceted links aren't properly supported #internet[0m (85.89 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m533[0m: [1mOPDS module OPDS browser module should not fill item table incorrectly with thumbnail or image URL #internet[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m533[0m: [1mOPDS module OPDS browser module should not fill item table incorrectly with thumbnail or image URL #internet[0m (16.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m541[0m: [1mOPDS module OPDS browser module should not append .pdf after query parameters or duplicate acquisition entries #14300 #internet[0m
[32m[       OK ][0m [36mspec/front/unit/opds_spec.lua[0m:[36m541[0m: [1mOPDS module OPDS browser module should not append .pdf after query parameters or duplicate acquisition entries #14300 #internet[0m (0.57 ms)
[32m[----------][0m 11 tests from spec/front/unit/opds_spec.lua (1428.07 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 11 tests from 1 test file ran. (1428.61 ms total)
[32m[  PASSED  ][0m 11 tests.
==============================================================================

=================================== 77/78 ====================================
test:         front - koreader-testrunner:readersearch
start time:   04:30:45
duration:     1.49s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=104 MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readersearch MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readersearch_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readersearch_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m30[0m: [1mReadersearch module search API for EPUB documents should search backward[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m30[0m: [1mReadersearch module search API for EPUB documents should search backward[0m (9.64 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m45[0m: [1mReadersearch module search API for EPUB documents should search forward[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m45[0m: [1mReadersearch module search API for EPUB documents should search forward[0m (6.93 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m60[0m: [1mReadersearch module search API for EPUB documents should find the first occurrence[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m60[0m: [1mReadersearch module search API for EPUB documents should find the first occurrence[0m (4.10 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m74[0m: [1mReadersearch module search API for EPUB documents should find the last occurrence[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m74[0m: [1mReadersearch module search API for EPUB documents should find the last occurrence[0m (13.23 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m92[0m: [1mReadersearch module search API for EPUB documents should find all occurrences[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m92[0m: [1mReadersearch module search API for EPUB documents should find all occurrences[0m (10.15 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m139[0m: [1mReadersearch module search API for PDF documents should match single word with case insensitive option in one page[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m139[0m: [1mReadersearch module search API for PDF documents should match single word with case insensitive option in one page[0m (17.76 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m144[0m: [1mReadersearch module search API for PDF documents should match single word with case sensitive option in one page[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m144[0m: [1mReadersearch module search API for PDF documents should match single word with case sensitive option in one page[0m (0.59 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m149[0m: [1mReadersearch module search API for PDF documents should match phrase in one page[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m149[0m: [1mReadersearch module search API for PDF documents should match phrase in one page[0m (0.83 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m152[0m: [1mReadersearch module search API for PDF documents should match whole phrase in one page[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m152[0m: [1mReadersearch module search API for PDF documents should match whole phrase in one page[0m (0.70 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m155[0m: [1mReadersearch module search API for PDF documents should not match empty string[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m155[0m: [1mReadersearch module search API for PDF documents should not match empty string[0m (0.29 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m158[0m: [1mReadersearch module search API for PDF documents should not match on page without text layer[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m158[0m: [1mReadersearch module search API for PDF documents should not match on page without text layer[0m (0.03 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m161[0m: [1mReadersearch module search API for PDF documents should search backward[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m161[0m: [1mReadersearch module search API for PDF documents should search backward[0m (139.67 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m173[0m: [1mReadersearch module search API for PDF documents should search forward[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m173[0m: [1mReadersearch module search API for PDF documents should search forward[0m (126.46 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m185[0m: [1mReadersearch module search API for PDF documents should find the first occurrence[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m185[0m: [1mReadersearch module search API for PDF documents should find the first occurrence[0m (212.93 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m198[0m: [1mReadersearch module search API for PDF documents should find the last occurrence[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m198[0m: [1mReadersearch module search API for PDF documents should find the last occurrence[0m (149.53 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m211[0m: [1mReadersearch module search API for PDF documents should find all occurrences[0m
[32m[       OK ][0m [36mspec/front/unit/readersearch_spec.lua[0m:[36m211[0m: [1mReadersearch module search API for PDF documents should find all occurrences[0m (392.17 ms)
[32m[----------][0m 16 tests from spec/front/unit/readersearch_spec.lua (1450.84 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 16 tests from 1 test file ran. (1451.27 ms total)
[32m[  PASSED  ][0m 16 tests.
----------------------------------- stderr -----------------------------------
warning: bogus font ascent/descent values (34 / -2970)
==============================================================================

=================================== 78/78 ====================================
test:         front - koreader-testrunner:readerhighlight
start time:   04:30:45
duration:     2.32s
result:       exit status 0
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_TEST_ITERATION=1 MALLOC_PERTURB_=173 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 KO_HOME=/home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/base/build/aarch64-alpine-linux-musl/spec/run/front_readerhighlight LSAN_OPTIONS=exitcode=0 /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/luajit -e 'require "busted.runner" {standalone = false}' /dev/null --output=gtest -Xoutput=--color --run=front spec/front/unit/readerhighlight_spec.lua --config-file=spec/config.lua --exclude-tags=notest --helper=spec/helper.lua --loaders=lua --lazy
----------------------------------- stdout -----------------------------------
has monolibtic? no (Error loading shared library libs/libkoreader-monolibtic.so: No such file or directory)
lib_search_path: libs/?
lib_basic_format: lib%s.so
lib_version_format: lib%s.so.%s
[32m[==========][0m Running tests from scanned files.
[32m[----------][0m Global test environment setup.
[32m[----------][0m Running tests from spec/front/unit/readerhighlight_spec.lua
ffi.load: rt.so.1 (RTLD_GLOBAL)
ffi.findlib: utf8proc [3]
ffi.load: libs/libutf8proc.so.3
ffi.findlib: blitbuffer
ffi.load: libs/libblitbuffer.so
ffi.findlib: SDL3 [0]
ffi.load: libSDL3.so.0
ffi.findlib: lodepng
ffi.load: libs/liblodepng.so
ffi.findlib: wrap-mupdf
ffi.load: libs/libwrap-mupdf.so
ffi.findlib: freetype [6]
ffi.load: libs/libfreetype.so.6
ffi.findlib: harfbuzz [0]
ffi.load: libs/libharfbuzz.so.0
ffi.findlib: zstd [1]
ffi.load: libs/libzstd.so.1
ffi.findlib: archive [13]
ffi.load: libs/libarchive.so.13
ffi.findlib: leptonica [6]
ffi.load: libs/libleptonica.so.6
ffi.findlib: k2pdfopt [2]
ffi.load: libs/libk2pdfopt.so.2
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m96[0m: [1mReaderhighlight module highlight for EPUB documents should highlight word[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m96[0m: [1mReaderhighlight module highlight for EPUB documents should highlight word[0m (39.95 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m103[0m: [1mReaderhighlight module highlight for EPUB documents should highlight text[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m103[0m: [1mReaderhighlight module highlight for EPUB documents should highlight text[0m (29.31 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m111[0m: [1mReaderhighlight module highlight for EPUB documents should response on tap gesture[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m111[0m: [1mReaderhighlight module highlight for EPUB documents should response on tap gesture[0m (33.89 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m146[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page with text layer should highlight word[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m146[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page with text layer should highlight word[0m (158.07 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m152[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page with text layer should highlight text[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m152[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page with text layer should highlight text[0m (37.87 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m159[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page with text layer should response on tap gesture[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m159[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page with text layer should response on tap gesture[0m (42.13 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m170[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page without text layer should highlight word[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m170[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page without text layer should highlight word[0m (312.12 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m177[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page without text layer should highlight text[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m177[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page without text layer should highlight text[0m (37.34 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m185[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page without text layer should respond to tap gesture[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m185[0m: [1mReaderhighlight module highlight for PDF documents in page mode for scanned page without text layer should respond to tap gesture[0m (40.90 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m200[0m: [1mReaderhighlight module highlight for PDF documents in page mode for reflowed page should highlight word[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m200[0m: [1mReaderhighlight module highlight for PDF documents in page mode for reflowed page should highlight word[0m (194.79 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m205[0m: [1mReaderhighlight module highlight for PDF documents in page mode for reflowed page should highlight text[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m205[0m: [1mReaderhighlight module highlight for PDF documents in page mode for reflowed page should highlight text[0m (31.87 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m211[0m: [1mReaderhighlight module highlight for PDF documents in page mode for reflowed page should response on tap gesture[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m211[0m: [1mReaderhighlight module highlight for PDF documents in page mode for reflowed page should response on tap gesture[0m (39.50 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m247[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page with text layer should highlight word[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m247[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page with text layer should highlight word[0m (144.08 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m253[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page with text layer should highlight text[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m253[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page with text layer should highlight text[0m (34.82 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m260[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page with text layer should response on tap gesture[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m260[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page with text layer should response on tap gesture[0m (40.18 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m273[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page without text layer should highlight word[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m273[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page without text layer should highlight word[0m (81.27 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m280[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page without text layer should highlight text[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m280[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page without text layer should highlight text[0m (34.49 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m287[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page without text layer should response on tap gesture[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m287[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for scanned page without text layer should response on tap gesture[0m (35.63 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m305[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for reflowed page should highlight word[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m305[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for reflowed page should highlight word[0m (77.17 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m311[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for reflowed page should highlight text[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m311[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for reflowed page should highlight text[0m (32.88 ms)
[32m[ RUN      ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m316[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for reflowed page should response on tap gesture[0m
[32m[       OK ][0m [36mspec/front/unit/readerhighlight_spec.lua[0m:[36m316[0m: [1mReaderhighlight module highlight for PDF documents in scroll mode for reflowed page should response on tap gesture[0m (38.01 ms)
[32m[----------][0m 21 tests from spec/front/unit/readerhighlight_spec.lua (2283.70 ms total)

[32m[----------][0m Global test environment teardown.
[32m[==========][0m 21 tests from 1 test file ran. (2284.10 ms total)
[32m[  PASSED  ][0m 21 tests.
----------------------------------- stderr -----------------------------------
ObjectCache(0xfffde527c118)::~ObjectCache(): WARNING! LEAK! object 0xfffde129e0e0 still has count 1 (id /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/data/tessdata/eng.traineddatapunc-dawg)
ObjectCache(0xfffde527c118)::~ObjectCache(): WARNING! LEAK! object 0xfffde129e150 still has count 1 (id /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/data/tessdata/eng.traineddataword-dawg)
ObjectCache(0xfffde527c118)::~ObjectCache(): WARNING! LEAK! object 0xfffde129e1c0 still has count 1 (id /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/data/tessdata/eng.traineddatanumber-dawg)
ObjectCache(0xfffde527c118)::~ObjectCache(): WARNING! LEAK! object 0xfffde129e230 still has count 1 (id /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/data/tessdata/eng.traineddatabigram-dawg)
ObjectCache(0xfffde527c118)::~ObjectCache(): WARNING! LEAK! object 0xfffde129e2a0 still has count 1 (id /home/buildozer/aports/community/koreader/src/koreader-v2026.07.2/koreader-emulator-aarch64-alpine-linux-musl/koreader/data/tessdata/eng.traineddatafreq-dawg)
==============================================================================


Ok:                78  
Fail:              0   
