Hi Quentin, On Wed, 31 Aug 2022 at 10:39, Quentin Schulz <quentin.sch...@theobroma-systems.com> wrote: > > Hi Simon, > > On 8/31/22 15:46, Simon Glass wrote: > > Hi Quentin, > > > > On Wed, 31 Aug 2022 at 03:25, Quentin Schulz > > <quentin.sch...@theobroma-systems.com> wrote: > >> > >> Hi Simon, > >> > >> On 8/31/22 05:15, Simon Glass wrote: > >>> Hi Quentin, > >>> > >>> On Tue, 30 Aug 2022 at 11:54, Quentin Schulz > >>> <quentin.sch...@theobroma-systems.com> wrote: > >>>> > >>>> Hi Simon, > >>>> > >>>> On 8/30/22 17:56, Simon Glass wrote: > >>>>> Hi Quentin, > >>>>> > >>>>> On Tue, 30 Aug 2022 at 03:57, Quentin Schulz > >>>>> <quentin.sch...@theobroma-systems.com> wrote: > [...] > >>>> I do not understand how you found out coverage was not happy about my > >>>> patchset. I have the same percentage reported from your branch or my > >>>> local one. What am I missing? > >>>> > >>>> Regarding the content of the changed commits: > >>>> testMkimageMultipleNoContent is not testing what is says it does? > >>>> It's using multiple-data-files DT property which only impacts -d > >>>> parameter of mkimage and the comment for the test is """Test using > >>>> mkimage with -n and no data""". > >>>> > >>>> What exactly are you trying to test? > >>> > >>> 'binman test -T' > >>> > >>> I pushed your original patches to the try-rk4-orig branch. My changes > >>> are in try-rk4. > >>> > > I would change > https://github.com/sjg20/u-boot/blob/try-rk4/tools/binman/ftest.py#L5917 > from > """Test using mkimage with -n and no data""" > to > """Test passing multiple data files to mkimage with one data file having > no content""" > or something like that. Do you want me to send a v6 for this? > > Otherwise, looks fine to me :) > > With the bzip2 patch I just sent, I could see the line missing from unit > tests. > > However, unit tests aren't happy on my PC. > > $ tools/binman/binman tool --list > Name Version Description Path > --------------- ----------- ------------------------- > ------------------------------ > gzip 1.11 gzip compression /usr/bin/gzip > bzip2 1.0.8 bzip2 compression /usr/bin/bzip2 > cbfstool unknown Manipulate CBFS files > /home/qschulz/work/upstream/coreboot/util/cbfstool/cbfstool > fiptool Unknown vers Manipulate ATF FIP files > /home/qschulz/work/upstream/trusted-firmware-a/tools/fiptool/fiptool > futility v0.0.3050-18 Chromium OS firmware utili > /home/qschulz/work/upstream/coreboot/util/futility/futility > ifwitool unknown Manipulate Intel IFWI file > /home/qschulz/work/upstream/coreboot/util/cbfstool/ifwitool > lz4 v1.9.3 lz4 compression /usr/bin/lz4 > lzma_alone - lzma_alone compression (not found) > lzop v1.04 lzo compression /usr/bin/lzop > mkimage 2022.10-rc3- Generate image for U-Boot /usr/bin/mkimage > xz 5.2.5 xz compression /usr/bin/xz > zstd v1.5.2 zstd compression /usr/bin/zstd > $ tools/binman/binman test -T > ======================== Running binman tests ======================== > .........................................................sss.............................................F....Fs..............................................................................................F.................................................................................................................................................EEEEFF.................................FF.......FF............F................F.FFFF................. > ====================================================================== > ERROR: testSymbols (binman.ftest.TestFunctional) > Test binman can assign symbols embedded in U-Boot > ---------------------------------------------------------------------- > KeyError: '_binman_sym_magic'
This could be a naming difference with the bintools on Fedora. > > ====================================================================== > ERROR: testSymbolsExpanded (binman.ftest.TestFunctional) > Test binman can assign symbols in expanded entries > ---------------------------------------------------------------------- > KeyError: '_binman_sym_magic' > > ====================================================================== > ERROR: testSymbolsNoDtb (binman.ftest.TestFunctional) > Test binman can assign symbols embedded in U-Boot SPL > ---------------------------------------------------------------------- > KeyError: '_binman_sym_magic' > > ====================================================================== > ERROR: testSymbolsSubsection (binman.ftest.TestFunctional) > Test binman can assign symbols from a subsection > ---------------------------------------------------------------------- > KeyError: '_binman_sym_magic' > > ====================================================================== > FAIL: testExtractAllEntries (binman.ftest.TestFunctional) > Test extracting all entries > ---------------------------------------------------------------------- > AssertionError: 969 != 0 > > ====================================================================== > FAIL: testExtractCbfsCompressed (binman.ftest.TestFunctional) > Test extracting CBFS compressed data > ---------------------------------------------------------------------- > AssertionError: 969 != 0 That is a bit of a mystery. > > ====================================================================== > FAIL: testListCmd (binman.ftest.TestFunctional) > Test listing the files in an image using an Fdtmap > ---------------------------------------------------------------------- > AssertionError: Lists differ: ['Nam[463 chars]80 105 u-boot-dtb > 80 3c9', [184 chars]bf8'] != ['Nam[463 chars]80 0 > u-boot-dtb 80 3c9', [184 chars]bf8'] > > First differing element 7: > ' u-boot-dtb 180 105 u-boot-dtb 80 3c9' > ' u-boot-dtb 180 0 u-boot-dtb 80 3c9' > > Diff is 888 characters long. Set self.maxDiff to None to see it. > > ====================================================================== > FAIL: testSymbolsTplSection (binman.ftest.TestFunctional) > Test binman can assign symbols embedded in U-Boot TPL in a section > ---------------------------------------------------------------------- > AssertionError: b'\xff\xff\xff\xffBSYM\x04\x00\x00\x00 > \x00\x00\x00\x00\x00[36 chars]0klm' != > b'\xff\xff\xff\xff56780123456789abcdefghijklm' > > ====================================================================== > FAIL: testSymbolsTplSectionX86 (binman.ftest.TestFunctional) > Test binman can assign symbols in a section with end-at-4gb > ---------------------------------------------------------------------- > AssertionError: b'\xff\xff\xff\xffBSYM\x04\xff\xff\xff > \xff\xff\xff\x00\x00[36 chars]0klm' != > b'\xff\xff\xff\xff56780123456789abcdefghijklm' > > ====================================================================== > FAIL: testBadSymbolSize (binman.elf_test.TestElf) > Test that an attempt to use an 8-bit symbol are detected > ---------------------------------------------------------------------- > AssertionError: ValueError not raised > > ====================================================================== > FAIL: testDebug (binman.elf_test.TestElf) > Check that enabling debug in the elf module produced debug output > ---------------------------------------------------------------------- > AssertionError: False is not true > > ====================================================================== > FAIL: testNoValue (binman.elf_test.TestElf) > Test the case where we have no value for the symbol > ---------------------------------------------------------------------- > AssertionError: b'BSYM\xff\xff\xff\xff\xff\xff\xff\xff\xff\[43 > chars]aaaa' != b'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' Probably the symbol table is not being read correctly in elf.py > > ====================================================================== > FAIL: testOutsideFile (binman.elf_test.TestElf) > Test a symbol which extends outside the entry area is detected > ---------------------------------------------------------------------- > AssertionError: ValueError not raised > > ====================================================================== > FAIL: test_cbfs_arch (binman.cbfs_util_test.TestCbfs) > Test on non-x86 architecture > ---------------------------------------------------------------------- > AssertionError: cbfstool produced a different result There is no particular spec for what cbfstool does, so perhaps you have a different version. Above it shows you have none at all, actually. > > Stdout: > diff -y <(xxd -g1 /tmp/expect) <(xxd -g1 /tmp/actual) | colordiff > > ====================================================================== > FAIL: test_cbfs_offset (binman.cbfs_util_test.TestCbfs) > Test a CBFS with files at particular offsets > ---------------------------------------------------------------------- > AssertionError: cbfstool produced a different result > > Stdout: > diff -y <(xxd -g1 /tmp/expect) <(xxd -g1 /tmp/actual) | colordiff > > ====================================================================== > FAIL: test_cbfs_raw (binman.cbfs_util_test.TestCbfs) > Test base handling of a Coreboot Filesystem (CBFS) > ---------------------------------------------------------------------- > AssertionError: cbfstool produced a different result > > Stdout: > diff -y <(xxd -g1 /tmp/expect) <(xxd -g1 /tmp/actual) | colordiff > > ====================================================================== > FAIL: test_cbfs_raw_compress (binman.cbfs_util_test.TestCbfs) > Test base handling of compressing raw files > ---------------------------------------------------------------------- > AssertionError: b'' != b'compress xxxxxxxxxxxxxxxxxxxxxx data' > > ====================================================================== > FAIL: test_cbfs_raw_space (binman.cbfs_util_test.TestCbfs) > Test files with unused space in the CBFS > ---------------------------------------------------------------------- > AssertionError: cbfstool produced a different result > > Stdout: > diff -y <(xxd -g1 /tmp/expect) <(xxd -g1 /tmp/actual) | colordiff > > ====================================================================== > FAIL: test_cbfs_stage (binman.cbfs_util_test.TestCbfs) > Tests handling of a Coreboot Filesystem (CBFS) > ---------------------------------------------------------------------- > AssertionError: cbfstool produced a different result > > Stdout: > diff -y <(xxd -g1 /tmp/expect) <(xxd -g1 /tmp/actual) | colordiff > > ====================================================================== > SKIP: testCompUtilCompressions (binman.ftest.TestFunctional) > Test compression algorithms > ---------------------------------------------------------------------- > lzma_alone not available > > ====================================================================== > SKIP: testCompUtilPadding (binman.ftest.TestFunctional) > Test padding of compression algorithms > ---------------------------------------------------------------------- > lzma_alone not available > > ====================================================================== > SKIP: testCompUtilVersions (binman.ftest.TestFunctional) > Test tool version of compression algorithms > ---------------------------------------------------------------------- > lzma_alone not available > > ====================================================================== > SKIP: testExtractCbfsRaw (binman.ftest.TestFunctional) > Test extracting CBFS compressed data without decompressing it > ---------------------------------------------------------------------- > lzma_alone not available These are pretty obvious > > ---------------------------------------------------------------------- > Ran 454 tests in 11.738s > > FAILED (failures=15, errors=4, skipped=4) > > 99% > Name Stmts Miss Cover > --------------------------------------------------------------------------- > tools/binman/__init__.py 0 0 100% > tools/binman/bintool.py 254 0 100% > tools/binman/btool/btool_gzip.py 5 0 100% > tools/binman/btool/bzip2.py 15 0 100% > tools/binman/btool/cbfstool.py 24 0 100% > tools/binman/btool/fiptool.py 22 0 100% > tools/binman/btool/futility.py 24 0 100% > tools/binman/btool/ifwitool.py 22 0 100% > tools/binman/btool/lz4.py 28 0 100% > tools/binman/btool/lzma_alone.py 34 3 91% > tools/binman/btool/lzop.py 5 0 100% > tools/binman/btool/mkimage.py 29 0 100% > tools/binman/btool/xz.py 5 0 100% > tools/binman/btool/zstd.py 5 0 100% > tools/binman/cbfs_util.py 366 0 100% > tools/binman/cmdline.py 73 0 100% > tools/binman/control.py 342 0 100% > tools/binman/elf.py 195 18 91% > tools/binman/entry.py 483 0 100% > tools/binman/etype/atf_bl31.py 5 0 100% > tools/binman/etype/atf_fip.py 67 0 100% > tools/binman/etype/blob.py 39 0 100% > tools/binman/etype/blob_dtb.py 46 0 100% > tools/binman/etype/blob_ext.py 11 0 100% > tools/binman/etype/blob_ext_list.py 32 0 100% > tools/binman/etype/blob_named_by_arg.py 9 0 100% > tools/binman/etype/blob_phase.py 16 0 100% > tools/binman/etype/cbfs.py 101 0 100% > tools/binman/etype/collection.py 30 0 100% > tools/binman/etype/cros_ec_rw.py 5 0 100% > tools/binman/etype/fdtmap.py 62 0 100% > tools/binman/etype/files.py 35 0 100% > tools/binman/etype/fill.py 13 0 100% > tools/binman/etype/fit.py 214 0 100% > tools/binman/etype/fmap.py 34 0 100% > tools/binman/etype/gbb.py 37 0 100% > tools/binman/etype/image_header.py 53 0 100% > tools/binman/etype/intel_cmc.py 4 0 100% > tools/binman/etype/intel_descriptor.py 39 0 100% > tools/binman/etype/intel_fit.py 12 0 100% > tools/binman/etype/intel_fit_ptr.py 17 0 100% > tools/binman/etype/intel_fsp.py 4 0 100% > tools/binman/etype/intel_fsp_m.py 4 0 100% > tools/binman/etype/intel_fsp_s.py 4 0 100% > tools/binman/etype/intel_fsp_t.py 4 0 100% > tools/binman/etype/intel_ifwi.py 67 0 100% > tools/binman/etype/intel_me.py 4 0 100% > tools/binman/etype/intel_mrc.py 6 0 100% > tools/binman/etype/intel_refcode.py 6 0 100% > tools/binman/etype/intel_vbt.py 4 0 100% > tools/binman/etype/intel_vga.py 4 0 100% > tools/binman/etype/mkimage.py 68 0 100% > tools/binman/etype/opensbi.py 5 0 100% > tools/binman/etype/powerpc_mpc85xx_bootpg_resetvec.py 6 0 100% > tools/binman/etype/pre_load.py 77 0 100% > tools/binman/etype/scp.py 5 0 100% > tools/binman/etype/section.py 376 12 97% > tools/binman/etype/tee_os.py 5 0 100% > tools/binman/etype/text.py 21 0 100% > tools/binman/etype/u_boot.py 7 0 100% > tools/binman/etype/u_boot_dtb.py 9 0 100% > tools/binman/etype/u_boot_dtb_with_ucode.py 51 0 100% > tools/binman/etype/u_boot_elf.py 19 0 100% > tools/binman/etype/u_boot_env.py 27 0 100% > tools/binman/etype/u_boot_expanded.py 4 0 100% > tools/binman/etype/u_boot_img.py 7 0 100% > tools/binman/etype/u_boot_nodtb.py 7 0 100% > tools/binman/etype/u_boot_spl.py 11 0 100% > tools/binman/etype/u_boot_spl_bss_pad.py 14 0 100% > tools/binman/etype/u_boot_spl_dtb.py 9 0 100% > tools/binman/etype/u_boot_spl_elf.py 7 0 100% > tools/binman/etype/u_boot_spl_expanded.py 12 0 100% > tools/binman/etype/u_boot_spl_nodtb.py 11 0 100% > tools/binman/etype/u_boot_spl_with_ucode_ptr.py 8 0 100% > tools/binman/etype/u_boot_tpl.py 11 0 100% > tools/binman/etype/u_boot_tpl_bss_pad.py 14 0 100% > tools/binman/etype/u_boot_tpl_dtb.py 9 0 100% > tools/binman/etype/u_boot_tpl_dtb_with_ucode.py 8 0 100% > tools/binman/etype/u_boot_tpl_elf.py 7 0 100% > tools/binman/etype/u_boot_tpl_expanded.py 12 0 100% > tools/binman/etype/u_boot_tpl_nodtb.py 11 0 100% > tools/binman/etype/u_boot_tpl_with_ucode_ptr.py 12 0 100% > tools/binman/etype/u_boot_ucode.py 33 0 100% > tools/binman/etype/u_boot_with_ucode_ptr.py 42 0 100% > tools/binman/etype/vblock.py 38 0 100% > tools/binman/etype/x86_reset16.py 7 0 100% > tools/binman/etype/x86_reset16_spl.py 7 0 100% > tools/binman/etype/x86_reset16_tpl.py 7 0 100% > tools/binman/etype/x86_start16.py 7 0 100% > tools/binman/etype/x86_start16_spl.py 7 0 100% > tools/binman/etype/x86_start16_tpl.py 7 0 100% > tools/binman/fip_util.py 202 0 100% > tools/binman/fmap_util.py 48 0 100% > tools/binman/image.py 164 4 98% > tools/binman/state.py 201 0 100% > --------------------------------------------------------------------------- > TOTAL 4539 37 99% > > To get a report in 'htmlcov/index.html', type: python3 -m coverage html > Coverage error: 99%, but should be 100% > ValueError: Test coverage failure > > I guess I just should send a new mail so the community can have a look > at it? I sent two patches for low hanging fruits but I'm afraid I won't > have time to look at those issues any time soon :/ Yes please resend your series, just with the extra test code I added. > > I'm running Fedora Server 36 x86_64 fully up-to-date if that helps. > > [...] > >> I get 52% coverage only with that exact same branch, something's > >> definitely wrong here in my setup. And I **definitely** do not have > >> tools/binman/etype/mkimage.py listed in there.... Mmmmmm. > > > > You may need to get some bintools with 'binman tool -f missing'. But > > It expects apt package manager, I only have dnf :) Patches welcome! > > Also, tries to download binaries from a Google Drive, no thank you :) I don't like it either. Perhaps we could use a web site? I would prefer to build from source, anyway. > > > in any case, you only need to worry about coverage in mkimage.py which > > is what you changed. > > > > That's fair. Thanks for fixing my patches, lemme know if you want a v6 > instead. Yes please, my things were just an example to help. > > [...] > >> > >> I'll play with binman until I manage to get a coverage percentage equal > >> to yours. > > > > OK, I'd appreciate a docs patch if you can produce one from your > > efforts, or any feedback on how to make this automatic / easy. > > > > I copied the errors I'm having right now a few paragraphs above but the > biggest issue was bzip2 getting stuck and messing up the whole test > suite. With it patched, I was able to see the line that was kept > untested in my patches. Otherwise I believe your advice of running > binman test -T was enough if that had worked, just bad luck :) OK good. Regards, Simon