>>> nextvi: Building community/nextvi 6.1-r0 (using abuild 3.18.0_rc2-r0) started Sat, 04 Jul 2026 22:21:45 +0000 >>> nextvi: Validating /home/buildozer/aports/community/nextvi/APKBUILD... >>> nextvi: Analyzing dependencies... >>> nextvi: Installing for build: build-base (1/1) Installing .makedepends-nextvi (20260704.222145) OK: 342.7 MiB in 106 packages >>> nextvi: Cleaning up srcdir >>> nextvi: Cleaning up pkgdir >>> nextvi: Cleaning up tmpdir >>> nextvi: Fetching https://distfiles.alpinelinux.org/distfiles/edge/nextvi-6.1.tar.gz /var/cache/distfiles/edge/nextvi-6.1.tar.gz: OK >>> nextvi: Fetching https://distfiles.alpinelinux.org/distfiles/edge/nextvi-6.1.tar.gz /var/cache/distfiles/edge/nextvi-6.1.tar.gz: OK >>> nextvi: Unpacking /var/cache/distfiles/edge/nextvi-6.1.tar.gz... -> Entering step: "Build "nextvi-6.1" 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: "P1 :pu 97 \!cmd — pipe register content to external command" Test 124: "P2 :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 — backref \0 replaces first 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: "V16 99?? — single unset id → nop, chain continues" Test 162: "V17 1,99;2?? — unset id in AND position → nop" Test 163: "V18 99;1?? — unset id in first OR position → nop" Test 164: "V19 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: "P1 ? ??p\\\:1q\:p BAD — escapes absorb :1q/:p; current line printed" Test 221: "P2 >\\> — \\ halves to one \; search runs, no match" Test 222: "P3 >\\\>> — \> kept literal inside delimiter; search runs, no match" Test 223: "P4 >\\\\> — two backslashes; search runs, no match" Test 224: "P5 >\\\\\>> — odd run keeps delimiter literal; search runs, no match" Test 225: "P6 >\\\\\\> — three backslashes; search runs, no match" Test 226: "P7 ? >\\\? — backward delim after \ run; search runs, no match" Test 227: "P8 ? >\\\\? — even run before delim; search runs, no match" Test 228: "P9 ? >\\\\\? — odd run keeps ? literal; search runs, no match" Test 229: "P10 ? >\\\\\\? — even run before delim; search runs, no match" Test 230: "P11 ? ?? 1?\:p — ex separator escape" Test 231: "P11 ? ?? 1?\\:p — ex separator escape" Test 232: ":0i inserts above first line" Test 233: ":-1i from line 1 inserts above first line" Test 234: ":a command removed" Test 235: ":0c errors (change needs a real line)" Test 236: ":0pu pastes above first line" Test 237: ":0i bootstraps empty buffer" Test 238: ":-1i errors on empty buffer (no referent)" Test 239: ":0! errors on non-empty buffer (no line 0)" Test 240: ":0! fills empty buffer" Test 241: ":-1! errors on empty buffer (no referent)" Test 242: ":0r errors and keeps buffer" Test 243: ":99r out-of-range errors and keeps buffer" Test 244: ":99w out-of-range errors" Test 245: ":0 fuzz-search errors" Test 246: ":0;pu rejects column range on line 0" Test 247: ":0;! rejects column range on non-empty buffer" Test 248: ":0;! rejects column range bootstrapping empty buffer" Test 249: ":0;c rejects column range on line 0" Test 250: ":0;i ignores column range, inserts above first line" ─── Summary ────────────────────────────────────────────────────────────────── Results: 250 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-armhf.so.1 >>> nextvi*: Package size: 173.9 KB >>> nextvi*: Compressing data... >>> nextvi*: Create checksum... >>> nextvi*: Create nextvi-6.1-r0.apk >>> nextvi-doc*: Tracing dependencies... >>> nextvi-doc*: Package size: 16.0 KB >>> nextvi-doc*: Compressing data... >>> nextvi-doc*: Create checksum... >>> nextvi-doc*: Create nextvi-doc-6.1-r0.apk >>> nextvi-vi*: Tracing dependencies... nextvi=6.1-r0 nextvi=6.1-r0 >>> nextvi-vi*: Package size: 1.0 B >>> nextvi-vi*: Compressing data... >>> nextvi-vi*: Create checksum... >>> nextvi-vi*: Create nextvi-vi-6.1-r0.apk >>> nextvi-vi-doc*: Tracing dependencies... nextvi-doc=6.1-r0 nextvi-doc=6.1-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-6.1-r0.apk >>> nextvi: Build complete at Sat, 04 Jul 2026 22:21:52 +0000 elapsed time 0h 0m 7s >>> nextvi: Cleaning up srcdir >>> nextvi: Cleaning up pkgdir >>> nextvi: Cleaning up tmpdir >>> nextvi: Uninstalling dependencies... (1/1) Purging .makedepends-nextvi (20260704.222145) OK: 342.7 MiB in 105 packages >>> nextvi: Updating the community/armhf repository index... >>> nextvi: Signing the index...