2424 * 副作用:写自己的探针文件(`tmp/t15/props-probe.ts`,跑完留在原地可复算;**仓内零新增**)。
2525 * 边界:路径全用 `fileURLToPath` + `relative()` 现算(本仓路径含空格;手数 `../` 会建出空树 —— #65)。
2626 */
27- import { readFileSync , writeFileSync } from "node:fs" ;
27+ import { mkdirSync , readFileSync , writeFileSync } from "node:fs" ;
2828import { createRequire } from "node:module" ;
2929import { dirname , join , relative , sep } from "node:path" ;
3030import { fileURLToPath } from "node:url" ;
@@ -69,6 +69,10 @@ describe("A6 · 每个视图组件的 props 只来自 slot(**类型级** tsc
6969
7070 it ( "① 探针落盘(**仓内零新增**:住 gitignored 的 `tmp/t15/`)且逐字可复算" , ( ) => {
7171 const src = probeSource ( ) ;
72+ // `mkdirSync` 是**必需**的,不是保险:导出树(`git archive` 的变异体/CONTROL 树)里
73+ // `.superpowers/**` 是 gitignored ⇒ **整个目录都不存在**,不建就 `ENOENT` ——
74+ // 实测(T15 CONTROL-B):两条用例**都不是断言失败而是 setup 失败**,会被误读成「判据没牙」。
75+ mkdirSync ( PROBE_DIR , { recursive : true } ) ;
7276 writeFileSync ( PROBE , src , "utf8" ) ;
7377 expect ( readFileSync ( PROBE , "utf8" ) ) . toBe ( src ) ;
7478 expect ( src . split ( "createElement(" ) . length - 1 , "5 个视图必须各有一个探针调用" ) . toBe ( 5 ) ;
@@ -83,6 +87,7 @@ describe("A6 · 每个视图组件的 props 只来自 slot(**类型级** tsc
8387 const diagnosticsOf = ( file : string ) : string [ ] => ts . getPreEmitDiagnostics ( ts . createProgram ( [ file ] , options ) )
8488 . filter ( ( d : { file ?: { fileName : string } } ) => d . file && flat ( d . file . fileName ) === flat ( file ) )
8589 . map ( ( d : { messageText : unknown } ) => ts . flattenDiagnosticMessageText ( d . messageText , " " ) ) ;
90+ mkdirSync ( PROBE_DIR , { recursive : true } ) ;
8691 writeFileSync ( PROBE , probeSource ( ) , "utf8" ) ;
8792 const mine = diagnosticsOf ( PROBE ) ;
8893 expect ( mine , `视图 props 与 slot 不一致(类型级):\n${ mine . join ( "\n" ) } ` ) . toEqual ( [ ] ) ;
0 commit comments