1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
寻观「标准库」之书。
寻观「豫构」之「试包工具」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「构建基础」之「包定位」之书。
「:文言:实编包中 C,以验归属、头依赖与归档。汉语:在含空格临时项目中验证完整编译链接,不使用测试项目的 Makefile。:」
「断言」乃化「爻」而化「字符串」而「有」也。
「断言」者会「条件」而会「消息」而若「条件」则「元」否则「发生事故」授以「有」于「消息」也。
「参数们」者「获取参数」于「元」也。
「断言」于(「等于」于(「长度」授以「字符串」于「参数们」)于「二」)于『需要豫构与编译器路径』。
「工具」者「真实路径」于(「第N个」于「零」于「参数们」)也。
「编译器」者「真实路径」于(「第N个」于「一」于「参数们」)也。
「临时」者「操作系统」之「子进程」之「获取输出」于『mktemp』于(「列」【『-d』,『/tmp/豫构原生验证.XXXXXX』】)也。
「断言」于(「临时」中「零」)于『建立临时目录失败』。
「根」者「真实路径」于(「去除串结尾」于『「:换行:」』于(「临时」中「一」))也。
「项目」者「路径合并」于「根」于『含 空格 项目』也。
「写样例」乃化「字符串」而化「字符串」而「有」也。
「写样例」者会「名」而会「文」而「写试包文件」于(「路径合并」于「项目」于「名」)于「文」也。
「原配置」者『「类型」者「典」【「种类」者『可执行文件「:』:」也,「入口」者『入口「:』:」也,「文件名」者『yy试包「:』:」也,】也。「原生」者「典」【「源文件」者「列」【『甲/实现.c「:』:」,『乙/实现.c「:』:」】也,「包含目录」者「列」【『包含「:』:」】也,】也。』也。
「写样例」于『应用/应用。包。豫』于「原配置」。
「写样例」于『应用/入口。豫』于『「取甲」乃化「《《内建类型:字符串》》」而「《《内建类型:字符串》》」也。
「取甲」者会「文」而《《C调用》》名『豫构测试_甲「:』:」传「文」也。
「取乙」乃化「《《内建类型:字符串》》」而「《《内建类型:字符串》》」也。
「取乙」者会「文」而《《C调用》》名『豫构测试_乙「:』:」传「文」也。
「印」乃化「《《内建类型:字符串》》」而「《《内建类型:有》》」也。
「印」者会「文」而《《C调用》》名『豫言_打印行「:』:」传「文」也。
「印」于(「取甲」于『「:』:」)。
「印」于(「取乙」于『「:』:」)。』。
「写样例」于『应用/甲/实现.c』于『#include "公共包含.h"
#include "配置.h"
豫言值 豫构测试_甲(豫言值 未用) { return 复制字符串为豫言值(sizeof(测试文本), 测试文本); }
』。
「写样例」于『应用/乙/实现.c』于『#include "公共包含.h"
豫言值 豫构测试_乙(豫言值 未用) { return 复制字符串为豫言值(sizeof("乙"), "乙"); }
』。
「写样例」于『应用/包含/配置.h』于『#define 测试文本 "初始"「:换行:」』。
「写样例」于『应用/未注册.c』于『此文件不是合法 C,不应编译。』。
「写样例」于『Makefile』于『all:「:换行:」「:制表:」false「:换行:」』。
「切换」者「切换当前路径」于「项目」也。
「断言」于(「等于」于(「切换」中「零」)于「零」)于『进入工程失败』。
「构建参数」者((「列」于「字符串」)也(「列」【『构建』,『应用』,『--编译器』,「编译器」,『--输出』,『yy原生验收』,『-j』,『2』】))也。
「构建」乃化「有」而(「爻」合「字符串」合「字符串」)也。
「构建」者会「无」而「操作系统」之「子进程」之「获取输出」于「工具」于「构建参数」也。
「构建输出」乃化(「爻」合「字符串」合「字符串」)而「字符串」也。
「构建输出」者会「结果」而(「结果」中「一」)附(「结果」中「二」)也。
「确认输出」乃化「字符串」而「有」也。
「确认输出」者会「预期」而
虑「结果」者「操作系统」之「子进程」之「获取输出」于(「路径合并」于「项目」于『yy原生验收』)于「罄」而
「断言」于(「且」于(「结果」中「零」)于(「串相等」于(「结果」中「一」)于「预期」))于(『原生输出错误:』附(「构建输出」于「结果」))也。
「初建」者「构建」于「元」也。
「断言」于(「初建」中「零」)于(「构建输出」于「初建」)。
「断言」于(「是子字符串吗」于『编译包内 C:』于(「构建输出」于「初建」))于『没有编译注册的 C』。
「断言」于(「非」于(「是子字符串吗」于『yy_runtime_lib』于(「构建输出」于「初建」)))于『包模式仍调用运行时 Makefile』。
「确认输出」于『初始「:换行:」乙「:换行:」』。
「复建」者「构建」于「元」也。
「断言」于(「复建」中「零」)于(「构建输出」于「复建」)。
「断言」于(「非」于(「是子字符串吗」于『编译包内 C:』于(「构建输出」于「复建」)))于『无修改仍重编 C』。
「断言」于(「非」于(「是子字符串吗」于『归档包内 C:』于(「构建输出」于「复建」)))于『无修改仍重建归档』。
「写样例」于『应用/包含/配置.h』于『#define 测试文本 "更新"「:换行:」』。
「改头」者「构建」于「元」也。
「断言」于(「改头」中「零」)于(「构建输出」于「改头」)。
「断言」于(「是子字符串吗」于(『编译包内 C:』附(「路径合并」于「项目」于『应用/甲/实现.c』))于(「构建输出」于「改头」))于『头文件改变没有重编消费者』。
「断言」于(「非」于(「是子字符串吗」于(『编译包内 C:』附(「路径合并」于「项目」于『应用/乙/实现.c』))于(「构建输出」于「改头」)))于『头文件改变重编了无关源码』。
「确认输出」于『更新「:换行:」乙「:换行:」』。
「写样例」于『应用/乙/实现.c』于『#include "公共包含.h"
豫言值 豫构测试_乙(豫言值 未用) { return 复制字符串为豫言值(sizeof("改乙"), "改乙"); }
』。
「改源」者「构建」于「元」也。
「断言」于(「改源」中「零」)于(「构建输出」于「改源」)。
「确认输出」于『更新「:换行:」改乙「:换行:」』。
「:文言:去其注册,不得以旧归档补之。汉语:入口仍调用乙,移除注册后必须链接失败,证明没有残留成员或自动扫描回退。:」
「写样例」于『应用/应用。包。豫』于『「类型」者「典」【「种类」者『可执行文件「:』:」也,「入口」者『入口「:』:」也,「文件名」者『yy试包「:』:」也,】也。「原生」者「典」【「源文件」者「列」【『甲/实现.c「:』:」】也,「包含目录」者「列」【『包含「:』:」】也,】也。』。
「撤源」者「构建」于「元」也。
「断言」于(「非」于(「撤源」中「零」))于『移除 C 注册后仍链接了旧对象』。
「断言」于(「是子字符串吗」于『豫构测试_乙』于(「构建输出」于「撤源」))于『移除注册没有报告缺失符号』。
「写样例」于『应用/应用。包。豫』于「原配置」。
虑「无」者「删文件」于(「路径合并」于「项目」于『应用/包含/配置.h』)而「元」。
「缺头」者「构建」于「元」也。
「断言」于(「非」于(「缺头」中「零」))于『头文件删除后错误复用缓存』。
「写样例」于『应用/包含/配置.h』于『#define 测试文本 "更新"「:换行:」』。
「写样例」于『应用/子包/子包。包。豫』于『』。
「写样例」于『应用/子包/越界.c』于『#include "公共包含.h"
豫言值 豫构测试_乙(豫言值 未用) { return 复制字符串为豫言值(sizeof("乙"), "乙"); }
』。
「写样例」于『应用/应用。包。豫』于『「类型」者「典」【「种类」者『可执行文件「:』:」也,「入口」者『入口「:』:」也,「文件名」者『yy试包「:』:」也,】也。「原生」者「典」【「源文件」者「列」【『子包/越界.c「:』:」】也,「包含目录」者「列」【『包含「:』:」】也,】也。』。
「越界」者「构建」于「元」也。
「断言」于(「且」于(「非」于(「越界」中「零」))于(「是子字符串吗」于『跨越子包边界』于(「构建输出」于「越界」)))于『C 注册穿过子包边界』。
「断言」于(「操作系统」之「子进程」之「运行」于『ln』于(「列」【『-s』,『甲/实现.c』,(「路径合并」于「项目」于『应用/别名.c』)】))于『创建测试链接失败』。
「写样例」于『应用/应用。包。豫』于『「类型」者「典」【「种类」者『可执行文件「:』:」也,「入口」者『入口「:』:」也,「文件名」者『yy试包「:』:」也,】也。「原生」者「典」【「源文件」者「列」【『别名.c「:』:」】也,「包含目录」者「列」【『包含「:』:」】也,】也。』。
「链接」者「构建」于「元」也。
「断言」于(「且」于(「非」于(「链接」中「零」))于(「是子字符串吗」于『符号链接』于(「构建输出」于「链接」)))于『C 注册通过了符号链接』。
「写样例」于『应用/应用。包。豫』于「原配置」。
「:文言:系统库明载,撤之则链败。汉语:调用 SQLite 实际符号,验证系统依赖进入最终链接且撤销声明不能复用旧成功产物。:」
「系统配置」者『「类型」者「典」【「种类」者『可执行文件「:』:」也,「入口」者『入口「:』:」也,「文件名」者『yy自定系统「:』:」也,】也。「原生」者「典」【「源文件」者「列」【『绑定.c「:』:」】也,「系统依赖」者「列」【『sqlite3「:』:」】也,】也。』也。
「写样例」于『系统/系统。包。豫』于「系统配置」。
「写样例」于『系统/绑定.c』于『#include "公共包含.h"
#include <sqlite3.h>
豫言值 测试系统库(豫言值 未用) { sqlite3_initialize(); return 复制字符串为豫言值(sizeof("系统库成功"), "系统库成功"); }
』。
「写样例」于『系统/入口。豫』于『「取」乃化「《《内建类型:字符串》》」而「《《内建类型:字符串》》」也。
「取」者会「无」而《《C调用》》名『测试系统库「:』:」传「无」也。
「印」乃化「《《内建类型:字符串》》」而「《《内建类型:有》》」也。
「印」者会「文」而《《C调用》》名『豫言_打印行「:』:」传「文」也。
「印」于(「取」于『「:』:」)。
』。
「构系统」乃化「有」而(「爻」合「字符串」合「字符串」)也。
「构系统」者会「无」而「操作系统」之「子进程」之「获取输出」于「工具」于(「列」【『构建』,『系统』,『--编译器』,「编译器」】)也。
「系统结果」者「构系统」于「元」也。
「断言」于(「系统结果」中「零」)于(「构建输出」于「系统结果」)。
「系统运行」者「操作系统」之「子进程」之「获取输出」于(「路径合并」于「项目」于『yy自定系统』)于「罄」也。
「断言」于(「且」于(「系统运行」中「零」)于(「是子字符串吗」于『系统库成功』于(「系统运行」中「一」)))于『声明程序名称或系统库调用失败』。
「写样例」于『系统/系统。包。豫』于(「串查找替换」于「系统配置」于『『sqlite3「:』:」』于『』)。
「断言」于(「非」于((「构系统」于「元」)中「零」))于『撤销系统库后仍复用成功链接』。
「打印行」于『豫构原生构建测试通过』。
「:文言:库不假入口,亦不借总集成器。汉语:无总集库构建普通模块,忽略测试;普通模块损坏时构建必须失败。:」
「写样例」于『纯库/纯库。包。豫』于『』。
「写样例」于『纯库/数值。豫』于『「值」者『库值「:』:」也。』。
「写样例」于『纯库/坏例。测试。豫』于『故意损坏的测试,不属于默认库构建。』。
「构纯库」乃化「有」而(「爻」合「字符串」合「字符串」)也。
「构纯库」者会「无」而「操作系统」之「子进程」之「获取输出」于「工具」于(「列」【『构建』,『纯库』,『--编译器』,「编译器」】)也。
「库结果」者「构纯库」于「元」也。
「断言」于(「库结果」中「零」)于(「构建输出」于「库结果」)。
「断言」于(「非」于(「路径存在」于(「路径合并」于「项目」于『yy纯库』)))于『库不应生成可执行文件』。
「写样例」于『纯库/坏模块。豫』于『「错误」者「不存在的定义」也。』。
「断言」于(「非」于((「构纯库」于「元」)中「零」))于『库未编译普通模块』。
「打印行」于『库与可执行文件枚举构建测试通过』。
「打印行」于(『测试工程:』附「项目」)。