From e2582c9387f8beb9506c93cc460c64318ebde7c0 Mon Sep 17 00:00:00 2001 From: Thomas Waser Date: Mon, 8 May 2017 08:26:02 +0200 Subject: [PATCH] range: use check/range/type instead of check/type again --- src/error/specification | 15 +++++++++++++++ src/plugins/range/README.md | 4 ++-- src/plugins/range/range.c | 3 +-- src/plugins/range/testmod_range.c | 12 ++++++++---- .../typedispatcher/testmod_typedispatcher.c | 6 +++--- src/plugins/typedispatcher/typehelper.h | 4 ++-- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/error/specification b/src/error/specification index 9940d977033..08565ab35e4 100644 --- a/src/error/specification +++ b/src/error/specification @@ -1083,3 +1083,18 @@ severity:warning ingroup:plugin macro:NOT_VALID_KEY_VALUE_PAIR module:mini + +number:176 +description:validation failed. +severity:warning +ingroup:plugin +module:typedispatcher +macro:TYPEDISP_VAL_FAILED + +number:177 +description:failed to access metadata. +severity:error +ingroup:plugin +module:typedispatcher +macro:TYPEDISP_METAINI_FAILED + diff --git a/src/plugins/range/README.md b/src/plugins/range/README.md index 28849303b14..e79235b8ea8 100644 --- a/src/plugins/range/README.md +++ b/src/plugins/range/README.md @@ -6,7 +6,7 @@ - infos/recommends = - infos/placements = presetstorage postgetstorage - infos/status = maintained conformant compatible coverage specific unittest tested libc preview unfinished -- infos/metadata = check/range check/type +- infos/metadata = check/range check/range/type - infos/description = tests if a value is within a given range ## Introduction ## @@ -17,7 +17,7 @@ The range plugin checks if a `Key`'s value is within a given range. The plugin checks every `Key` in the `KeySet` for the metakey `check/range` which contains either a single range with the syntax `[-]min-[-]max`, or a list of ranges or values separated by `,` and tests if the `Key`'s value is within the range(s). -`check/type` can be used to specify the datatype. If not specified otherwise the default value is `long long` +`check/range/type` can be used to specify the datatype. If not specified otherwise the default value is `long long` Possible values: diff --git a/src/plugins/range/range.c b/src/plugins/range/range.c index 88e6538c9b5..ddc9aac0f40 100644 --- a/src/plugins/range/range.c +++ b/src/plugins/range/range.c @@ -364,7 +364,6 @@ static RangeType stringToType (const Key * typeMeta) static const char * floatTypes[] = { "float", "double", "long double", NULL, }; - if (typeMeta) { const char * strVal = keyString (typeMeta); @@ -390,7 +389,7 @@ static RangeType stringToType (const Key * typeMeta) static RangeType getType (const Key * key) { - const Key * typeMeta = keyGetMeta (key, "check/type"); + const Key * typeMeta = keyGetMeta (key, "check/range/type"); RangeType type = NA; type = stringToType (typeMeta); diff --git a/src/plugins/range/testmod_range.c b/src/plugins/range/testmod_range.c index 017839de49c..030160d2373 100644 --- a/src/plugins/range/testmod_range.c +++ b/src/plugins/range/testmod_range.c @@ -35,7 +35,7 @@ void testUInt (const char * value, int ret, const char * rangeString) { Key * parentKey = keyNew ("user/tests/range", KEY_VALUE, "", KEY_END); KeySet * ks = ksNew (10, keyNew ("user/tests/range/key", KEY_VALUE, value, KEY_META, "check/range", rangeString, KEY_META, - "check/type", "unsigned long", KEY_END), + "check/range/type", "unsigned long", KEY_END), KS_END); KeySet * conf = ksNew (0, KS_END); PLUGIN_OPEN ("range"); @@ -52,7 +52,7 @@ void testFloat (const char * value, int ret, const char * rangeString) { Key * parentKey = keyNew ("user/tests/range", KEY_VALUE, "", KEY_END); KeySet * ks = ksNew (10, keyNew ("user/tests/range/key", KEY_VALUE, value, KEY_META, "check/range", rangeString, KEY_META, - "check/type", "float", KEY_END), + "check/range/type", "float", KEY_END), KS_END); KeySet * conf = ksNew (0, KS_END); PLUGIN_OPEN ("range"); @@ -69,7 +69,7 @@ void testHex (const char * value, int ret, const char * rangeString) { Key * parentKey = keyNew ("user/tests/range", KEY_VALUE, "", KEY_END); KeySet * ks = ksNew (10, keyNew ("user/tests/range/key", KEY_VALUE, value, KEY_META, "check/range", rangeString, KEY_META, - "check/type", "HEX", KEY_END), + "check/range/type", "HEX", KEY_END), KS_END); KeySet * conf = ksNew (0, KS_END); PLUGIN_OPEN ("range"); @@ -86,7 +86,7 @@ void testChar (const char * value, int ret, const char * rangeString) { Key * parentKey = keyNew ("user/tests/range", KEY_VALUE, "", KEY_END); KeySet * ks = ksNew (10, keyNew ("user/tests/range/key", KEY_VALUE, value, KEY_META, "check/range", rangeString, KEY_META, - "check/type", "char", KEY_END), + "check/range/type", "char", KEY_END), KS_END); KeySet * conf = ksNew (0, KS_END); PLUGIN_OPEN ("range"); @@ -178,6 +178,10 @@ int main (int argc, char ** argv) testChar ("g", -1, "a-f"); testChar ("c", 1, "a-f"); + testChar ("A", 1, "A-Z"); + testChar ("C", 1, "A-Z"); + + setlocale (LC_ALL, old_locale); elektraFree (old_locale); printf ("\ntestmod_range RESULTS: %d test(s) done. %d error(s).\n", nbTest, nbError); diff --git a/src/plugins/typedispatcher/testmod_typedispatcher.c b/src/plugins/typedispatcher/testmod_typedispatcher.c index 149bdd99573..81e14f399b0 100644 --- a/src/plugins/typedispatcher/testmod_typedispatcher.c +++ b/src/plugins/typedispatcher/testmod_typedispatcher.c @@ -154,7 +154,7 @@ void testMultiSub () KeySet * ks = ksNew (5, keyNew ("user/tests/typedispatcher", KEY_VALUE, "typedefinitions", KEY_META, "define/type", "", KEY_META, "define/type/character", "", KEY_META, "define/type/character/check/type", "char", KEY_META, "define/type/upperChar", "", KEY_META, "define/type/upperChar/check/range", "A-Z", KEY_META, - "define/type/upperChar/check/range/type", "CHAR", KEY_META, "define/type/upperChar/type", + "define/type/upperChar/check/range/type", "char", KEY_META, "define/type/upperChar/type", "character", KEY_END), keyNew ("user/tests/typedispatcher/character", KEY_VALUE, "c", KEY_META, "type", "#0", KEY_META, "type/#0", "character", KEY_END), @@ -301,7 +301,7 @@ void testMultiParametersExtended () "define/type/character", "", KEY_META, "define/type/character/parameter", "a", KEY_META, "define/type/character/check/type", "%a%", KEY_META, "define/type/upperChar", "", KEY_META, "define/type/upperChar/parameter", "b", KEY_META, "define/type/upperChar/check/range", "%b%", KEY_META, - "define/type/upperChar/check/range/type", "CHAR", KEY_META, "define/type/upperChar/type", "character (char)", + "define/type/upperChar/check/range/type", "char", KEY_META, "define/type/upperChar/type", "character (char)", KEY_END), keyNew ("user/tests/typedispatcher/character", KEY_VALUE, "c", KEY_META, "type", "character (char)", KEY_END), keyNew ("user/tests/typedispatcher/sub", KEY_VALUE, "", KEY_META, "define/type", "", KEY_META, "define/type/AB", "", @@ -334,7 +334,7 @@ void testMultiParametersRecursive () "define/type/character", "", KEY_META, "define/type/character/parameter", "a", KEY_META, "define/type/character/check/type", "%a%", KEY_META, "define/type/upperChar", "", KEY_META, "define/type/upperChar/parameter", "b", KEY_META, "define/type/upperChar/check/range", "%b%", KEY_META, - "define/type/upperChar/check/range/type", "CHAR", KEY_META, "define/type/upperChar/type", "character (char)", + "define/type/upperChar/check/range/type", "char", KEY_META, "define/type/upperChar/type", "character (char)", KEY_END), keyNew ("user/tests/typedispatcher/character", KEY_VALUE, "c", KEY_META, "type", "character (char)", KEY_END), keyNew ("user/tests/typedispatcher/sub", KEY_VALUE, "", KEY_META, "define/type", "", KEY_META, "define/type/AB", "", diff --git a/src/plugins/typedispatcher/typehelper.h b/src/plugins/typedispatcher/typehelper.h index 3c9b339b7dd..cd5983abd05 100644 --- a/src/plugins/typedispatcher/typehelper.h +++ b/src/plugins/typedispatcher/typehelper.h @@ -1,7 +1,7 @@ #include -#undef DEVBUILD -#undef VERBOSEBUILD +#define DEVBUILD +#define VERBOSEBUILD // helper for readability typedef enum {