test: split log silent rows into silent_test.ww per ref/hare/log/silent.ha
Pure file-boundary move: the two silent-logger rows
(silentwritesnothing, silentignoresprintfln) leave lib/log/log_test.ww
for lib/log/silent_test.ww, mirroring ref/hare/log/silent.ha's
ownership (ref/hare/log has no test files of its own; the file name
follows the impl layout as directed). Only the two banner lines are
deleted; both moved blocks are byte-identical. silent_test.ww imports
log + memio only (neither row uses streq/fmt/io).
The specced funcs_test/global_test halves stay merged in log_test.ww:
the streq helper is consumed by six lprint* rows AND the
setloggerswap/printflnglobal global rows, and same-package test files
compile as one unit in dir mode (duplicate fn rejected), so that
boundary cannot be a pure move; reported upstream rather than
relocating the majority of rows.
Ordering: defaultwiredtoglobal must precede any log.setlogger caller.
All setlogger callers (setloggerswap, printflnglobal) remain after it
in log_test.ww; the silent rows never touch setlogger, and dir-mode
concat order (pkgsort: log_test.ww < silent_test.ww) keeps
defaultwiredtoglobal first overall.
Consumers: Makefile LIBRARY_TESTS gains lib/log/silent_test.ww beside
the log_test.ww entry; test/byteid/libbyteid_test.ww roster gains
fx("lib/log/silent_test.ww") after the log_test row, roster 44->45
(+1, NENTEXPECT bumped).
Validation: standalone ww test lib/log/log_test.ww (9 passed) and
lib/log/silent_test.ww (2 passed); dir mode ww test lib/log (11
passed, defaultwiredtoglobal first); test/byteid/libbyteid_test.ww
compile-only build exit 0, 45 roster appends == NENTEXPECT.
This commit is contained in:
2
Makefile
2
Makefile
@@ -488,7 +488,7 @@ LIBRARY_TESTS = lib/errors/errno_test.ww lib/ascii/ascii_test.ww \
|
|||||||
lib/bytes/bytes_test.ww lib/encoding/utf8/utf8_test.ww \
|
lib/bytes/bytes_test.ww lib/encoding/utf8/utf8_test.ww \
|
||||||
lib/bufio/bufio_test.ww lib/math/random/random_test.ww \
|
lib/bufio/bufio_test.ww lib/math/random/random_test.ww \
|
||||||
lib/math/checked/checked_test.ww lib/fmt/fmt_test.ww \
|
lib/math/checked/checked_test.ww lib/fmt/fmt_test.ww \
|
||||||
lib/log/log_test.ww lib/fnmatch/fnmatch_test.ww \
|
lib/log/log_test.ww lib/log/silent_test.ww lib/fnmatch/fnmatch_test.ww \
|
||||||
lib/shlex/shlex_test.ww lib/time/time_test.ww \
|
lib/shlex/shlex_test.ww lib/time/time_test.ww \
|
||||||
lib/encoding/hex/hex_test.ww lib/memio/memio_test.ww \
|
lib/encoding/hex/hex_test.ww lib/memio/memio_test.ww \
|
||||||
lib/temp/temp_test.ww lib/getopt/getopt_test.ww \
|
lib/temp/temp_test.ww lib/getopt/getopt_test.ww \
|
||||||
|
|||||||
@@ -89,28 +89,6 @@ fn streq(a: str, b: str) bool = {
|
|||||||
assert(!(!streq(memio.string(&mem), "\n")));
|
assert(!(!streq(memio.string(&mem), "\n")));
|
||||||
};
|
};
|
||||||
|
|
||||||
// ---- silent: lprintln through log.silent writes no bytes --------------
|
|
||||||
|
|
||||||
// The silent logger's callback discards args without touching fmt or
|
|
||||||
// any sink. Verified indirectly: we wire a memio.stream and never
|
|
||||||
// pass it to log.silent — but the @test fn calling log.new first
|
|
||||||
// triggers [[log.ensureinit]] so log.silent is non-nil here. Then
|
|
||||||
// lprintln(silent, ...) must not crash and the memio sink must stay
|
|
||||||
// empty (silent has no path to it anyway).
|
|
||||||
@test fn silentwritesnothing() void = {
|
|
||||||
let buf: [16]u8;
|
|
||||||
let mem = memio.fixed(buf[0:16]);
|
|
||||||
let s = &mem.vt;
|
|
||||||
|
|
||||||
let sl = log.new(s); // triggers log.ensureinit; populates log.silent
|
|
||||||
|
|
||||||
assert(!(log.silent == nil));
|
|
||||||
|
|
||||||
log.lprintln(log.silent, "ignored", 1i64, true);
|
|
||||||
|
|
||||||
assert(!(mem.pos != 0));
|
|
||||||
};
|
|
||||||
|
|
||||||
// ---- setlogger swap: global redirects to a new sink, then to silent --
|
// ---- setlogger swap: global redirects to a new sink, then to silent --
|
||||||
|
|
||||||
// Three-phase: install sl1 as global, println writes there; swap to
|
// Three-phase: install sl1 as global, println writes there; swap to
|
||||||
@@ -181,25 +159,6 @@ fn streq(a: str, b: str) bool = {
|
|||||||
assert(!(mem2.pos != 0));
|
assert(!(mem2.pos != 0));
|
||||||
};
|
};
|
||||||
|
|
||||||
// ---- silent.printfln writes nothing ---------------------------------
|
|
||||||
|
|
||||||
// The silent logger's printfln callback discards args without touching
|
|
||||||
// fmt or any sink. Same pattern as [[silentwritesnothing]] for the
|
|
||||||
// bare-args path.
|
|
||||||
@test fn silentignoresprintfln() void = {
|
|
||||||
let buf: [16]u8;
|
|
||||||
let mem = memio.fixed(buf[0:16]);
|
|
||||||
let s = &mem.vt;
|
|
||||||
|
|
||||||
let sl = log.new(s); // triggers log.ensureinit; populates log.silent
|
|
||||||
|
|
||||||
assert(!(log.silent == nil));
|
|
||||||
|
|
||||||
log.lprintfln(log.silent, "ignored={}", 1i64);
|
|
||||||
|
|
||||||
assert(!(mem.pos != 0));
|
|
||||||
};
|
|
||||||
|
|
||||||
// ---- lprintfln: indexed {N} placeholder across log → fmt seam -------
|
// ---- lprintfln: indexed {N} placeholder across log → fmt seam -------
|
||||||
|
|
||||||
// The fmt parser proper is covered in fmttest; this pins that log's
|
// The fmt parser proper is covered in fmttest; this pins that log's
|
||||||
|
|||||||
41
lib/log/silent_test.ww
Normal file
41
lib/log/silent_test.ww
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
package log_test;
|
||||||
|
|
||||||
|
import log;
|
||||||
|
import memio;
|
||||||
|
|
||||||
|
// The silent logger's callback discards args without touching fmt or
|
||||||
|
// any sink. Verified indirectly: we wire a memio.stream and never
|
||||||
|
// pass it to log.silent — but the @test fn calling log.new first
|
||||||
|
// triggers [[log.ensureinit]] so log.silent is non-nil here. Then
|
||||||
|
// lprintln(silent, ...) must not crash and the memio sink must stay
|
||||||
|
// empty (silent has no path to it anyway).
|
||||||
|
@test fn silentwritesnothing() void = {
|
||||||
|
let buf: [16]u8;
|
||||||
|
let mem = memio.fixed(buf[0:16]);
|
||||||
|
let s = &mem.vt;
|
||||||
|
|
||||||
|
let sl = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||||
|
|
||||||
|
assert(!(log.silent == nil));
|
||||||
|
|
||||||
|
log.lprintln(log.silent, "ignored", 1i64, true);
|
||||||
|
|
||||||
|
assert(!(mem.pos != 0));
|
||||||
|
};
|
||||||
|
|
||||||
|
// The silent logger's printfln callback discards args without touching
|
||||||
|
// fmt or any sink. Same pattern as [[silentwritesnothing]] for the
|
||||||
|
// bare-args path.
|
||||||
|
@test fn silentignoresprintfln() void = {
|
||||||
|
let buf: [16]u8;
|
||||||
|
let mem = memio.fixed(buf[0:16]);
|
||||||
|
let s = &mem.vt;
|
||||||
|
|
||||||
|
let sl = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||||
|
|
||||||
|
assert(!(log.silent == nil));
|
||||||
|
|
||||||
|
log.lprintfln(log.silent, "ignored={}", 1i64);
|
||||||
|
|
||||||
|
assert(!(mem.pos != 0));
|
||||||
|
};
|
||||||
@@ -43,7 +43,7 @@ import time;
|
|||||||
def MID: i32 = 0;
|
def MID: i32 = 0;
|
||||||
def MDIVERGE: i32 = 1;
|
def MDIVERGE: i32 = 1;
|
||||||
def MWWREJECT: i32 = 2;
|
def MWWREJECT: i32 = 2;
|
||||||
def NENTEXPECT: i32 = 44;
|
def NENTEXPECT: i32 = 45;
|
||||||
|
|
||||||
type ent = struct {
|
type ent = struct {
|
||||||
fixture: str, // repo-relative .ww; "" -> probe entry
|
fixture: str, // repo-relative .ww; "" -> probe entry
|
||||||
@@ -142,6 +142,7 @@ fn corpus() []ent = {
|
|||||||
append(es, fx("lib/encoding/base64/base64_test.ww"));
|
append(es, fx("lib/encoding/base64/base64_test.ww"));
|
||||||
append(es, fx("lib/errors/errno_test.ww"));
|
append(es, fx("lib/errors/errno_test.ww"));
|
||||||
append(es, fx("lib/log/log_test.ww"));
|
append(es, fx("lib/log/log_test.ww"));
|
||||||
|
append(es, fx("lib/log/silent_test.ww"));
|
||||||
append(es, fx("lib/os/stat_test.ww"));
|
append(es, fx("lib/os/stat_test.ww"));
|
||||||
// toktest/asttest resolve `import syntax` via -I lib/ww, cf 905
|
// toktest/asttest resolve `import syntax` via -I lib/ww, cf 905
|
||||||
append(es, fxi("lib/ww/syntax/tok_test.ww", "lib/ww"));
|
append(es, fxi("lib/ww/syntax/tok_test.ww", "lib/ww"));
|
||||||
|
|||||||
Reference in New Issue
Block a user