nx_fsops_dynamic_edit_gate_t145.nx source
↩ module page · 44 lines · 2290 B
1import "nx_fsops_lib_dynamic_edit_t145.nx"
2import "nx_gate_verdict.nx"
3const DYN_PATH: *u8 = "/tmp/nx-fsops-dynamic-edit-t145.txt"
4func dyn_read(path:*u8,n:*i64)->*u8 {
5 let r:*NxFileReadRegion=sys_mmap(__size_of(NxFileReadRegion)) as *NxFileReadRegion
6 fio_region_init(r)
7 if fio_region_open(path,r)!=0{return 0 as *u8}
8 n[0]=r.total
9 let b:*u8=sys_mmap(n[0])
10 if (b as i64)<=0{fio_region_close(r);return 0 as *u8}
11 if fio_region_next(r,b,n[0])!=n[0]{return 0 as *u8}
12 return b
13}
14func main()->i64 {
15 let c:*i64=gv_ctr()
16 let length:i64=FSX_READ_CAP+17
17 let b:*u8=sys_mmap(length)
18 var i:i64=0
19 while i<length{b[i]=65 as u8;i=i+1}
20 b[length-1]=90 as u8
21 gv_check("fixture-beyond-old-cap-written",fsx_write(DYN_PATH,b,length)==length,c)
22 gv_check("replacement-beyond-old-cap",fsx_edit(DYN_PATH,"Z","END",0)==length+2,c)
23 let n:*i64=sys_mmap(16) as *i64
24 let result:*u8=dyn_read(DYN_PATH,n)
25 var exact:i64=0
26 if (result as i64)>0&&n[0]==length+2 {
27 exact=1;i=0
28 while i<length-1{if result[i]!=65 as u8{exact=0};i=i+1}
29 if result[length-1]!=69 as u8||result[length]!=78 as u8||result[length+1]!=68 as u8{exact=0}
30 }
31 gv_check("all-original-bytes-and-new-tail-exact",exact,c)
32 gv_check("no-match-large-refuses",fsx_edit(DYN_PATH,"MISSING","x",0)==-6,c)
33 gv_check("ambiguous-large-refuses",fsx_edit(DYN_PATH,"A","x",0)==-7,c)
34 gv_check("growth-beyond-old-output-cap",fsx_edit(DYN_PATH,"A","AAA",1)==(length-1)*3+3,c)
35 gv_check("shrink-all-large",fsx_edit(DYN_PATH,"AAA","A",1)==length+2,c)
36 gv_check("empty-replacement",fsx_edit(DYN_PATH,"END","",0)==length-1,c)
37 let actual:*u8=dyn_read("/volume1/homes/elderwesto/nishihost/knowledge/status/treecanon_laptop_hash.mf",n)
38 gv_check("actual-manifest-read", (actual as i64)>0&&n[0]>FSX_READ_CAP,c)
39 if (actual as i64)>0 {
40 gv_check("actual-manifest-private-copy",fsx_write("/tmp/treecanon-hash-dynamic-t145.mf",actual,n[0])==n[0],c)
41 gv_check("actual-manifest-unique-row-update",fsx_edit("/tmp/treecanon-hash-dynamic-t145.mf","28ed065a1a172233e8f417c1c8aee0d73cb834cb261c908316775befdd14bcfb 121234 _hdl_build/nx_sov_build_run.nx","db308c492aad45c399a8bca97bcb78a44b1afca0b6547feda50f5e7dac58612a 123764 _hdl_build/nx_sov_build_run.nx",0)==n[0],c)
42 }
43 return gv_verdict("FSOPS-DYNAMIC-EDIT",c,"measured extents; no fixed file-size ceiling")
44}