Edward O'Callaghan has uploaded this change for review.

View Change

tests/: [RFC]: Implement unit-testing using mtest

The following allows the use of a ultra minimal unit-testing
framework and includes an example that exercises the libflashrom
init self-check and tear-down.

Some work is needed to get include paths into a healthy state so
that inner logic can be instrumented however this sets the tone.

Change-Id: I18d68d3ace32b5be264aae2988a8ed84c779be43
Signed-off-by: Edward O'Callaghan <quasisec@google.com>
---
M meson.build
A tests/meson.build
A tests/selfcheck.c
3 files changed, 60 insertions(+), 0 deletions(-)

git pull ssh://review.coreboot.org:29418/flashrom refs/changes/54/38954/1
diff --git a/meson.build b/meson.build
index 375089c..8a998d0 100644
--- a/meson.build
+++ b/meson.build
@@ -402,3 +402,10 @@
)

subdir('util')
+
+# unit-test framework
+munit_dep = dependency(
+ 'munit',
+ fallback: ['munit', 'munit_dep']
+)
+subdir('tests')
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..af65a81
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,12 @@
+root_includes = include_directories(['../', '../subprojects'])
+
+srcs = files('selfcheck.c')
+
+flashrom_tests = executable('flashrom_unit_tests',
+ srcs,
+ include_directories : root_includes,
+ dependencies : munit_dep,
+ link_with : flashrom
+)
+
+test('munit test flashrom', flashrom_tests)
diff --git a/tests/selfcheck.c b/tests/selfcheck.c
new file mode 100644
index 0000000..abe88b1
--- /dev/null
+++ b/tests/selfcheck.c
@@ -0,0 +1,41 @@
+#include <stdlib.h>
+
+#include "munit/munit.h"
+
+#include "libflashrom.h"
+
+
+MunitResult self_check_test(const MunitParameter params[], void* user_data_or_fixture)
+{
+ //Programmer table miscompilation!
+ munit_assert(flashrom_init(1 /*perform_selfcheck*/) == 0);
+ munit_assert(flashrom_shutdown() == 0);
+
+ return MUNIT_OK;
+}
+
+MunitTest tests[] = {
+ {
+ (char *)"/self_check", /* name */
+ self_check_test, /* test */
+ NULL, /* setup */
+ NULL, /* tear_down */
+ MUNIT_TEST_OPTION_NONE, /* options */
+ NULL /* parameters */
+ },
+ /* Mark the end of the array with an entry where the test
+ * function is NULL */
+ { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }
+};
+
+static const MunitSuite suite = {
+ (char *)"/basic", /* name */
+ tests, /* tests */
+ NULL, /* suites */
+ 1, /* iterations */
+ MUNIT_SUITE_OPTION_NONE /* options */
+};
+
+int main (int argc, char* argv[]) {
+ return munit_suite_main(&suite, (char*)"flashrom", argc, argv);
+}

To view, visit change 38954. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I18d68d3ace32b5be264aae2988a8ed84c779be43
Gerrit-Change-Number: 38954
Gerrit-PatchSet: 1
Gerrit-Owner: Edward O'Callaghan <quasisec@chromium.org>
Gerrit-MessageType: newchange