fix(launcher): 开机亮度停100竞态 (agent-230) — settings未读到前不盲写100, 挂起+读到后补应用; launcher aa6c95a4→8ebae666; 宿主4场景PASS
This commit is contained in:
1 parent
c7d02e66e9
commit
f34818037f
8 files changed
+135
-2
No files matched your search
@@ -0,0 +1,73 @@
|
||||
/* test_settings_brightness.c — M2.86 宿主测试:settings.conf「未读到」vs「已读到」的亮度语义。
|
||||
*
|
||||
* 直接 #include "meow_settings.c"(同 TU 平移其 static 常量/函数,与 test_notif_tf.c 把
|
||||
* meow_notif.c 平移进 TU 的既有模式一致);编译期用 -DMEOW_SETTINGS_FILE 覆盖存储路径
|
||||
* (meow_settings.c 注释即声明该宏可编译期覆盖,宿主可直接测)。
|
||||
*
|
||||
* 验证的核心(开机亮度停在 100 的根因修复):
|
||||
* 1) meow_settings_loaded()==0:settings.conf 不可读(S70 早启动 /usr/data 未就绪)→
|
||||
* apply_user_brightness 必须据此挂起,而不是把 display.brightness 默认 101→clamp 100 盲目写盘。
|
||||
* 2) meow_settings_loaded()==1:文件读到 → 用户设定/键缺失默认可信。
|
||||
* 3) meow_settings_brightness_clamped() 的回退语义:文件缺失时确实回退 100(危险值),
|
||||
* 但此时 loaded()==0 才是调用方要不要写盘的判据。
|
||||
*/
|
||||
#include "meow_settings.c"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
const char *conf = MEOW_SETTINGS_FILE; /* 编译期覆盖的路径(需为可写临时文件路径) */
|
||||
FILE *f;
|
||||
|
||||
/* 场景 A:/usr/data 未就绪 → 文件不存在 → loaded==0,clamp 回退 100(危险值,但 loaded==0 提示调用方挂起) */
|
||||
unlink(conf);
|
||||
assert(meow_settings_init() == MEOW_OK);
|
||||
assert(meow_settings_loaded() == 0);
|
||||
int v = meow_settings_brightness_clamped();
|
||||
assert(v == 100);
|
||||
printf("[A] file absent : loaded=%d brightness_clamped=%d (expect 0 / 100)\n",
|
||||
meow_settings_loaded(), v);
|
||||
|
||||
/* 场景 B:文件存在且用户设 60 → loaded==1,clamp 60(用户设定可信) */
|
||||
f = fopen(conf, "w");
|
||||
assert(f);
|
||||
fprintf(f, "# meow-settings 1\ndisplay.brightness=60\ndisplay.brightness_min=1\n");
|
||||
fclose(f);
|
||||
assert(meow_settings_init() == MEOW_OK);
|
||||
assert(meow_settings_loaded() == 1);
|
||||
v = meow_settings_brightness_clamped();
|
||||
assert(v == 60);
|
||||
printf("[B] file =60 : loaded=%d brightness_clamped=%d (expect 1 / 60)\n",
|
||||
meow_settings_loaded(), v);
|
||||
|
||||
/* 场景 C:文件存在但键缺失(仅注释/头)→ loaded==1,默认 101→clamp 100(「已读到→键缺失走默认」) */
|
||||
f = fopen(conf, "w");
|
||||
assert(f);
|
||||
fprintf(f, "# meow-settings 1\n");
|
||||
fclose(f);
|
||||
assert(meow_settings_init() == MEOW_OK);
|
||||
assert(meow_settings_loaded() == 1);
|
||||
v = meow_settings_brightness_clamped();
|
||||
assert(v == 100);
|
||||
printf("[C] file no key : loaded=%d brightness_clamped=%d (expect 1 / 100)\n",
|
||||
meow_settings_loaded(), v);
|
||||
|
||||
/* 场景 D:文件存在但持久值 101 → clamp 到 100(防闪屏上限,M2.39) */
|
||||
f = fopen(conf, "w");
|
||||
assert(f);
|
||||
fprintf(f, "display.brightness=101\ndisplay.brightness_min=1\n");
|
||||
fclose(f);
|
||||
assert(meow_settings_init() == MEOW_OK);
|
||||
assert(meow_settings_loaded() == 1);
|
||||
v = meow_settings_brightness_clamped();
|
||||
assert(v == 100);
|
||||
printf("[D] file =101 : loaded=%d brightness_clamped=%d (expect 1 / 100)\n",
|
||||
meow_settings_loaded(), v);
|
||||
|
||||
unlink(conf);
|
||||
printf("ALL PASS\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user