Mock Version: 3.5 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/golang-github-clbanning-x2j.spec'], chrootPath='/var/lib/mock/fedora-rawhide-x86_64-1674448170.166244/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0x7fb199c7e810>timeout=0uid=1000gid=135user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.f7puupxh:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11']unshare_net=TrueprintOutput=True) Using nspawn with args ['--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.f7puupxh:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11'] Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', '71ec06ed82b1469696cedb882ed21ef7', '-D', '/var/lib/mock/fedora-rawhide-x86_64-1674448170.166244/root', '-a', '-u', 'mockbuild', '--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.f7puupxh:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11', '--console=pipe', '--setenv=TERM=vt100', '--setenv=SHELL=/bin/bash', '--setenv=HOME=/builddir', '--setenv=HOSTNAME=mock', '--setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin', '--setenv=PROMPT_COMMAND=printf "\\033]0;<mock-chroot>\\007"', '--setenv=PS1=<mock-chroot> \\s-\\v\\$ ', '--setenv=LANG=C.UTF-8', '--resolv-conf=off', 'bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/golang-github-clbanning-x2j.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8', 'SYSTEMD_NSPAWN_TMPFS_TMP': '0', 'SYSTEMD_SECCOMP': '0'} and shell False Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1674086400 Wrote: /builddir/build/SRPMS/golang-github-clbanning-x2j-1.1-9.fc38.src.rpm Child return code was: 0 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/golang-github-clbanning-x2j.spec'], chrootPath='/var/lib/mock/fedora-rawhide-x86_64-1674448170.166244/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0x7fb199c7e810>timeout=0uid=1000gid=135user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.f7puupxh:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11']unshare_net=TrueprintOutput=True) Using nspawn with args ['--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.f7puupxh:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11'] Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', 'f1101dc9705d4f9e8f80b7945659dc68', '-D', '/var/lib/mock/fedora-rawhide-x86_64-1674448170.166244/root', '-a', '-u', 'mockbuild', '--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.f7puupxh:/etc/resolv.conf', '--bind=/dev/btrfs-control', '--bind=/dev/mapper/control', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11', '--console=pipe', '--setenv=TERM=vt100', '--setenv=SHELL=/bin/bash', '--setenv=HOME=/builddir', '--setenv=HOSTNAME=mock', '--setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin', '--setenv=PROMPT_COMMAND=printf "\\033]0;<mock-chroot>\\007"', '--setenv=PS1=<mock-chroot> \\s-\\v\\$ ', '--setenv=LANG=C.UTF-8', '--resolv-conf=off', 'bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/golang-github-clbanning-x2j.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8', 'SYSTEMD_NSPAWN_TMPFS_TMP': '0', 'SYSTEMD_SECCOMP': '0'} and shell False Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1674086400 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.EM4d5e + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf x2j-1.1 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/x2j-1.1.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd x2j-1.1 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + rm -fr /builddir/build/BUILD/x2j-1.1/vendor + [[ ! -e /builddir/build/BUILD/x2j-1.1/_build/bin ]] + install -m 0755 -vd /builddir/build/BUILD/x2j-1.1/_build/bin install: creating directory '/builddir/build/BUILD/x2j-1.1/_build' install: creating directory '/builddir/build/BUILD/x2j-1.1/_build/bin' + export GOPATH=/builddir/build/BUILD/x2j-1.1/_build:/usr/share/gocode + GOPATH=/builddir/build/BUILD/x2j-1.1/_build:/usr/share/gocode + [[ ! -e /builddir/build/BUILD/x2j-1.1/_build/src/github.com/clbanning/x2j ]] ++ dirname /builddir/build/BUILD/x2j-1.1/_build/src/github.com/clbanning/x2j + install -m 0755 -vd /builddir/build/BUILD/x2j-1.1/_build/src/github.com/clbanning install: creating directory '/builddir/build/BUILD/x2j-1.1/_build/src' install: creating directory '/builddir/build/BUILD/x2j-1.1/_build/src/github.com' install: creating directory '/builddir/build/BUILD/x2j-1.1/_build/src/github.com/clbanning' + ln -fs /builddir/build/BUILD/x2j-1.1 /builddir/build/BUILD/x2j-1.1/_build/src/github.com/clbanning/x2j + cd /builddir/build/BUILD/x2j-1.1/_build/src/github.com/clbanning/x2j + echo 'Patch #0 (0001-Remove-redundant-newlines-in-Println-statement.patch):' Patch #0 (0001-Remove-redundant-newlines-in-Println-statement.patch): + /usr/bin/patch --no-backup-if-mismatch -f -p1 --fuzz=0 patching file examples/gonuts2.go patching file x2j_test.go patching file x2jpath_test.go + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.G62GPb + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64 '!=' / ']' + rm -rf /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64 ++ dirname /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64 + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64 + cd x2j-1.1 + cd /builddir/build/BUILD/x2j-1.1/_build/src/github.com/clbanning/x2j + IFS= + gosupfiles= + mapfile -t gosupfilesA + go-rpm-integration install -i github.com/clbanning/x2j -b /builddir/build/BUILD/x2j-1.1/_build/bin -s /builddir/build/BUILD/x2j-1.1/_build -o golang-github-clbanning-x2j-devel.file-list -O /builddir/build/BUILD/x2j-1.1 -V 1.1-9.fc38 -T 1.1 -p /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64 -g /usr/share/gocode -r '.*example.*' Installing: github.com/clbanning/x2j realpath: go.mod: No such file or directory + IFS= +++ realpath -e --relative-base=. examples README +++ sort -u ++ listfiles_include='README examples' ++ echo 'README examples' + godocs='README examples' + [[ -n README examples ]] + IFS= + read -r f + echo %doc '"README"' + IFS= + read -r f + echo %doc '"examples"' + IFS= + read -r f + IFS= +++ realpath -e --relative-base=. LICENSE +++ sort -u ++ listfiles_include=LICENSE ++ echo LICENSE + golicenses=LICENSE + [[ -n LICENSE ]] + IFS= + read -r f + echo %license '"LICENSE"' + IFS= + read -r f + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip /usr/bin/strip + /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/redhat/brp-strip-lto /usr/bin/strip + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/check-rpaths + /usr/lib/rpm/redhat/brp-mangle-shebangs + /usr/lib/rpm/brp-remove-la-files + env /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 -j2 + /usr/lib/rpm/redhat/brp-python-hardlink Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.ufc5F9 + umask 022 + cd /builddir/build/BUILD + cd x2j-1.1 + LDFLAGS=' -X github.com/clbanning/x2j/version.tag=1.1 -X github.com/clbanning/x2j/version=1.1' + GO_TEST_FLAGS='-buildmode pie -compiler gc' + GO_TEST_EXT_LD_FLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + go-rpm-integration check -i github.com/clbanning/x2j -b /builddir/build/BUILD/x2j-1.1/_build/bin -s /builddir/build/BUILD/x2j-1.1/_build -V 1.1-9.fc38 -T 1.1 -p /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64 -g /usr/share/gocode -r '.*example.*' Testing in: /builddir/build/BUILD/x2j-1.1/_build/src PATH: /builddir/build/BUILD/x2j-1.1/_build/bin:/builddir/.local/bin:/builddir/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin GOPATH: /builddir/build/BUILD/x2j-1.1/_build:/usr/share/gocode GO111MODULE: off command: go test -buildmode pie -compiler gc -ldflags " -X github.com/clbanning/x2j/version.tag=1.1 -X github.com/clbanning/x2j/version=1.1 -extldflags '-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes '" testing: github.com/clbanning/x2j github.com/clbanning/x2j TestGoofy ... MapToDoc: map[byteVal:[116 104 101 32 97 105 100 32 111 102 32 116 104 101 105 114 32 99 111 117 110 116 114 121] goofyVal:0xc0000100d8 nilVal:<nil> xml:map[tag:map[-bool:true -one:1 -pi:3.1415962535] tagJR:map[-key:value]]] v: {"byteVal":"dGhlIGFpZCBvZiB0aGVpciBjb3VudHJ5","goofyVal":{"S":"Now is the time for","Sp":"all good men to come to"},"nilVal":null,"xml":{"tag":{"-bool":"true","-one":"1","-pi":"3.1415962535"},"tagJR":{"-key":"value"}}} TestGoofier ... MapToDoc: map[byteVal:[116 104 101 32 97 105 100 32 111 102 32 116 104 101 105 114 32 99 111 117 110 116 114 121] goofierVal:0xc000014a20 goofyVal:0xc0000100d8 nilVal:<nil> xml:map[tag:map[-bool:true -one:1 -pi:3.1415962535] tagJR:map[-key:value]]] v: {"byteVal":"dGhlIGFpZCBvZiB0aGVpciBjb3VudHJ5","goofierVal":{"G":{"S":"Now is the time for","Sp":"all good men to come to"},"B":"dGhlIHRyZWUgb2YgZnJlZWRvbSBtdXN0IHBlcmlvZGljYWxseSBiZQ==","N":null},"goofyVal":{"S":"Now is the time for","Sp":"all good men to come to"},"nilVal":null,"xml":{"tag":{"-bool":"true","-one":"1","-pi":"3.1415962535"},"tagJR":{"-key":"value"}}} ToTree - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> entry : vars : foo : bar foo2 : hello : world ToMap - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> entry : vars : foo :[string] bar foo2 : hello :[string] world ToJson - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> json: {"entry":{"vars":{"foo":"bar","foo2":{"hello":"world"}}}} ToJsonIndent - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> json: { "entry": { "vars": { "foo": "bar", "foo2": { "hello": "world" } } } } BulkParser (with error) - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry><this><is>an</err><entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> phandler m: map[entry:map[vars:map[foo:bar foo2:map[hello:world]]]] ehandler err: XML syntax error on line 1: element <is> closed by </err> phandler m: map[entry:map[vars:map[foo:bar foo2:map[hello:world]]]] BulkParser (with error) - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry><this><is>an</err><entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> phandlerj s: {"entry":{"vars":{"foo":"bar","foo2":{"hello":"world"}}}} ehandler err: XML syntax error on line 1: element <is> closed by </err> phandlerj s: {"entry":{"vars":{"foo":"bar","foo2":{"hello":"world"}}}} ================================ x2j_test.go ... =================== TestX2j ... XML doc: <msg mtype="alert" mpriority="1"> <text>help me!</text> <song title="A Long Time" author="Mayer Hawthorne"> <verses> <verse name="verse 1" no="1"> <line no="1">Henry was a renegade</line> <line no="2">Didn't like to play it safe</line> <line no="3">One component at a time</line> <line no="4">There's got to be a better way</line> <line no="5">Oh, people came from miles around</line> <line no="6">Searching for a steady job</line> <line no="7">Welcome to the Motor Town</line> <line no="8">Booming like an atom bomb</line> </verse> <verse name="verse 2" no="2"> <line no="1">Oh, Henry was the end of the story</line> <line no="2">Then everything went wrong</line> <line no="3">And we'll return it to its former glory</line> <line no="4">But it just takes so long</line> </verse> </verses> <chorus> <line no="1">It's going to take a long time</line> <line no="2">It's going to take it, but we'll make it one day</line> <line no="3">It's going to take a long time</line> <line no="4">It's going to take it, but we'll make it one day</line> </chorus> </song> </msg> DocToTree(): msg : -mtype : alert -mpriority : 1 text : help me! song : -title : A Long Time -author : Mayer Hawthorne verses : verse : -name : verse 1 -no : 1 line : -no : 1 #text : Henry was a renegade line : -no : 2 #text : Didn't like to play it safe line : -no : 3 #text : One component at a time line : -no : 4 #text : There's got to be a better way line : -no : 5 #text : Oh, people came from miles around line : -no : 6 #text : Searching for a steady job line : -no : 7 #text : Welcome to the Motor Town line : -no : 8 #text : Booming like an atom bomb verse : -name : verse 2 -no : 2 line : -no : 1 #text : Oh, Henry was the end of the story line : -no : 2 #text : Then everything went wrong line : -no : 3 #text : And we'll return it to its former glory line : -no : 4 #text : But it just takes so long chorus : line : -no : 1 #text : It's going to take a long time line : -no : 2 #text : It's going to take it, but we'll make it one day line : -no : 3 #text : It's going to take a long time line : -no : 4 #text : It's going to take it, but we'll make it one day treeToMap, recast==false: msg : -mtype :[string] alert -mpriority :[string] 1 text :[string] help me! song : -title :[string] A Long Time -author :[string] Mayer Hawthorne verses : verse :[[]interface{}] [item: 0] -name :[string] verse 1 -no :[string] 1 line :[[]interface{}] [item: 0] -no :[string] 1 #text :[string] Henry was a renegade [item: 1] -no :[string] 2 #text :[string] Didn't like to play it safe [item: 2] -no :[string] 3 #text :[string] One component at a time [item: 3] -no :[string] 4 #text :[string] There's got to be a better way [item: 4] #text :[string] Oh, people came from miles around -no :[string] 5 [item: 5] -no :[string] 6 #text :[string] Searching for a steady job [item: 6] -no :[string] 7 #text :[string] Welcome to the Motor Town [item: 7] -no :[string] 8 #text :[string] Booming like an atom bomb [item: 1] -name :[string] verse 2 -no :[string] 2 line :[[]interface{}] [item: 0] -no :[string] 1 #text :[string] Oh, Henry was the end of the story [item: 1] -no :[string] 2 #text :[string] Then everything went wrong [item: 2] -no :[string] 3 #text :[string] And we'll return it to its former glory [item: 3] #text :[string] But it just takes so long -no :[string] 4 chorus : line :[[]interface{}] [item: 0] -no :[string] 1 #text :[string] It's going to take a long time [item: 1] -no :[string] 2 #text :[string] It's going to take it, but we'll make it one day [item: 2] -no :[string] 3 #text :[string] It's going to take a long time [item: 3] -no :[string] 4 #text :[string] It's going to take it, but we'll make it one day json.MarshalIndent, recast==false: { "msg": { "-mpriority": "1", "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "chorus": { "line": [ { "#text": "It's going to take a long time", "-no": "1" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "2" }, { "#text": "It's going to take a long time", "-no": "3" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "4" } ] }, "verses": { "verse": [ { "-name": "verse 1", "-no": "1", "line": [ { "#text": "Henry was a renegade", "-no": "1" }, { "#text": "Didn't like to play it safe", "-no": "2" }, { "#text": "One component at a time", "-no": "3" }, { "#text": "There's got to be a better way", "-no": "4" }, { "#text": "Oh, people came from miles around", "-no": "5" }, { "#text": "Searching for a steady job", "-no": "6" }, { "#text": "Welcome to the Motor Town", "-no": "7" }, { "#text": "Booming like an atom bomb", "-no": "8" } ] }, { "-name": "verse 2", "-no": "2", "line": [ { "#text": "Oh, Henry was the end of the story", "-no": "1" }, { "#text": "Then everything went wrong", "-no": "2" }, { "#text": "And we'll return it to its former glory", "-no": "3" }, { "#text": "But it just takes so long", "-no": "4" } ] } ] } }, "text": "help me!" } } DocToMap(), recast==true: msg : -mtype :[string] alert -mpriority :[float64] 1.00e+00 text :[string] help me! song : chorus : line :[[]interface{}] [item: 0] -no :[float64] 1.00e+00 #text :[string] It's going to take a long time [item: 1] -no :[float64] 2.00e+00 #text :[string] It's going to take it, but we'll make it one day [item: 2] -no :[float64] 3.00e+00 #text :[string] It's going to take a long time [item: 3] #text :[string] It's going to take it, but we'll make it one day -no :[float64] 4.00e+00 -title :[string] A Long Time -author :[string] Mayer Hawthorne verses : verse :[[]interface{}] [item: 0] -name :[string] verse 1 -no :[float64] 1.00e+00 line :[[]interface{}] [item: 0] -no :[float64] 1.00e+00 #text :[string] Henry was a renegade [item: 1] -no :[float64] 2.00e+00 #text :[string] Didn't like to play it safe [item: 2] -no :[float64] 3.00e+00 #text :[string] One component at a time [item: 3] -no :[float64] 4.00e+00 #text :[string] There's got to be a better way [item: 4] -no :[float64] 5.00e+00 #text :[string] Oh, people came from miles around [item: 5] -no :[float64] 6.00e+00 #text :[string] Searching for a steady job [item: 6] -no :[float64] 7.00e+00 #text :[string] Welcome to the Motor Town [item: 7] -no :[float64] 8.00e+00 #text :[string] Booming like an atom bomb [item: 1] -name :[string] verse 2 -no :[float64] 2.00e+00 line :[[]interface{}] [item: 0] -no :[float64] 1.00e+00 #text :[string] Oh, Henry was the end of the story [item: 1] -no :[float64] 2.00e+00 #text :[string] Then everything went wrong [item: 2] #text :[string] And we'll return it to its former glory -no :[float64] 3.00e+00 [item: 3] -no :[float64] 4.00e+00 #text :[string] But it just takes so long DocToJsonIndent, recast==true: { "msg": { "-mpriority": 1, "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "chorus": { "line": [ { "#text": "It's going to take a long time", "-no": 1 }, { "#text": "It's going to take it, but we'll make it one day", "-no": 2 }, { "#text": "It's going to take a long time", "-no": 3 }, { "#text": "It's going to take it, but we'll make it one day", "-no": 4 } ] }, "verses": { "verse": [ { "-name": "verse 1", "-no": 1, "line": [ { "#text": "Henry was a renegade", "-no": 1 }, { "#text": "Didn't like to play it safe", "-no": 2 }, { "#text": "One component at a time", "-no": 3 }, { "#text": "There's got to be a better way", "-no": 4 }, { "#text": "Oh, people came from miles around", "-no": 5 }, { "#text": "Searching for a steady job", "-no": 6 }, { "#text": "Welcome to the Motor Town", "-no": 7 }, { "#text": "Booming like an atom bomb", "-no": 8 } ] }, { "-name": "verse 2", "-no": 2, "line": [ { "#text": "Oh, Henry was the end of the story", "-no": 1 }, { "#text": "Then everything went wrong", "-no": 2 }, { "#text": "And we'll return it to its former glory", "-no": 3 }, { "#text": "But it just takes so long", "-no": 4 } ] } ] } }, "text": "help me!" } } =================== TestGetValue ... Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> Looking for value: entry.vars { "foo": "bar", "foo2": { "hello": "world" } } Looking for value: entry.vars.foo2.hello world Looking with error in path: entry.var verr: no key in map: var DocValue() for tag path entry.vars { "foo": "bar", "foo2": { "hello": "world" } } =================== TestGetValueWithAttr ... Read doc: <entry><vars> <foo item="1">bar</foo> <foo item="2"> <hello item="3">world</hello> <hello item="4">universe</hello> </foo></vars></entry> Looking for value: entry.vars { "foo": [ { "#text": "bar", "-item": "1" }, { "-item": "2", "hello": [ { "#text": "world", "-item": "3" }, { "#text": "universe", "-item": "4" } ] } ] } MapValue(): Looking for value: entry.vars.foo item=2 { "-item": "2", "hello": [ { "#text": "world", "-item": "3" }, { "#text": "universe", "-item": "4" } ] } MapValue(): Looking for hello item:4 verr: no key in map: hello DocValue(): Looking for entry.vars.foo.hello item:4 verr: no keys beyond: foo DocValue(): Looking for empty nil { "entry": { "vars": { "foo": [ { "#text": "bar", "-item": "1" }, { "-item": "2", "hello": [ { "#text": "world", "-item": "3" }, { "#text": "universe", "-item": "4" } ] } ] } } } testing recast switch... MapValue(): Looking for value: entry.vars.foo item=2 { "-item": 2, "hello": [ { "#text": "world", "-item": 3 }, { "#text": "universe", "-item": 4 } ] } =================== TestStuff_1 ... <doc> <tag item="1">val2</tag> <tag item="2">val2</tag> <tag item="2" instance="2">val3</tag> </doc> doc : tag :[[]interface{}] [item: 0] #text :[string] val2 -item :[string] 1 [item: 1] -item :[string] 2 #text :[string] val2 [item: 2] -item :[string] 2 -instance :[string] 2 #text :[string] val3 DocValue(): tag [ { "#text": "val2", "-item": "1" }, { "#text": "val2", "-item": "2" }, { "#text": "val3", "-instance": "2", "-item": "2" } ] DocValue(): item:2 instance:2 "val3" =================== TestStuff_2 ... <tag item="1">val2</tag> <tag item="2">val2</tag> <tag item="2" instance="2">val3</tag> tag : -item :[string] 1 #text :[string] val2 DocValue(): tag { "#text": "val2", "-item": "1" } DocValue(): item:2 instance:2 verr: no attribute key:value pair: item:2 =================== TestBulkBuffer ... Bulk Message Processing Tests procMap: { "msg": { "-mpriority": "1", "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "chorus": { "line": [ { "#text": "It's going to take a long time", "-no": "1" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "2" }, { "#text": "It's going to take a long time", "-no": "3" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "4" } ] }, "verses": { "verse": [ { "-name": "verse 1", "-no": "1", "line": [ { "#text": "Henry was a renegade", "-no": "1" }, { "#text": "Didn't like to play it safe", "-no": "2" }, { "#text": "One component at a time", "-no": "3" }, { "#text": "There's got to be a better way", "-no": "4" }, { "#text": "Oh, people came from miles around", "-no": "5" }, { "#text": "Searching for a steady job", "-no": "6" }, { "#text": "Welcome to the Motor Town", "-no": "7" }, { "#text": "Booming like an atom bomb", "-no": "8" } ] }, { "-name": "verse 2", "-no": "2", "line": [ { "#text": "Oh, Henry was the end of the story", "-no": "1" }, { "#text": "Then everything went wrong", "-no": "2" }, { "#text": "And we'll return it to its former glory", "-no": "3" }, { "#text": "But it just takes so long", "-no": "4" } ] } ] } }, "text": "help me!" } } procMap: { "msg": { "-mpriority": "1", "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "verses": { "verse": { "-name": "verse 1", "-no": "1", "line": [ { "#text": "Henry was a renegade", "-no": "1" }, { "#text": "Didn't like to play it safe", "-no": "2" }, { "#text": "One component at a time", "-no": "3" }, { "#text": "There's got to be a better way", "-no": "4" }, { "#text": "Oh, people came from miles around", "-no": "5" }, { "#text": "Searching for a steady job", "-no": "6" }, { "#text": "Welcome to the Motor Town", "-no": "7" }, { "#text": "Booming like an atom bomb", "-no": "8" } ] } } }, "text": "help me!" } } procMap: { "msg": { "-mpriority": "1", "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "chorus": { "line": [ { "#text": "It's going to take a long time", "-no": "1" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "2" }, { "#text": "It's going to take a long time", "-no": "3" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "4" } ] } }, "text": "help me!" } } procError err: XML syntax error on line 1: element <chorus> closed by </song> procError err: XML syntax error on line 1: unexpected end element </msg> =================== TestBulkBuffer ... Test arbitrary XML buffer with no ending rootTag - then read from closed buffer. m: map[doc:map[tag:]] m: map[doc:map[one:map[#text:my test doc -att:1]]] merr: XML syntax error on line 1: unexpected EOF err: Buffer is not active. =================== TestTagAndKey ... TestTagAndKey() <doc> <sections> <section>one</section> <section> <parts> <part>two.one</part> <part>two.two</part> </parts> </section> </sections> <partitions> <parts> <sections> <section>one</section> <section>two</section> </sections> </parts> </partitions> </doc> tag: parts :: len: 2 v: [map[part:[two.one two.two]] map[sections:map[section:[one two]]]] no 'not_a_tag' tag key: section :: len: 2 v: [[one map[parts:map[part:[two.one two.two]]]] [one two]] no 'not_a_key' key ============================ x2jat_test.go =============== TestValuesAtKeyPath ... ValuesAtKeyPath ... doc1#author ss: [doc.books.book.author] vv: [map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day]] ValuesAtKeyPath ... doc1#first_name ss: [doc.books.book.author.first_name] vv: [William H. Gaddis Austin Tappan Wright John Hawkes map[first_name:T.E. last_name:Porter]] GetKeyPaths...doc2#book ss: [doc.books.author.book doc.books.author.books.book] vv: [map[book:[map[-seq:1 review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[review:Won the National Book Award title:JR]] name:William H. Gaddis] map[books:map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]] name:John Hawkes]] vv: [map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]]] vv,shortest_path: [map[book:[map[-seq:1 review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[review:Won the National Book Award title:JR]] name:William H. Gaddis] map[books:map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]] name:John Hawkes]] ValuesAtKeyPath ... msg1#pub ss: [msg.pub] vv: [map[pub:test text:This is a long cold winter]] ValuesAtKeyPath ... msg2#pub ss: [msgs.msg.pub] vv: [map[pub:test text:This is a long cold winter] map[pub:test2 text:I hope we have a cool summer, though]] =============== TestValuesAtTagPath ... ValuesAtTagPath ... doc1#author ss: [doc.books.book.author] vv: [map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day]] ValuesAtTagPath ... doc1#first_name ss: [doc.books.book.author.first_name] vv: [William H. Gaddis Austin Tappan Wright John Hawkes map[first_name:T.E. last_name:Porter]] ValuesAtTagPath...doc2#book ss: [doc.books.author.book doc.books.author.books.book] vv: [map[book:[map[-seq:1 review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[review:Won the National Book Award title:JR]] name:William H. Gaddis] map[books:map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]] name:John Hawkes]] vv: [map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]]] vv,shortest_path: [map[book:[map[-seq:1 review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[review:Won the National Book Award title:JR]] name:William H. Gaddis] map[books:map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]] name:John Hawkes]] ================================ x2jfindPath_test.go =============== TestPathsForKey ... PathsForKey... doc01#author ss: [doc.books.book.author] PathsForKey... doc01#books ss: [doc.books] PathsForKey...doc02#book ss: [doc.books.author.book doc.books.author.books.book] PathForKeyShortest...doc02#book s: doc.books.author.book =============== TestPathsForTag ... PathsForTag... doc01#author ss: [doc.books.book.author] PathsForTag... doc01#books ss: [doc.books] PathsForTag...doc02#book ss: [doc.books.author.book doc.books.author.books.book] PathForTagShortest...doc02#book s: doc.books.author.book TestValuesFromTagPath() <doc> <books> <book seq="1"> <author>William H. Gaddis</author> <title>The Recognitions</title> <review>One of the great seminal American novels of the 20th century.</review> </book> <book seq="2"> <author>Austin Tappan Wright</author> <title>Islandia</title> <review>An example of earlier 20th century American utopian fiction.</review> </book> <book seq="3"> <author>John Hawkes</author> <title>The Beetle Leg</title> <review>A lyrical novel about the construction of Ft. Peck Dam in Montana.</review> </book> <book seq="4"> <author> <first_name>T.E.</first_name> <last_name>Porter</last_name> </author> <title>King's Day</title> <review>A magical novella.</review> </book> </books> </doc> map: doc : books : book :[[]interface{}] [item: 0] author :[string] William H. Gaddis title :[string] The Recognitions review :[string] One of the great seminal American novels of the 20th century. -seq :[string] 1 [item: 1] review :[string] An example of earlier 20th century American utopian fiction. -seq :[string] 2 author :[string] Austin Tappan Wright title :[string] Islandia [item: 2] -seq :[string] 3 author :[string] John Hawkes title :[string] The Beetle Leg review :[string] A lyrical novel about the construction of Ft. Peck Dam in Montana. [item: 3] -seq :[string] 4 author : first_name :[string] T.E. last_name :[string] Porter title :[string] King's Day review :[string] A magical novella. path == doc.books: len(v): 1 0 : map[book:[map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day]]] path == doc.books.*: len(v): 4 0 : map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] 1 : map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] 2 : map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] 3 : map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day] path == doc.books.book: len(v): 4 0 : map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] 1 : map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] 2 : map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] 3 : map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day] doc == doc2 / path == doc.books.book: len(v): 1 0 : map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] path == doc.books.book.*: len(v): 12 0 : William H. Gaddis 1 : The Recognitions 2 : One of the great seminal American novels of the 20th century. 3 : Austin Tappan Wright 4 : Islandia 5 : An example of earlier 20th century American utopian fiction. 6 : John Hawkes 7 : The Beetle Leg 8 : A lyrical novel about the construction of Ft. Peck Dam in Montana. 9 : map[first_name:T.E. last_name:Porter] 10 : King's Day 11 : A magical novella. doc == doc2 / path == doc.books.book.*: len(v): 3 0 : William H. Gaddis 1 : The Recognitions 2 : One of the great seminal American novels of the 20th century. path == doc.books.*.author: len(v): 4 0 : William H. Gaddis 1 : Austin Tappan Wright 2 : John Hawkes 3 : map[first_name:T.E. last_name:Porter] path == doc.*.*.author: len(v): 4 0 : William H. Gaddis 1 : Austin Tappan Wright 2 : John Hawkes 3 : map[first_name:T.E. last_name:Porter] path == doc.*.*.title: len(v): 4 0 : The Recognitions 1 : Islandia 2 : The Beetle Leg 3 : King's Day path == doc.*.*.*: len(v): 12 0 : William H. Gaddis 1 : The Recognitions 2 : One of the great seminal American novels of the 20th century. 3 : Austin Tappan Wright 4 : Islandia 5 : An example of earlier 20th century American utopian fiction. 6 : John Hawkes 7 : The Beetle Leg 8 : A lyrical novel about the construction of Ft. Peck Dam in Montana. 9 : map[first_name:T.E. last_name:Porter] 10 : King's Day 11 : A magical novella. path == doc.*.*.*.*: len(v): 2 0 : T.E. 1 : Porter TestValuesFromTagPath2(), iteration: 0 <?xml version="1.0" encoding="UTF-8"?> <data> <netid> <disable>no</disable> <text1>default:text</text1> <word1>default:word</word1> </netid> </data> map: data : netid : disable :[string] no text1 :[string] default:text word1 :[string] default:word path == data.*: len(v): 1 0 : map[disable:no text1:default:text word1:default:word] disable : no text1 : default:text word1 : default:word path == data.*.*: len(v): 3 0 : no 1 : default:text 2 : default:word TestValuesFromTagPath2(), iteration: 1 <?xml version="1.0" encoding="UTF-8"?> <data> <idnet> <disable>yes</disable> <text1>default:text</text1> <word1>default:word</word1> </idnet> </data> map: data : idnet : disable :[string] yes text1 :[string] default:text word1 :[string] default:word path == data.*: len(v): 1 0 : map[disable:yes text1:default:text word1:default:word] disable : yes text1 : default:text word1 : default:word path == data.*.*: len(v): 3 0 : yes 1 : default:text 2 : default:word Unmarshal test ... *map[string]interface{}, *string m: map[doc:map[name:Mayer Hawthorne song:map[title:A Long Time verse:map[-no:1 line:[map[#text:Henry was a renegade -no:1] map[#text:Didn't like to play it safe -no:2]]]]]] s: {"doc":{"name":"Mayer Hawthorne","song":{"title":"A Long Time","verse":{"-no":"1","line":[{"#text":"Henry was a renegade","-no":"1"},{"#text":"Didn't like to play it safe","-no":"2"}]}}}} Unmarshal test ... struct: <info><name>clbanning</name><address>unknown</address></info> myInfo: {XMLName:{Space: Local:info} Name:clbanning Address:unknown} TestMapValue of doc.song.verse w/ len(attrs) == 0. doc: <doc> <name>Mayer Hawthorne</name> <song> <title>A Long Time</title> <verse no="1"> <line no="1">Henry was a renegade</line> <line no="2">Didn't like to play it safe</line> </verse> </song> </doc> result: map[-no:1 line:[map[#text:Henry was a renegade -no:1] map[#text:Didn't like to play it safe -no:2]]] PASS ok github.com/clbanning/x2j 0.012s github.com/clbanning/x2j TestGoofy ... MapToDoc: map[byteVal:[116 104 101 32 97 105 100 32 111 102 32 116 104 101 105 114 32 99 111 117 110 116 114 121] goofyVal:0xc0000a20c0 nilVal:<nil> xml:map[tag:map[-bool:true -one:1 -pi:3.1415962535] tagJR:map[-key:value]]] v: {"byteVal":"dGhlIGFpZCBvZiB0aGVpciBjb3VudHJ5","goofyVal":{"S":"Now is the time for","Sp":"all good men to come to"},"nilVal":null,"xml":{"tag":{"-bool":"true","-one":"1","-pi":"3.1415962535"},"tagJR":{"-key":"value"}}} TestGoofier ... MapToDoc: map[byteVal:[116 104 101 32 97 105 100 32 111 102 32 116 104 101 105 114 32 99 111 117 110 116 114 121] goofierVal:0xc0000909f0 goofyVal:0xc0000a20c0 nilVal:<nil> xml:map[tag:map[-bool:true -one:1 -pi:3.1415962535] tagJR:map[-key:value]]] v: {"byteVal":"dGhlIGFpZCBvZiB0aGVpciBjb3VudHJ5","goofierVal":{"G":{"S":"Now is the time for","Sp":"all good men to come to"},"B":"dGhlIHRyZWUgb2YgZnJlZWRvbSBtdXN0IHBlcmlvZGljYWxseSBiZQ==","N":null},"goofyVal":{"S":"Now is the time for","Sp":"all good men to come to"},"nilVal":null,"xml":{"tag":{"-bool":"true","-one":"1","-pi":"3.1415962535"},"tagJR":{"-key":"value"}}} ToTree - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> entry : vars : foo : bar foo2 : hello : world ToMap - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> entry : vars : foo :[string] bar foo2 : hello :[string] world ToJson - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> json: {"entry":{"vars":{"foo":"bar","foo2":{"hello":"world"}}}} ToJsonIndent - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> json: { "entry": { "vars": { "foo": "bar", "foo2": { "hello": "world" } } } } BulkParser (with error) - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry><this><is>an</err><entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> phandler m: map[entry:map[vars:map[foo:bar foo2:map[hello:world]]]] ehandler err: XML syntax error on line 1: element <is> closed by </err> phandler m: map[entry:map[vars:map[foo:bar foo2:map[hello:world]]]] BulkParser (with error) - Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry><this><is>an</err><entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> phandlerj s: {"entry":{"vars":{"foo":"bar","foo2":{"hello":"world"}}}} ehandler err: XML syntax error on line 1: element <is> closed by </err> phandlerj s: {"entry":{"vars":{"foo":"bar","foo2":{"hello":"world"}}}} ================================ x2j_test.go ... =================== TestX2j ... XML doc: <msg mtype="alert" mpriority="1"> <text>help me!</text> <song title="A Long Time" author="Mayer Hawthorne"> <verses> <verse name="verse 1" no="1"> <line no="1">Henry was a renegade</line> <line no="2">Didn't like to play it safe</line> <line no="3">One component at a time</line> <line no="4">There's got to be a better way</line> <line no="5">Oh, people came from miles around</line> <line no="6">Searching for a steady job</line> <line no="7">Welcome to the Motor Town</line> <line no="8">Booming like an atom bomb</line> </verse> <verse name="verse 2" no="2"> <line no="1">Oh, Henry was the end of the story</line> <line no="2">Then everything went wrong</line> <line no="3">And we'll return it to its former glory</line> <line no="4">But it just takes so long</line> </verse> </verses> <chorus> <line no="1">It's going to take a long time</line> <line no="2">It's going to take it, but we'll make it one day</line> <line no="3">It's going to take a long time</line> <line no="4">It's going to take it, but we'll make it one day</line> </chorus> </song> </msg> DocToTree(): msg : -mtype : alert -mpriority : 1 text : help me! song : -title : A Long Time -author : Mayer Hawthorne verses : verse : -name : verse 1 -no : 1 line : -no : 1 #text : Henry was a renegade line : -no : 2 #text : Didn't like to play it safe line : -no : 3 #text : One component at a time line : -no : 4 #text : There's got to be a better way line : -no : 5 #text : Oh, people came from miles around line : -no : 6 #text : Searching for a steady job line : -no : 7 #text : Welcome to the Motor Town line : -no : 8 #text : Booming like an atom bomb verse : -name : verse 2 -no : 2 line : -no : 1 #text : Oh, Henry was the end of the story line : -no : 2 #text : Then everything went wrong line : -no : 3 #text : And we'll return it to its former glory line : -no : 4 #text : But it just takes so long chorus : line : -no : 1 #text : It's going to take a long time line : -no : 2 #text : It's going to take it, but we'll make it one day line : -no : 3 #text : It's going to take a long time line : -no : 4 #text : It's going to take it, but we'll make it one day treeToMap, recast==false: msg : text :[string] help me! song : chorus : line :[[]interface{}] [item: 0] -no :[string] 1 #text :[string] It's going to take a long time [item: 1] -no :[string] 2 #text :[string] It's going to take it, but we'll make it one day [item: 2] -no :[string] 3 #text :[string] It's going to take a long time [item: 3] -no :[string] 4 #text :[string] It's going to take it, but we'll make it one day -title :[string] A Long Time -author :[string] Mayer Hawthorne verses : verse :[[]interface{}] [item: 0] -name :[string] verse 1 -no :[string] 1 line :[[]interface{}] [item: 0] -no :[string] 1 #text :[string] Henry was a renegade [item: 1] -no :[string] 2 #text :[string] Didn't like to play it safe [item: 2] -no :[string] 3 #text :[string] One component at a time [item: 3] -no :[string] 4 #text :[string] There's got to be a better way [item: 4] -no :[string] 5 #text :[string] Oh, people came from miles around [item: 5] -no :[string] 6 #text :[string] Searching for a steady job [item: 6] #text :[string] Welcome to the Motor Town -no :[string] 7 [item: 7] #text :[string] Booming like an atom bomb -no :[string] 8 [item: 1] -name :[string] verse 2 -no :[string] 2 line :[[]interface{}] [item: 0] -no :[string] 1 #text :[string] Oh, Henry was the end of the story [item: 1] -no :[string] 2 #text :[string] Then everything went wrong [item: 2] -no :[string] 3 #text :[string] And we'll return it to its former glory [item: 3] #text :[string] But it just takes so long -no :[string] 4 -mtype :[string] alert -mpriority :[string] 1 json.MarshalIndent, recast==false: { "msg": { "-mpriority": "1", "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "chorus": { "line": [ { "#text": "It's going to take a long time", "-no": "1" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "2" }, { "#text": "It's going to take a long time", "-no": "3" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "4" } ] }, "verses": { "verse": [ { "-name": "verse 1", "-no": "1", "line": [ { "#text": "Henry was a renegade", "-no": "1" }, { "#text": "Didn't like to play it safe", "-no": "2" }, { "#text": "One component at a time", "-no": "3" }, { "#text": "There's got to be a better way", "-no": "4" }, { "#text": "Oh, people came from miles around", "-no": "5" }, { "#text": "Searching for a steady job", "-no": "6" }, { "#text": "Welcome to the Motor Town", "-no": "7" }, { "#text": "Booming like an atom bomb", "-no": "8" } ] }, { "-name": "verse 2", "-no": "2", "line": [ { "#text": "Oh, Henry was the end of the story", "-no": "1" }, { "#text": "Then everything went wrong", "-no": "2" }, { "#text": "And we'll return it to its former glory", "-no": "3" }, { "#text": "But it just takes so long", "-no": "4" } ] } ] } }, "text": "help me!" } } DocToMap(), recast==true: msg : -mpriority :[float64] 1.00e+00 text :[string] help me! song : -title :[string] A Long Time -author :[string] Mayer Hawthorne verses : verse :[[]interface{}] [item: 0] -name :[string] verse 1 -no :[float64] 1.00e+00 line :[[]interface{}] [item: 0] -no :[float64] 1.00e+00 #text :[string] Henry was a renegade [item: 1] #text :[string] Didn't like to play it safe -no :[float64] 2.00e+00 [item: 2] -no :[float64] 3.00e+00 #text :[string] One component at a time [item: 3] -no :[float64] 4.00e+00 #text :[string] There's got to be a better way [item: 4] -no :[float64] 5.00e+00 #text :[string] Oh, people came from miles around [item: 5] -no :[float64] 6.00e+00 #text :[string] Searching for a steady job [item: 6] -no :[float64] 7.00e+00 #text :[string] Welcome to the Motor Town [item: 7] -no :[float64] 8.00e+00 #text :[string] Booming like an atom bomb [item: 1] -no :[float64] 2.00e+00 line :[[]interface{}] [item: 0] -no :[float64] 1.00e+00 #text :[string] Oh, Henry was the end of the story [item: 1] -no :[float64] 2.00e+00 #text :[string] Then everything went wrong [item: 2] -no :[float64] 3.00e+00 #text :[string] And we'll return it to its former glory [item: 3] -no :[float64] 4.00e+00 #text :[string] But it just takes so long -name :[string] verse 2 chorus : line :[[]interface{}] [item: 0] -no :[float64] 1.00e+00 #text :[string] It's going to take a long time [item: 1] -no :[float64] 2.00e+00 #text :[string] It's going to take it, but we'll make it one day [item: 2] -no :[float64] 3.00e+00 #text :[string] It's going to take a long time [item: 3] -no :[float64] 4.00e+00 #text :[string] It's going to take it, but we'll make it one day -mtype :[string] alert DocToJsonIndent, recast==true: { "msg": { "-mpriority": 1, "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "chorus": { "line": [ { "#text": "It's going to take a long time", "-no": 1 }, { "#text": "It's going to take it, but we'll make it one day", "-no": 2 }, { "#text": "It's going to take a long time", "-no": 3 }, { "#text": "It's going to take it, but we'll make it one day", "-no": 4 } ] }, "verses": { "verse": [ { "-name": "verse 1", "-no": 1, "line": [ { "#text": "Henry was a renegade", "-no": 1 }, { "#text": "Didn't like to play it safe", "-no": 2 }, { "#text": "One component at a time", "-no": 3 }, { "#text": "There's got to be a better way", "-no": 4 }, { "#text": "Oh, people came from miles around", "-no": 5 }, { "#text": "Searching for a steady job", "-no": 6 }, { "#text": "Welcome to the Motor Town", "-no": 7 }, { "#text": "Booming like an atom bomb", "-no": 8 } ] }, { "-name": "verse 2", "-no": 2, "line": [ { "#text": "Oh, Henry was the end of the story", "-no": 1 }, { "#text": "Then everything went wrong", "-no": 2 }, { "#text": "And we'll return it to its former glory", "-no": 3 }, { "#text": "But it just takes so long", "-no": 4 } ] } ] } }, "text": "help me!" } } =================== TestGetValue ... Read doc: <entry><vars><foo>bar</foo><foo2><hello>world</hello></foo2></vars></entry> Looking for value: entry.vars { "foo": "bar", "foo2": { "hello": "world" } } Looking for value: entry.vars.foo2.hello world Looking with error in path: entry.var verr: no key in map: var DocValue() for tag path entry.vars { "foo": "bar", "foo2": { "hello": "world" } } =================== TestGetValueWithAttr ... Read doc: <entry><vars> <foo item="1">bar</foo> <foo item="2"> <hello item="3">world</hello> <hello item="4">universe</hello> </foo></vars></entry> Looking for value: entry.vars { "foo": [ { "#text": "bar", "-item": "1" }, { "-item": "2", "hello": [ { "#text": "world", "-item": "3" }, { "#text": "universe", "-item": "4" } ] } ] } MapValue(): Looking for value: entry.vars.foo item=2 { "-item": "2", "hello": [ { "#text": "world", "-item": "3" }, { "#text": "universe", "-item": "4" } ] } MapValue(): Looking for hello item:4 verr: no key in map: hello DocValue(): Looking for entry.vars.foo.hello item:4 verr: no keys beyond: foo DocValue(): Looking for empty nil { "entry": { "vars": { "foo": [ { "#text": "bar", "-item": "1" }, { "-item": "2", "hello": [ { "#text": "world", "-item": "3" }, { "#text": "universe", "-item": "4" } ] } ] } } } testing recast switch... MapValue(): Looking for value: entry.vars.foo item=2 { "-item": 2, "hello": [ { "#text": "world", "-item": 3 }, { "#text": "universe", "-item": 4 } ] } =================== TestStuff_1 ... <doc> <tag item="1">val2</tag> <tag item="2">val2</tag> <tag item="2" instance="2">val3</tag> </doc> doc : tag :[[]interface{}] [item: 0] #text :[string] val2 -item :[string] 1 [item: 1] -item :[string] 2 #text :[string] val2 [item: 2] -item :[string] 2 -instance :[string] 2 #text :[string] val3 DocValue(): tag [ { "#text": "val2", "-item": "1" }, { "#text": "val2", "-item": "2" }, { "#text": "val3", "-instance": "2", "-item": "2" } ] DocValue(): item:2 instance:2 "val3" =================== TestStuff_2 ... <tag item="1">val2</tag> <tag item="2">val2</tag> <tag item="2" instance="2">val3</tag> tag : -item :[string] 1 #text :[string] val2 DocValue(): tag { "#text": "val2", "-item": "1" } DocValue(): item:2 instance:2 verr: no attribute key:value pair: item:2 =================== TestBulkBuffer ... Bulk Message Processing Tests procMap: { "msg": { "-mpriority": "1", "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "chorus": { "line": [ { "#text": "It's going to take a long time", "-no": "1" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "2" }, { "#text": "It's going to take a long time", "-no": "3" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "4" } ] }, "verses": { "verse": [ { "-name": "verse 1", "-no": "1", "line": [ { "#text": "Henry was a renegade", "-no": "1" }, { "#text": "Didn't like to play it safe", "-no": "2" }, { "#text": "One component at a time", "-no": "3" }, { "#text": "There's got to be a better way", "-no": "4" }, { "#text": "Oh, people came from miles around", "-no": "5" }, { "#text": "Searching for a steady job", "-no": "6" }, { "#text": "Welcome to the Motor Town", "-no": "7" }, { "#text": "Booming like an atom bomb", "-no": "8" } ] }, { "-name": "verse 2", "-no": "2", "line": [ { "#text": "Oh, Henry was the end of the story", "-no": "1" }, { "#text": "Then everything went wrong", "-no": "2" }, { "#text": "And we'll return it to its former glory", "-no": "3" }, { "#text": "But it just takes so long", "-no": "4" } ] } ] } }, "text": "help me!" } } procMap: { "msg": { "-mpriority": "1", "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "verses": { "verse": { "-name": "verse 1", "-no": "1", "line": [ { "#text": "Henry was a renegade", "-no": "1" }, { "#text": "Didn't like to play it safe", "-no": "2" }, { "#text": "One component at a time", "-no": "3" }, { "#text": "There's got to be a better way", "-no": "4" }, { "#text": "Oh, people came from miles around", "-no": "5" }, { "#text": "Searching for a steady job", "-no": "6" }, { "#text": "Welcome to the Motor Town", "-no": "7" }, { "#text": "Booming like an atom bomb", "-no": "8" } ] } } }, "text": "help me!" } } procMap: { "msg": { "-mpriority": "1", "-mtype": "alert", "song": { "-author": "Mayer Hawthorne", "-title": "A Long Time", "chorus": { "line": [ { "#text": "It's going to take a long time", "-no": "1" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "2" }, { "#text": "It's going to take a long time", "-no": "3" }, { "#text": "It's going to take it, but we'll make it one day", "-no": "4" } ] } }, "text": "help me!" } } procError err: XML syntax error on line 1: element <chorus> closed by </song> procError err: XML syntax error on line 1: unexpected end element </msg> =================== TestBulkBuffer ... Test arbitrary XML buffer with no ending rootTag - then read from closed buffer. m: map[doc:map[tag:]] m: map[doc:map[one:map[#text:my test doc -att:1]]] merr: XML syntax error on line 1: unexpected EOF err: Buffer is not active. =================== TestTagAndKey ... TestTagAndKey() <doc> <sections> <section>one</section> <section> <parts> <part>two.one</part> <part>two.two</part> </parts> </section> </sections> <partitions> <parts> <sections> <section>one</section> <section>two</section> </sections> </parts> </partitions> </doc> tag: parts :: len: 2 v: [map[part:[two.one two.two]] map[sections:map[section:[one two]]]] no 'not_a_tag' tag key: section :: len: 2 v: [[one map[parts:map[part:[two.one two.two]]]] [one two]] no 'not_a_key' key ============================ x2jat_test.go =============== TestValuesAtKeyPath ... ValuesAtKeyPath ... doc1#author ss: [doc.books.book.author] vv: [map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day]] ValuesAtKeyPath ... doc1#first_name ss: [doc.books.book.author.first_name] vv: [William H. Gaddis Austin Tappan Wright John Hawkes map[first_name:T.E. last_name:Porter]] GetKeyPaths...doc2#book ss: [doc.books.author.book doc.books.author.books.book] vv: [map[book:[map[-seq:1 review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[review:Won the National Book Award title:JR]] name:William H. Gaddis] map[books:map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]] name:John Hawkes]] vv: [map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]]] vv,shortest_path: [map[book:[map[-seq:1 review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[review:Won the National Book Award title:JR]] name:William H. Gaddis] map[books:map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]] name:John Hawkes]] ValuesAtKeyPath ... msg1#pub ss: [msg.pub] vv: [map[pub:test text:This is a long cold winter]] ValuesAtKeyPath ... msg2#pub ss: [msgs.msg.pub] vv: [map[pub:test text:This is a long cold winter] map[pub:test2 text:I hope we have a cool summer, though]] =============== TestValuesAtTagPath ... ValuesAtTagPath ... doc1#author ss: [doc.books.book.author] vv: [map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day]] ValuesAtTagPath ... doc1#first_name ss: [doc.books.book.author.first_name] vv: [William H. Gaddis Austin Tappan Wright John Hawkes map[first_name:T.E. last_name:Porter]] ValuesAtTagPath...doc2#book ss: [doc.books.author.book doc.books.author.books.book] vv: [map[book:[map[-seq:1 review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[review:Won the National Book Award title:JR]] name:William H. Gaddis] map[books:map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]] name:John Hawkes]] vv: [map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]]] vv,shortest_path: [map[book:[map[-seq:1 review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[review:Won the National Book Award title:JR]] name:William H. Gaddis] map[books:map[book:[map[title:The Beetle Leg] map[title:The Blood Oranges]]] name:John Hawkes]] ================================ x2jfindPath_test.go =============== TestPathsForKey ... PathsForKey... doc01#author ss: [doc.books.book.author] PathsForKey... doc01#books ss: [doc.books] PathsForKey...doc02#book ss: [doc.books.author.book doc.books.author.books.book] PathForKeyShortest...doc02#book s: doc.books.author.book =============== TestPathsForTag ... PathsForTag... doc01#author ss: [doc.books.book.author] PathsForTag... doc01#books ss: [doc.books] PathsForTag...doc02#book ss: [doc.books.author.book doc.books.author.books.book] PathForTagShortest...doc02#book s: doc.books.author.book TestValuesFromTagPath() <doc> <books> <book seq="1"> <author>William H. Gaddis</author> <title>The Recognitions</title> <review>One of the great seminal American novels of the 20th century.</review> </book> <book seq="2"> <author>Austin Tappan Wright</author> <title>Islandia</title> <review>An example of earlier 20th century American utopian fiction.</review> </book> <book seq="3"> <author>John Hawkes</author> <title>The Beetle Leg</title> <review>A lyrical novel about the construction of Ft. Peck Dam in Montana.</review> </book> <book seq="4"> <author> <first_name>T.E.</first_name> <last_name>Porter</last_name> </author> <title>King's Day</title> <review>A magical novella.</review> </book> </books> </doc> map: doc : books : book :[[]interface{}] [item: 0] -seq :[string] 1 author :[string] William H. Gaddis title :[string] The Recognitions review :[string] One of the great seminal American novels of the 20th century. [item: 1] author :[string] Austin Tappan Wright title :[string] Islandia review :[string] An example of earlier 20th century American utopian fiction. -seq :[string] 2 [item: 2] -seq :[string] 3 author :[string] John Hawkes title :[string] The Beetle Leg review :[string] A lyrical novel about the construction of Ft. Peck Dam in Montana. [item: 3] author : first_name :[string] T.E. last_name :[string] Porter title :[string] King's Day review :[string] A magical novella. -seq :[string] 4 path == doc.books: len(v): 1 0 : map[book:[map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day]]] path == doc.books.*: len(v): 4 0 : map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] 1 : map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] 2 : map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] 3 : map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day] path == doc.books.book: len(v): 4 0 : map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] 1 : map[-seq:2 author:Austin Tappan Wright review:An example of earlier 20th century American utopian fiction. title:Islandia] 2 : map[-seq:3 author:John Hawkes review:A lyrical novel about the construction of Ft. Peck Dam in Montana. title:The Beetle Leg] 3 : map[-seq:4 author:map[first_name:T.E. last_name:Porter] review:A magical novella. title:King's Day] doc == doc2 / path == doc.books.book: len(v): 1 0 : map[-seq:1 author:William H. Gaddis review:One of the great seminal American novels of the 20th century. title:The Recognitions] path == doc.books.book.*: len(v): 12 0 : William H. Gaddis 1 : The Recognitions 2 : One of the great seminal American novels of the 20th century. 3 : Austin Tappan Wright 4 : Islandia 5 : An example of earlier 20th century American utopian fiction. 6 : John Hawkes 7 : The Beetle Leg 8 : A lyrical novel about the construction of Ft. Peck Dam in Montana. 9 : map[first_name:T.E. last_name:Porter] 10 : King's Day 11 : A magical novella. doc == doc2 / path == doc.books.book.*: len(v): 3 0 : William H. Gaddis 1 : The Recognitions 2 : One of the great seminal American novels of the 20th century. path == doc.books.*.author: len(v): 4 0 : William H. Gaddis 1 : Austin Tappan Wright 2 : John Hawkes 3 : map[first_name:T.E. last_name:Porter] path == doc.*.*.author: len(v): 4 0 : William H. Gaddis 1 : Austin Tappan Wright 2 : John Hawkes 3 : map[first_name:T.E. last_name:Porter] path == doc.*.*.title: len(v): 4 0 : The Recognitions 1 : Islandia 2 : The Beetle Leg 3 : King's Day path == doc.*.*.*: len(v): 12 0 : William H. Gaddis 1 : The Recognitions 2 : One of the great seminal American novels of the 20th century. 3 : Austin Tappan Wright 4 : Islandia 5 : An example of earlier 20th century American utopian fiction. 6 : John Hawkes 7 : The Beetle Leg 8 : A lyrical novel about the construction of Ft. Peck Dam in Montana. 9 : A magical novella. 10 : map[first_name:T.E. last_name:Porter] 11 : King's Day path == doc.*.*.*.*: len(v): 2 0 : T.E. 1 : Porter TestValuesFromTagPath2(), iteration: 0 <?xml version="1.0" encoding="UTF-8"?> <data> <netid> <disable>no</disable> <text1>default:text</text1> <word1>default:word</word1> </netid> </data> map: data : netid : disable :[string] no text1 :[string] default:text word1 :[string] default:word path == data.*: len(v): 1 0 : map[disable:no text1:default:text word1:default:word] disable : no text1 : default:text word1 : default:word path == data.*.*: len(v): 3 0 : default:word 1 : no 2 : default:text TestValuesFromTagPath2(), iteration: 1 <?xml version="1.0" encoding="UTF-8"?> <data> <idnet> <disable>yes</disable> <text1>default:text</text1> <word1>default:word</word1> </idnet> </data> map: data : idnet : disable :[string] yes text1 :[string] default:text word1 :[string] default:word path == data.*: len(v): 1 0 : map[disable:yes text1:default:text word1:default:word] word1 : default:word disable : yes text1 : default:text path == data.*.*: len(v): 3 0 : yes 1 : default:text 2 : default:word Unmarshal test ... *map[string]interface{}, *string m: map[doc:map[name:Mayer Hawthorne song:map[title:A Long Time verse:map[-no:1 line:[map[#text:Henry was a renegade -no:1] map[#text:Didn't like to play it safe -no:2]]]]]] s: {"doc":{"name":"Mayer Hawthorne","song":{"title":"A Long Time","verse":{"-no":"1","line":[{"#text":"Henry was a renegade","-no":"1"},{"#text":"Didn't like to play it safe","-no":"2"}]}}}} Unmarshal test ... struct: <info><name>clbanning</name><address>unknown</address></info> myInfo: {XMLName:{Space: Local:info} Name:clbanning Address:unknown} TestMapValue of doc.song.verse w/ len(attrs) == 0. doc: <doc> <name>Mayer Hawthorne</name> <song> <title>A Long Time</title> <verse no="1"> <line no="1">Henry was a renegade</line> <line no="2">Didn't like to play it safe</line> </verse> </song> </doc> result: map[-no:1 line:[map[#text:Henry was a renegade -no:1] map[#text:Didn't like to play it safe -no:2]]] PASS ok github.com/clbanning/x2j 0.013s Processing files: golang-github-clbanning-x2j-devel-1.1-9.fc38.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.aRAtR8 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.5YUYLK + RPM_EC=0 ++ jobs -p + exit 0 + umask 022 + cd /builddir/build/BUILD + cd x2j-1.1 + DOCDIR=/builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64/usr/share/doc/golang-github-clbanning-x2j-devel + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64/usr/share/doc/golang-github-clbanning-x2j-devel + cp -pr README /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64/usr/share/doc/golang-github-clbanning-x2j-devel + cp -pr examples /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64/usr/share/doc/golang-github-clbanning-x2j-devel + RPM_EC=0 ++ jobs -p + exit 0 + umask 022 + cd /builddir/build/BUILD + cd x2j-1.1 + LICENSEDIR=/builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64/usr/share/licenses/golang-github-clbanning-x2j-devel + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64/usr/share/licenses/golang-github-clbanning-x2j-devel + cp -pr LICENSE /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64/usr/share/licenses/golang-github-clbanning-x2j-devel + RPM_EC=0 ++ jobs -p + exit 0 grep: warning: stray \ before : grep: warning: stray \ before : grep: warning: stray \ before : grep: warning: stray \ before : grep: warning: stray \ before : grep: warning: stray \ before : grep: warning: stray \ before : grep: warning: stray \ before : Provides: golang(github.com/clbanning/x2j) = 1.1-9.fc38 golang(github.com/clbanning/x2j)(tag=1.1) = 1.1-9.fc38 golang-github-clbanning-x2j-devel = 1.1-9.fc38 golang-ipath(github.com/clbanning/x2j) = 1.1-9.fc38 golang-ipath(github.com/clbanning/x2j)(tag=1.1) = 1.1-9.fc38 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: go-filesystem Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64 Wrote: /builddir/build/RPMS/golang-github-clbanning-x2j-devel-1.1-9.fc38.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.ROUXrg + umask 022 + cd /builddir/build/BUILD + cd x2j-1.1 + /usr/bin/rm -rf /builddir/build/BUILDROOT/golang-github-clbanning-x2j-1.1-9.fc38.x86_64 + RPM_EC=0 ++ jobs -p + exit 0 Executing(rmbuild): /bin/sh -e /var/tmp/rpm-tmp.cgoigp + umask 022 + cd /builddir/build/BUILD + rm -rf x2j-1.1 x2j-1.1.gemspec + RPM_EC=0 ++ jobs -p + exit 0 Child return code was: 0