One of the things we’re really trying to do here is make a strong case for contributing good tests, so I want them to be both:
* Good citizens of code hygiene, and * Good examples of real-world, non-trivial tests (I actually used the new UnitTestFrameworkPkg and test-driven design while writing VarPol way back when) So I’m happy [for some definitions of ‘happy’] to reform and reflow these as needed, but I’m getting the suspicion that there are walls I’m going to hit. I also don’t want test writing to be so onerous as to prevent contributors for writing them. For example: I’m not going to docstring every test case. The test case name and framework strings should be clear enough to explain what the case is doing (otherwise it’s not a good test case). - Bret From: Bret Barkelew via groups.io<mailto:bret.barkelew=microsoft....@groups.io> Sent: Thursday, September 24, 2020 7:26 PM To: Ken Taylor<mailto:ken_tay...@phoenix.com>; devel@edk2.groups.io<mailto:devel@edk2.groups.io> Subject: [EXTERNAL] Re: [edk2-devel] ECC: Won't somebody PLEASE think of the... test structures. So for context, this is a new host-based test that should only run within a platform OS, so intrinsics aren’t the big deal that they would be in FW code. But we do need to figure out how to simultaneously adhere to the coding convention while enabling test authoring. Or we chose to not enforce quite as many things for tests. I’d prefer the first. - Bret From: Ken Taylor<mailto:ken_tay...@phoenix.com> Sent: Thursday, September 24, 2020 6:57 PM To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Bret Barkelew<mailto:bret.barke...@microsoft.com> Subject: [EXTERNAL] RE: ECC: Won't somebody PLEASE think of the... test structures. If the structure is a non-static local variable, most compilers will silently inject an intrinsic call to memcpy in function initialization. This leads to an intermittent linker error. If the compiler you use automatically supports an intrinsic memcpy in the given architecture or optimizes out the memcpy, it will build for you and you won’t know you need to link to an intrinsic support library in order to build cross platform. This leads to code that builds for you, but not for me. Regards, -Ken. From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Bret Barkelew via groups.io Sent: Thursday, September 24, 2020 6:23 PM To: devel@edk2.groups.io Subject: [edk2-devel] ECC: Won't somebody PLEASE think of the... test structures. ERROR - EFI coding style error ERROR - *Error code: 5007 ERROR - *There should be no initialization of a variable as part of its declaration ERROR - *file: //home/corthon/_uefi/edk2_qemu_ci/edk2/MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.c ERROR - *Line number: 333 ERROR - *Variable Name: MatchCheckPolicy EccCheck no likey: SIMPLE_VARIABLE_POLICY_ENTRY ValidationPolicy = { { VARIABLE_POLICY_ENTRY_REVISION, sizeof(VARIABLE_POLICY_ENTRY) + sizeof(TEST_VAR_1_NAME), sizeof(VARIABLE_POLICY_ENTRY), TEST_GUID_1, TEST_POLICY_MIN_SIZE_NULL, TEST_POLICY_MAX_SIZE_NULL, TEST_POLICY_ATTRIBUTES_NULL, TEST_POLICY_ATTRIBUTES_NULL, VARIABLE_POLICY_TYPE_NO_LOCK }, TEST_VAR_1_NAME }; But you can’t init this structure separately without addressing each field. Can a brother get an override? - Bret -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#65602): https://edk2.groups.io/g/devel/message/65602 Mute This Topic: https://groups.io/mt/77071159/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-