Repository navigation
Commit c2d1663
probe
fix(test): 修 watcher 测试在 macOS 上空转
`test:capabilities` 在 macOS 上一直是红的,挡住 #1 / #2 / #5 三个 PR 的合并。
根因是路径的两种拼法:
- 测试的期望值来自 `mkdtemp(join(tmpdir(), ...))`,在 macOS 上是未解析的
`/var/folders/...`
- `createWorkspaceGitWatcher` 内部做了 `realpath`,返回 `/private/var/folders/...`
而 `/var` 是 `/private/var` 的符号链接。
**实现是对的** —— 文件系统 watcher 必须用真实路径,用符号链接那种拼法不保证
指向同一个 inode。错的是测试拿未解析的路径去比。
## 这个测试此前没有在验任何东西
`mkdtemp` 的返回值用在两处。断言 `directory === workspace` 因此永远不成立;
更要紧的是闭包里
if (directory === workspace) watchWorkspacePath = listener;
也永远不成立,于是 `watchWorkspacePath` 保持 `undefined`,紧接着的
`watchWorkspacePath?.('.git/index')` 变成一次空调用 —— 后面
`expect(onChange).toHaveBeenCalledWith('repository')` 验的是一个从未被触发的
监听器。
所以它不是「因为路径 bug 而失败」,它是**什么都没验就绿了**,直到
`#4` 修好 `typecheck:test`、CI 终于跑到这个门,才把一直没生效的断言暴露出来。
## 验证
- `capability` 套件 5149 passed / 0 failed(此前 5148 + 1 failed)
- 反向验证:去掉 `realpath` 后该测试转红 —— 证明它现在真的在验1 parent 6c475ab commit c2d1663
1 file changed
Lines changed: 14 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
51 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
52 | 63 | | |
53 | 64 | | |
54 | 65 | | |
| |||
0 commit comments