diff options
author | Timo Teräs <timo.teras@iki.fi> | 2020-10-02 16:47:40 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2020-10-09 16:09:19 +0300 |
commit | 010497cb5ae50713f0ed4e4c4bf3b860bf751da7 (patch) | |
tree | da7626ff54d2086f4f9fb2dd5181484f35ab05d9 /src/app_vertest.c | |
parent | 6d71f49c11e22a617234ef47123ab9287cde23af (diff) | |
download | apk-tools-010497cb5ae50713f0ed4e4c4bf3b860bf751da7.tar.gz apk-tools-010497cb5ae50713f0ed4e4c4bf3b860bf751da7.tar.bz2 apk-tools-010497cb5ae50713f0ed4e4c4bf3b860bf751da7.tar.xz apk-tools-010497cb5ae50713f0ed4e4c4bf3b860bf751da7.zip |
add separate vertest applet for version string testing
start adding meson based tests
Diffstat (limited to 'src/app_vertest.c')
-rw-r--r-- | src/app_vertest.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/app_vertest.c b/src/app_vertest.c new file mode 100644 index 0000000..54d5f10 --- /dev/null +++ b/src/app_vertest.c @@ -0,0 +1,53 @@ +/* app_vertest.c - Alpine Package Keeper (APK) + * + * Copyright (C) 2005-2008 Natanael Copa <n@tanael.org> + * Copyright (C) 2008-2011 Timo Teräs <timo.teras@iki.fi> + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-only + */ + +#include <stdio.h> +#include "apk_defines.h" +#include "apk_applet.h" +#include "apk_database.h" +#include "apk_version.h" +#include "apk_print.h" + +static int vertest_main(void *pctx, struct apk_database *db, struct apk_string_array *args) +{ + apk_blob_t arg, ver, op, space = APK_BLOB_STRLIT(" "); + char **parg; + int errors = 0; + + foreach_array_item(parg, args) { + int ok = 0; + + // arguments are either: + // "version" -> check validty + // "ver1 op ver2" -> check if that the comparison is true + arg = APK_BLOB_STR(*parg); + if (apk_blob_split(arg, space, &ver, &arg) && + apk_blob_split(arg, space, &op, &arg)) { + if (apk_version_compare_blob(ver, arg) & apk_version_result_mask_blob(op)) + ok = 1; + } else { + ok = apk_version_validate(arg); + } + if (!ok) { + if (apk_verbosity > 0) + printf("%s\n", *parg); + errors++; + } + } + + return errors ? 1 : 0; +} + +static struct apk_applet apk_vertest = { + .open_flags = APK_OPENF_READ | APK_OPENF_NO_STATE | APK_OPENF_NO_REPOS, + .name = "vertest", + .main = vertest_main, +}; + +APK_DEFINE_APPLET(apk_vertest); |