>>> nextvi: Building community/nextvi 7.3-r0 (using abuild 3.18.0_rc5-r0) started Tue, 11 Aug 2026 14:31:12 +0000 >>> nextvi: Validating /home/buildozer/aports/community/nextvi/APKBUILD... >>> nextvi: Analyzing dependencies... >>> nextvi: Installing for build: build-base (1/1) Installing .makedepends-nextvi (20260811.143113) OK: 433.3 MiB in 110 packages >>> nextvi: Cleaning up srcdir >>> nextvi: Cleaning up pkgdir >>> nextvi: Cleaning up tmpdir >>> nextvi: Fetching https://distfiles.alpinelinux.org/distfiles/edge/nextvi-7.3.tar.gz /var/cache/distfiles/edge/nextvi-7.3.tar.gz: OK >>> nextvi: Fetching https://distfiles.alpinelinux.org/distfiles/edge/nextvi-7.3.tar.gz /var/cache/distfiles/edge/nextvi-7.3.tar.gz: OK >>> nextvi: Unpacking /var/cache/distfiles/edge/nextvi-7.3.tar.gz... -> Entering step: "Build "nextvi-7.3" using "cc"" -> cc vi.c -o vi -pedantic -Wall -Wextra -Wno-implicit-fallthrough -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -Wfatal-errors -std=c99 -Os -fstack-clash-protection -Wformat -Werror=format-security -D_POSIX_C_SOURCE=200809L Test 1: "print line 1" Test 2: "print range 1-3" Test 3: "print all with %" Test 4: "print last line ($)" Test 5: "print literal arg" Test 6: "print line number (=)" Test 7: "substitute simple" Test 8: "substitute global" Test 9: "substitute backreference" Test 10: "conditional else on sub no-match" Test 11: "conditional then on sub match" Test 12: "delete range 2-4" Test 13: "delete to end" Test 14: "delete empty lines (global)" Test 15: "join all no padding" Test 16: "join all with space padding" Test 17: "yank line and paste at end" Test 18: "append to register then paste" Test 19: "put string into register via :reg" Test 20: "global print matching lines" Test 21: "inverted global print" Test 22: "global with chained sub+print" Test 23: "nested global" Test 24: "nested global with substitute" Test 25: "triple nested global with substitute" Test 26: "parity: \: keeps separator literal, chains print in global" Test 27: "parity: \/ in pattern keeps delimiter literal" Test 28: "parity: \/ in replacement keeps delimiter literal" Test 29: "parity: 1 pass, \: -> literal colon" Test 30: "parity: 2 passes, \\\: -> \: -> literal colon" Test 31: "parity: 3 passes, run-7 colon halves 7->3->1" Test 32: "parity: sub delimiter unaffected by separator depth (1 backslash)" Test 33: "parity: selector colon (1 pass) vs body sub colon (2 passes)" Test 34: "conditional then on search found" Test 35: "conditional else on search not found" Test 36: "while loop counted delete" Test 37: "while loop breaks on xuerr (sub no-match)" Test 38: "sort buffer via !" Test 39: "read from pipe into empty buffer" Test 40: "default ic=1: case-insensitive match" Test 41: ":ic toggles to case-sensitive match" Test 42: "exit code :q -> 0" Test 43: "exit code :q 3 -> 3" Test 44: "xuerr is silent and chain continues" Test 45: "vi dw: delete word" Test 46: "vi dd: delete line" Test 47: "vi x: delete char" Test 48: "vi J: join lines with space" Test 49: "vi gUw: uppercase word" Test 50: "vi guw: lowercase word" Test 51: "vi ~: toggle case of char" Test 52: "vi rH: replace char" Test 53: "vi yyp: yank and paste line" Test 54: "vi i...: insert at cursor" Test 55: "vi A...: append at end of line" Test 56: "ex :ud undoes substitute" Test 57: "ex :rd redoes after undo" Test 58: "marks: print range via marks" Test 59: "horizontal range ;6 prints from offset 6" Test 60: "horizontal range ;0;5 prints chars 0-4" Test 61: "empty pattern reuses last keyword" Test 62: "regex alternation in substitute" Test 63: "regex quantifier {2} matches" Test 64: "regex lookahead in substitute" Test 65: "substitute backreference \\0 full match" Test 66: "substitute backreference \\1 group 1" Test 67: "substitute with empty replacement deletes match" Test 68: "ranged :f> search then print current line" Test 69: "global command with explicit range" Test 70: ":bs marks buffer saved so :q exits 0" Test 71: "range arithmetic $-1 prints second-to-last" Test 72: "pipe through tr a-z A-Z uppercases" Test 73: "register expansion %@97 in :p" Test 74: "C12b %\123 — path then literal digits" Test 75: "C12b %\# — path then literal \#" Test 76: "C12b \%123 — escaped %, fully literal" Test 77: "C12b %0\132 — buffer 0 path then literal digits" Test 78: "C12b %@asd — non-digit after %@ emits path + literal @" Test 79: "C12b %\"324 — backslash before quote stays literal" Test 80: "C12b %@100\75 — register 100 then literal digits" Test 81: "err=3 breaks chain on xuerr" Test 82: "err=4 silences error and chain continues" Test 83: ":wq! exits 0" Test 84: ":f< searches backward" Test 85: "g! inverted global chained sub+print" Test 86: "range arithmetic ,2+3 prints 5" Test 87: "yank two registers and paste both" Test 88: "vi cw: change word" Test 89: "vi C: change to end of line" Test 90: "vi D: delete to end of line" Test 91: "vi o: open line below" Test 92: "vi O: open line above" Test 93: "vi s: substitute char" Test 94: "vi S: substitute line" Test 95: "vi P: paste above current line" Test 96: "vi u: undo restores deleted char" Test 97: "vi >>: indent adds tab" Test 98: "vi di(: delete inside parens" Test 99: "vi ci(: change inside parens" Test 100: "vi 2dw: delete 2 words" Test 101: "vi fw+x: find char then delete it" Test 102: "vi K: split line at cursor" Test 103: "E1 :& %@97 — register expansion used as raw vi input" Test 104: "E2 :& \:s// — ex cmd from macro (newline submits)" Test 105: "E3 vi &a — executes register as non-blocking macro" Test 106: "E4 vi && — repeats last & macro" Test 107: "G1 ya! frees reg; pu 97 silently skipped (err 4)" Test 108: "H1 ?? id captures fail; intervening success does not override" Test 109: "H2 ?? id captures success; intervening fail does not override" Test 110: "I1 ??! — fires branch on failure" Test 111: "I2 ?? — fires branch on success" Test 112: "I3 ?! while: 1d deletes first line each pass until f>yes succeeds" Test 113: "J1 seq 0 — batch changes undo as one step" Test 114: "J2 seq -1 — undo tracking disabled; u has no effect" Test 115: "K1 pr+led 0 — :p output captured into register, then pasted" Test 116: "L1 '[ marks first changed line" Test 117: "L2 '] marks last changed line" Test 118: "L3 '* = cursor saved before previous ex command" Test 119: "M1 %@47 expands to the previous regex keyword" Test 120: "N1 $*5/10 — navigate to 50% of file" Test 121: "N2 ;5;#+10= 3 — second char offset via # rebase is 15" Test 122: "O1 vi f(\%x — find (, jump to matching ), delete )" Test 123: "Y1 :pu 97 \!cmd — pipe register content to external command" Test 124: "Y2 :w \!cmd — write buffer range to external command" Test 125: "Q1 1q in nested ??! scope does not propagate quit to vi" Test 126: "R1 :re word — sets keyword; %@47 returns it" Test 127: "R2 :re word; :g// uses set keyword to match lines" Test 128: "R3 :re does not navigate; cursor stays on current line" Test 129: "R4 range :re — escapes regex chars; %@47 reflects escaped pattern" Test 130: "S1 >int>p — forward inline-search range address prints found line" Test 131: "S2 3:int>p — range from current line to forward match" Test 133: "S4 .-2,.+2p — relative arithmetic prints 5 lines around line 4" Test 134: "T1 ;5= 2 — print character offset 5" Test 135: "T2 '97= 0 — print stored row index of mark a" Test 136: "T3 ;5;+10= 3 — second offset from initial (0+10=10), not from 5" Test 137: "U1 g/^$/d — removes all blank lines" Test 138: "U2 g/int/g/;$/& A has a semicolon — nested global appends text" Test 139: "U3 err=1 — prints error; chain continues" Test 140: "U4 2??.= — unset id; branch does not run; chain continues" Test 141: "U5 grp 1:%f+int(.):grp — char offset after "int" is 8" Test 142: "U6 ;5;#+10= 3 — #+10 relative to 5; offset = 15" Test 143: "U7 2,4f>int — ranged :f> restricts search to given line range" Test 144: "U8b marker found — else skipped; :s and :w execute" Test 145: "U9 :%!sort — pipe buffer through sort; output replaces buffer" Test 146: "U10 g/int/ya+ 97 — global appends matching lines to register 97" Test 147: "U11 :%s/(int)|(void)/pre\0after — \0 is the whole match" Test 148: "U12 3,5r \!printf — read only lines 3-5 from pipe output" Test 149: "U13 ;$+1!echo world — cmd output inserted at end; original preserved" Test 150: "V1 1,2?? AND — both succeed → then" Test 151: "V2 1,2?? AND — first fails → else" Test 152: "V3 1,2?? AND — second fails → else" Test 153: "V4 1;2?? OR — first succeeds → then" Test 154: "V5 1;2?? OR — second succeeds → then" Test 155: "V6 1;2?? OR — both fail → else" Test 156: "V7 1,2;3?? — AND group fails, id3 succeeds → then" Test 157: "V8 1,2;3?? — AND group succeeds, id3 fails → then" Test 158: "V9 1,2;3?? — all fail → else" Test 159: "V10 1,99?? — id 99 unset → nop, chain continues" Test 160: "V11 1;99?? — id 99 unset → nop, chain continues" Test 161: "V12 99?? — single unset id → nop, chain continues" Test 162: "V13 1,99;2?? — unset id in AND position → nop" Test 163: "V14 99;1?? — unset id in first OR position → nop" Test 164: "V15 1;99;2?? — unset id in middle OR position → nop" Test 165: "V16 1,2;3,4,5;6?? — first group (1 AND 2) succeeds → then" Test 166: "V17 1,2;3,4,5;6?? — middle group (3 AND 4 AND 5) succeeds → then" Test 167: "V18 1,2;3,4,5;6?? — last operand (6) succeeds → then" Test 168: "V19 1,2;3,4,5;6?? — all groups fail → else" Test 169: "W1 ??! — success captured as failure → else" Test 170: "W2 ??! — failure captured as success → then" Test 171: "W3 ??! in AND — NOT(fail) AND success → then" Test 172: "W4 ??! in OR — NOT(success) OR success → then" Test 173: "W5 ??! both inverted — NOT(success) AND NOT(success) → else" Test 174: "W6 ??! inverted the status of last command" Test 175: "W7 ?? pass the status of last command" Test 176: "mark: pure delete before → mark shifts" Test 177: "mark: undo pure delete before → mark restored" Test 178: "mark: pure delete after → mark unchanged" Test 179: "mark: undo pure delete after → mark unchanged" Test 180: "mark: undo pure delete at mark → mark restored" Test 181: "mark: replacement covers mark → mark clamped" Test 182: "mark: undo replacement covering mark → mark restored" Test 183: "mark: replacement before → mark adjusts" Test 184: "mark: undo replacement before → mark restored" Test 185: "mark: replacement after → mark unchanged" Test 186: "mark: undo replacement after → mark unchanged" Test 187: "mark: :c lossy zone (n_ins=2,n_del=3) → mark clamped" Test 188: "mark: undo :c lossy zone → mark restored" Test 189: "mark: :c mark before lossy zone → mark unchanged" Test 190: "mark: undo :c; mark was before lossy zone → still unchanged" Test 191: "mark: :c fully steps over mark (n_ins=1,n_del=3) → mark clamped" Test 192: "mark: undo :c fully stepping over mark → mark restored" Test 193: "mark: :c before mark (n_insn_del) → not invalidated" Test 196: "mark: undo :c deleted row within new range → mark unchanged" Test 197: "mark: :c before mark (n_ins>n_del) → mark adjusts up" Test 198: "mark: undo :c before mark (n_ins>n_del) → mark restored" Test 199: "X1 \/ — escaped delimiter is literal in pattern" Test 200: "X2 \/ — escaped delimiter is literal in replacement" Test 201: "X3 \\\\ — two backslashes become one literal backslash" Test 202: "X4 \\t — backslash before ordinary char drops; no tab expansion" Test 203: "X5 \\n — no newline expansion in replacement; literal n" Test 204: "X6 \& — & is literal anyway; backslash drops" Test 205: "X7 & — ampersand is literal, not whole-match (nextvi uses \0)" Test 206: "X8 \. — escaped dot matches literal dot only" Test 207: "X9 . — unescaped dot is the any-char metachar" Test 208: "X10 \\\\ in pattern matches one literal backslash" Test 209: "X11 \1 \2 — backreference group swap" Test 210: "X12 \0 — backreference to the whole match" Test 211: "X13 \1 with no such group — backslash drops; literal digit" Test 212: "X14 , delimiter — / needs no escaping under a comma delimiter" Test 213: "X15 \/ g — every escaped delimiter replaced" Test 214: "X16 \/ ends pattern with no replacement section — match deleted" Test 215: "X17 : — unescaped separator ends replacement at "a"" Test 216: "X18 \: — escaped separator stays literal in replacement" Test 217: "X19 \\\\: — \\ collapses to one \; the bare : still separates" Test 218: "X20 trailing \\ before separator — replacement ends in literal \" Test 219: "X21 trailing \ escapes separator — :%p swallowed; nothing printed" Test 220: "X22 \. with 2 groups — non-digit escape is literal, not group 2" Test 221: "X23 \, with 4 groups — non-digit escape is literal, not group 4" Test 222: "X24 \11 \10 with 11 groups — two-digit backreferences" Test 223: "X25 \11 with 3 groups — stops at group 1; 1 stays literal" Test 224: "X26 \12 \110 with 11 groups — highest existing group wins" Test 225: "X27 \011 — leading zero never extends; whole match + literal 11" Test 226: "X28 \\\\11 with 11 groups — escaped backslash keeps digits literal" Test 227: "P1 ? ??p\\\:1q\:p BAD — escapes absorb :1q/:p; current line printed" Test 228: "P2 >\\> — \\ halves to one \; search runs, no match" Test 229: "P3 >\\\>> — \> kept literal inside delimiter; search runs, no match" Test 230: "P4 >\\\\> — two backslashes; search runs, no match" Test 231: "P5 >\\\\\>> — odd run keeps delimiter literal; search runs, no match" Test 232: "P6 >\\\\\\> — three backslashes; search runs, no match" Test 233: "P7 ? >\\\? — 3 \ then a regex "?" in the while body; no match" Test 234: "P8 ? >\\\\? — 4 \ then a regex "?" in the while body; no match" Test 235: "P9 ? >\\\\\? — 5 \ then a regex "?" in the while body; no match" Test 236: "P10 ? >\\\\\\? — 6 \ then a regex "?" in the while body; no match" Test 237: "P11 ? ?? 1?\:p — ex separator escape" Test 238: "P12 ? ?? 1?\\:p — ex separator escape" Test 239: ":0i inserts above first line" Test 240: ":-1i from line 1 inserts above first line" Test 241: ":a command removed" Test 242: ":0c errors (change needs a real line)" Test 243: ":0pu pastes above first line" Test 244: ":0i bootstraps empty buffer" Test 245: ":-1i errors on empty buffer (no referent)" Test 246: ":0! errors on non-empty buffer (no line 0)" Test 247: ":0! fills empty buffer" Test 248: ":-1! errors on empty buffer (no referent)" Test 249: ":0r errors and keeps buffer" Test 250: ":99r out-of-range errors and keeps buffer" Test 251: ":99w out-of-range errors" Test 252: ":0f> ranged search errors" Test 253: ":0;pu rejects column range on line 0" Test 254: ":0;! rejects column range on non-empty buffer" Test 255: ":0;! rejects column range bootstrapping empty buffer" Test 256: ":0;c rejects column range on line 0" Test 257: ":0;i ignores column range, inserts above first line" Test 258: ":s line range substitutes each line" Test 259: ":s ;o1 starts the search at the column offset" Test 260: ":s ;0 is column 0, not an absent offset" Test 261: ":s ;o1;o2 bounds the line, keeps prefix and suffix" Test 262: ":s ;o1;o2 window hides text outside it" Test 263: ":s o1 bounds first line, o2 bounds last line" Test 264: ":s ;o1 on first line only, later lines unbounded" Test 265: ":s m flag matches across a newline" Test 266: ":s m without g substitutes once per region" Test 267: ":s gm substitutes every match in the region" Test 268: ":s m with ;o1;o2 rewrites only the bounded window" Test 269: ":s m with ;o1 spans to end of the last line" Test 270: ":s gm with ;o1 and ;o2 bounds both ends of the region" Test 271: ":s ;o1 past end of line matches nothing" Test 272: ":s m substitution undone in one step" Test 273: ":s m substitution redone in one step" Test 274: ":s undo returns the cursor to where the command was issued" Test 275: ":s m undo returns the cursor to where the command was issued" Test 276: ":s redo returns the cursor to where the command was issued" Test 277: ":s m redo returns the cursor to where the command was issued" Test 278: ":s on a register substitutes once for the whole register" Test 279: ":s g on a register substitutes every match" Test 280: ":s on a register matches across a newline" Test 281: ":s on a register leaves the buffer untouched" Test 282: ":s on a register records no undo entry" Test 283: ":s on a register works on an empty buffer" Test 284: ":s rejects a range with a register" Test 285: ":s reports an unset register" Test 286: ":s on a register errors when nothing matches" Test 287: ":s on a register reports no error when it matched" Test 288: ":s digit run with trailing junk is not a register spec" Test 289: ":s m sets '[ and '] to the region bounds" Test 290: ":s grp keeps a skipped match between two substitutions" Test 291: ":s grp keeps a skipped match before the first substitution" Test 292: ":s grp keeps a skipped match after the last substitution" Test 293: ":s grp keeps skipped matches on both sides" Test 294: ":s grp errors when the group never participates" Test 295: ":s gm grp keeps a skipped match inside the region" ─── Summary ────────────────────────────────────────────────────────────────── Results: 295 passed, 0 failed >>> nextvi: Entering fakeroot... >>> nextvi-doc*: Running split function doc... 'usr/share/man' -> '/home/buildozer/aports/community/nextvi/pkg/nextvi-doc/usr/share/man' 'usr/share/licenses' -> '/home/buildozer/aports/community/nextvi/pkg/nextvi-doc/usr/share/licenses' >>> nextvi-doc*: Preparing subpackage nextvi-doc... >>> nextvi-doc*: Running postcheck for nextvi-doc >>> nextvi-vi*: Running split function _vi... >>> nextvi-vi*: Preparing subpackage nextvi-vi... >>> nextvi-vi*: Stripping binaries >>> WARNING: nextvi-vi*: No arch specific binaries found so arch should probably be set to "noarch" >>> nextvi-vi*: Running postcheck for nextvi-vi >>> nextvi-vi-doc*: Running split function _vi_doc... >>> nextvi-vi-doc*: Preparing subpackage nextvi-vi-doc... >>> nextvi-vi-doc*: Running postcheck for nextvi-vi-doc >>> nextvi*: Running postcheck for nextvi >>> nextvi*: Preparing package nextvi... >>> nextvi*: Stripping binaries >>> nextvi*: Scanning shared objects >>> nextvi-vi*: Scanning shared objects >>> nextvi*: Tracing dependencies... so:libc.musl-aarch64.so.1 >>> nextvi*: Package size: 216.1 KB >>> nextvi*: Compressing data... >>> nextvi*: Create checksum... >>> nextvi*: Create nextvi-7.3-r0.apk >>> nextvi-doc*: Tracing dependencies... >>> nextvi-doc*: Package size: 16.6 KB >>> nextvi-doc*: Compressing data... >>> nextvi-doc*: Create checksum... >>> nextvi-doc*: Create nextvi-doc-7.3-r0.apk >>> nextvi-vi*: Tracing dependencies... nextvi=7.3-r0 nextvi=7.3-r0 >>> nextvi-vi*: Package size: 1.0 B >>> nextvi-vi*: Compressing data... >>> nextvi-vi*: Create checksum... >>> nextvi-vi*: Create nextvi-vi-7.3-r0.apk >>> nextvi-vi-doc*: Tracing dependencies... nextvi-doc=7.3-r0 nextvi-doc=7.3-r0 >>> nextvi-vi-doc*: Package size: 1.0 B >>> nextvi-vi-doc*: Compressing data... >>> nextvi-vi-doc*: Create checksum... >>> nextvi-vi-doc*: Create nextvi-vi-doc-7.3-r0.apk >>> nextvi: Build complete at Tue, 11 Aug 2026 14:31:21 +0000 elapsed time 0h 0m 9s >>> nextvi: Cleaning up srcdir >>> nextvi: Cleaning up pkgdir >>> nextvi: Cleaning up tmpdir >>> nextvi: Uninstalling dependencies... (1/1) Purging .makedepends-nextvi (20260811.143113) OK: 433.3 MiB in 109 packages >>> nextvi: Updating the community/aarch64 repository index... >>> nextvi: Signing the index...