xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_vfs 测试套件

概述

本目录包含 xt_vfs 虚拟文件系统的单元测试,基于 Unity 测试框架。测试覆盖 VFS 核心 API,使用 RAM FS(内存模拟)和 Windows 原生 FS 两种后端。

文件

文件 说明
xt_main.c 70 项 Unity 单元测试,18 个分组(全功能配置)
xmake.lua 构建配置,支持环境变量切换编译选项
run_tests.py 多配置自动化测试脚本(7 组配置)

**注意**:native FS 后端已提升为平台组件,位于 platforms/windows/components/xt_vfs_native/,不在本测试目录中。

编译运行

单配置测试

cd tests\xt_vfs
xt --target windows/simulator fullclean build
xt --target windows/simulator run

预期输出:

70 Tests 0 Failures 0 Ignored
OK

多配置测试

python run_tests.py

自动以 7 种配置依次编译运行:

配置 HEAP DIR CWD THREAD_SAFE 测试数
默认全功能 1 1 0 1 70
静态内存 0 1 0 1 22
最小裸机 0 0 0 1 20
相对路径 1 1 1 1 73
裸机无锁 0 1 0 0 22
堆模式无目录 1 0 0 1 62
极小资源 0 1 0 0 22

极小资源配置:PATH_MAX=64, MAX_FILES=4, MAX_MOUNTS=3, MAX_DIRS=2

自定义配置

通过环境变量手动指定:

# 静态内存 + 无目录
$env:XT_VFS_USE_HEAP="0"
$env:XT_VFS_ENABLE_DIR="0"
xt --target windows/simulator fullclean build
xt --target windows/simulator run

可用环境变量见 components/xt_vfs/xt_vfs_port.h 中所有 XT_VFS_* 宏。

测试分组

# 分组 测试数 说明
1 init/deinit 3 正常初始化、双重初始化、deinit 重置
2 mount/unmount 6 正常挂载、重复前缀、卸载、未找到、NULL 前缀、挂载表满
3 open/close 9 创建关闭、不存在文件、只读回读、无效 fd、文件表满、读写模式、追加、O_EXCL、O_TRUNC
4 read/write 7 写入回读、空文件、大块读写、超过 EOF、size=0、二进制数据、分片读写
5 seek/tell 4 SEEK_SET/CUR/END、无效 whence
6 stat/fstat/statfs 5 stat、fstat、statfs、NULL 参数
7 mkdir/rmdir 2 创建删除、不存在目录
8 目录操作 6 readdir、空目录、closedir 后使用、rewind、telldir/seekdir、目录表满
9 remove/rename 4 删除、重命名、不存在重命名、跨后端重命名
10 truncate/ftruncate 3 缩小、扩展、ftruncate 缩小
11 sync/access 3 写入后 sync、access 存在文件、sync_all
12 多挂载并发 2 两 ramfs 隔离、native+ramfs 共存
13 generation 防悬空 2 旧 fd 拒绝、表满后重新打开
14 错误路径 7 NULL 路径、NULL buf 读写、deinit 后操作、无效 fd、路径边界、write size=0
15 CWD 相对路径 3 chdir/getcwd、绝对路径不变、相对路径 open
16 utime 1 设置并读取 mtime
17 strerror/errno 4 strerror 所有码、errno 初始、errno 错误后、线程表满
18 挂载点灵活性 2 挂载到根 /、嵌套挂载

添加新测试

  1. 在 xt_main.c 中添加测试函数(参照现有格式)
  2. 在 xt_main() 函数的 RUN_TEST 列表中注册
  3. 编译运行验证

测试函数模板:

static void test_xxx(void) {
// 测试逻辑
}
#define TEST_ASSERT_NOT_EQUAL(expected, actual)
int32_t xt_vfs_fd_t
文件描述符类型,内部编码 generation+index,由 VFS Core 生成,用户不应自行构造
#define XT_VFS_O_TRUNC
截断,文件存在且可写时清空内容
#define XT_VFS_O_CREAT
创建,不存在时创建
#define XT_VFS_INVALID_FD
无效文件描述符
xt_vfs_err_t xt_vfs_close(xt_vfs_fd_t fd)
关闭文件
#define XT_VFS_O_RDWR
读写
xt_vfs_fd_t xt_vfs_open(const char *path, xt_vfs_mode_t flags)
打开文件

如需兼容 HEAP=0 配置,确保:

  • setUp 中 HEAP=0 时使用 ramfs 替代 native
  • 目录测试包裹 #if XT_VFS_ENABLE_DIR
  • 不依赖 malloc/calloc