Grab the kernel version used for tests dynamically via utsname() instead of
hardcoding the version of the build host.
Otherwise tests will be skipped if the build host had a too old kernel
version.
flodin:~ # ./ndctl test
__ndctl_test_attempt: skip test_libndctl:1950 requires: 4.2.0 current: 4.1.0
test-libndctl: SKIP
__ndctl_test_attempt: skip test_dpa_alloc:300 requires: 4.2.0 current: 4.1.0
test-dpa-alloc: SKIP
__ndctl_test_attempt: skip test_parent_uuid:230 requires: 4.3.0 current: 4.1.0
test-parent-uuid: SKIP
attempted: 3 skipped: 3
Signed-off-by: Johannes Thumshirn <jthumshirn(a)suse.de>
---
test/core.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
Changes to v1:
Use utsname.release which is obviously correct.
On my test system utsname.release = "4.4.4-default"
I can only imagine the sscanf() failing and on stack garbage in a, b, c being
greater than KERNEL_VERSION(4, 3, 0).
--- a/test/core.c
+++ b/test/core.c
@@ -1,4 +1,5 @@
#include <linux/version.h>
+#include <sys/utsname.h>
#include <stdlib.h>
#include <stdio.h>
#include <test.h>
@@ -11,6 +12,18 @@ struct ndctl_test {
int skip;
};
+static unsigned int get_system_kver(void)
+{
+ struct utsname utsname;
+ int a, b, c;
+
+ uname(&utsname);
+
+ sscanf(utsname.release, "%d.%d.%d", &a, &b, &c);
+
+ return KERNEL_VERSION(a,b,c);
+}
+
struct ndctl_test *ndctl_test_new(unsigned int kver)
{
struct ndctl_test *test = calloc(1, sizeof(*test));
@@ -19,7 +32,7 @@ struct ndctl_test *ndctl_test_new(unsign
return NULL;
if (!kver)
- test->kver = LINUX_VERSION_CODE;
+ test->kver = get_system_kver();
else
test->kver = kver;