checkpatch.pl: Request a test when a new command is added
authorSimon Glass <sjg@chromium.org>
Fri, 22 May 2020 22:32:39 +0000 (16:32 -0600)
committerTom Rini <trini@konsulko.com>
Thu, 4 Jun 2020 22:10:02 +0000 (18:10 -0400)
This request is made with nearly every new command. Point to some docs
on how to do it.

Signed-off-by: Simon Glass <sjg@chromium.org>
doc/README.commands
scripts/checkpatch.pl

index 716ad227aa1917261ccaf0bfd189f9f5693f9027..229f86d8fb25074076b22e3aa4d5edcc70f7f502 100644 (file)
@@ -134,3 +134,53 @@ by writing in u-boot.lds ($(srctree)/board/boardname/u-boot.lds) these
        .u_boot_list : {
                KEEP(*(SORT(.u_boot_list*)));
        }
+
+Writing tests
+-------------
+
+All new commands should have tests. Tests for existing commands are very
+welcome.
+
+It is fairly easy to write a test for a command. Enable it in sandbox, and
+then add code that runs the command and checks the output.
+
+Here is an example:
+
+/* Test 'acpi items' command */
+static int dm_test_acpi_cmd_items(struct unit_test_state *uts)
+{
+       struct acpi_ctx ctx;
+       void *buf;
+
+       buf = malloc(BUF_SIZE);
+       ut_assertnonnull(buf);
+
+       ctx.current = buf;
+       ut_assertok(acpi_fill_ssdt(&ctx));
+       console_record_reset();
+       run_command("acpi items", 0);
+       ut_assert_nextline("dev 'acpi-test', type 1, size 2");
+       ut_assert_nextline("dev 'acpi-test2', type 1, size 2");
+       ut_assert_console_end();
+
+       ctx.current = buf;
+       ut_assertok(acpi_inject_dsdt(&ctx));
+       console_record_reset();
+       run_command("acpi items", 0);
+       ut_assert_nextline("dev 'acpi-test', type 2, size 2");
+       ut_assert_nextline("dev 'acpi-test2', type 2, size 2");
+       ut_assert_console_end();
+
+       console_record_reset();
+       run_command("acpi items -d", 0);
+       ut_assert_nextline("dev 'acpi-test', type 2, size 2");
+       ut_assert_nextlines_are_dump(2);
+       ut_assert_nextline("%s", "");
+       ut_assert_nextline("dev 'acpi-test2', type 2, size 2");
+       ut_assert_nextlines_are_dump(2);
+       ut_assert_nextline("%s", "");
+       ut_assert_console_end();
+
+       return 0;
+}
+DM_TEST(dm_test_acpi_cmd_items, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
index 2654f9e5f75aa50eccd50cd9e06308ffb01c6a4a..cf620c8614ab85170f25ba7a543699b38a6a8290 100755 (executable)
@@ -2255,6 +2255,12 @@ sub u_boot_line {
                WARN("LIVETREE",
                     "Use the livetree API (dev_read_...)\n" . $herecurr);
        }
+
+       # add tests for new commands
+       if ($line =~ /^\+.*do_($Ident)\(struct cmd_tbl.*/) {
+               WARN("CMD_TEST",
+                    "Possible new command - make sure you add a test\n" . $herecurr);
+       }
 }
 
 sub process {