Files
MeowOS-SDK/tuku/test/run_webtoon_tests.sh
T
AskaEth 562cc44931 feat(tuku): CBZ 档案册集成——档案页源/书库列册/解压缓存
- logic/reader/archive_source.c:档案册页源实现 M6 mr_book 契约
  (mz_open/mz_count/mz_entry_at/mz_read_alloc),条目自然序 + 图片后缀 +
  路径安全(`..`/绝对路径/反斜杠/隐藏段/内嵌 NUL)+ 单页尺寸上限过滤;
  meta 按需解压只读图片头(不落缓存,结果按页记忆);mr_book_open_auto
  统一目录册/档案册开册,翻页与条漫两套消费代码零改动。
- logic/reader/page_cache.c/h:解压页落 MeowData/<pkg>/cache,LRU 64 页或
  32MiB,启动清 mrpage_* 孤儿,写入 .part + rename;与缩略图缓存同目录、
  前缀隔离;互斥量保护,解码/缩略图线程可并发。
- logic/library.c/h:扫描直接子文件里的 .cbz/.zip 成册(行=文件名+页数,
  点入直接阅读);档案探测由调用方注入(logic 不依赖 zip 容器),不注入时
  与 M7 行为逐字一致;册间衔接兄弟表=含图目录∪含页档案册,同列自然序。
  条目构造/副标题/角标/兄弟判据拆成小函数,便于 M13 书库重写拼接。
- ui/library:档案册行 + 封面缩略图(解压档内首图)、扫描注入探测、缓存
  目录统一由 page_cache 推导(一份规则)。
- ui/reader:open_book 走 mr_book_open_auto;跨册衔接纳入档案册。
- build_tuku.sh 补 zip/archive/cache 源与 sysroot zlib 头(zip.c include
  <zlib.h>);run_tests.sh 纳入 zip+cbz 用例;run_webtoon_tests.sh 的宿主
  集成构建补新源与 -lz;.gitignore 同步测试产物。
- test/test_cbz.c(267 项断言)+ make_cbz_samples.py 真实 cbz 夹具:
  列档/自然序/解压字节 CRC/路径安全/坏档与 zip 炸弹容错/LRU 与 32MiB 上限/
  启动清孤儿/续读角标/封面首图。
2026-11-05 11:58:12 +08:00

50 lines
2.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# run_webtoon_tests.sh — M7 条漫/模式/续读/跳页宿主测试(纯 C,不链 SDK、不需要设备)。
# - test_webtoon_strip:条漫排版(适宽高度/偏移表/可见窗口/未知尺寸兜底/跳页互逆)
# - test_jump_page:跳页状态机(预解码落位/超时降级/非法目标)与落位偏移映射
# - test_mode_persist:阅读模式与每册 last page 的 meow_config 持久化/坏值/写失败
# - test_cont_adjacent:册间自然序边界(首/末册/嵌套/符号链接)+ 书库续读角标
# 编译口径同 test/run_tests.sh(-I. + SDK 头,不链 meow_ui.a;配置/日志用存根)。
set -e
cd "$(dirname "$0")/.."
SDK="${MEOW_SDK_DIR:-$HOME/Proj/MeowOS-SDK/sdk}"
CFLAGS="-Wall -Wextra -O1 -I. -I$SDK"
OUT="build/host"
mkdir -p "$OUT"
gcc $CFLAGS test/test_webtoon_strip.c logic/reader/nav.c -o "$OUT/test_webtoon_strip"
"$OUT/test_webtoon_strip"
gcc $CFLAGS test/test_jump_page.c logic/reader/nav.c -o "$OUT/test_jump_page"
"$OUT/test_jump_page"
gcc $CFLAGS test/test_mode_persist.c logic/reader.c test/settings_reader_stub.c \
-o "$OUT/test_mode_persist"
"$OUT/test_mode_persist"
gcc $CFLAGS test/test_cont_adjacent.c logic/library.c logic/reader.c \
test/settings_reader_stub.c -o "$OUT/test_cont_adjacent"
"$OUT/test_cont_adjacent"
# 可选:真实 SDK 源码树上的阅读器集成测试(模式切换/续读/跳页/册间衔接)。
# 只发布 meow_ui.a 的交付环境自动 SKIP(与 test/run_tests.sh 的 settings_lock_host 同口径)。
if [ -f "$SDK/meow_ui_view.c" ] && [ -f "$SDK/meow_ui_config.c" ]; then
gcc $CFLAGS -DMEOW_UI_HOST_TEST -DMR_READER_HOST_TEST -I"$SDK/include" \
test/test_mode_switch_host.c ui/reader/reader.c \
logic/library.c logic/reader.c logic/reader/page_source.c \
logic/reader/archive_source.c logic/reader/page_cache.c logic/zip/zip.c \
logic/reader/nav.c \
"$SDK"/meow_ui_gfx.c "$SDK"/meow_ui_sys.c "$SDK"/meow_ui_theme.c \
"$SDK"/meow_ui_vol.c "$SDK"/meow_ui_log.c "$SDK"/meow_ui_widget.c \
"$SDK"/meow_ui_input.c "$SDK"/meow_ui_activity.c "$SDK"/meow_ui_dialog.c \
"$SDK"/meow_ui_ime.c "$SDK"/meow_ui_str.c "$SDK"/meow_pinyin.c \
"$SDK"/meow_ui_draw.c "$SDK"/meow_ui_view.c "$SDK"/meow_ui_box.c \
"$SDK"/meow_ui_anim.c "$SDK"/meow_ui_scroll.c "$SDK"/meow_ui_img.c \
"$SDK"/meow_ui_media.c "$SDK"/meow_notify_ipc.c "$SDK"/meow_ui_config.c \
"$SDK"/meow_ui_nav.c "$SDK"/stb_image.c "$SDK"/test_host_stub.c \
-pthread -lm -lz -o "$OUT/test_mode_switch_host"
"$OUT/test_mode_switch_host"
else
echo "SKIP test_mode_switch_host: SDK 源码树不可用(只发布 meow_ui.a 的环境)"
fi