[LTP] [PATCH v3 5/7] docparse: Add type normalization
Petr Vorel
pvorel@suse.cz
Thu Nov 4 21:46:36 CET 2021
Hi Cyril,
> For now just for .test_variants.
> There are two reasons for this:
> - This code makes sure that we get right value parsed and aborts the
> compilation if the parser got confused. This part is important since
> if the testrunners are going to use the metadata the data in there
> must be correct.
Very good idea.
> - And much less important it makes the resulting json nicer to read
...
> +static void convert_str2int(struct data_node *res, const char *id, const char *str_val)
> +{
> + long val;
> + char *endptr;
> +
> + errno = 0;
> + val = strtol(str_val, &endptr, 10);
> +
> + if (errno || *endptr) {
> + fprintf(stderr, "Cannot convert %s value %s to int!", id, str_val);
=> missing \n.
> + exit(1);
> + }
> +
> + if (verbose)
> + fprintf(stderr, "NORMALIZING %s TO INT %li", id, val);
And here.
> +
> + data_node_hash_del(res, id);
> + data_node_hash_add(res, id, data_node_int(val));
> +}
> +
> +static void check_normalize_types(struct data_node *res)
> +{
> + unsigned int i;
> +
> + for (i = 0; tst_test_typemap[i].id; i++) {
> + struct data_node *n;
> + struct typemap *typemap = &tst_test_typemap[i];
> +
> + n = data_node_hash_get(res, typemap->id);
> + if (!n)
> + continue;
> +
> + if (n->type == typemap->type)
> + continue;
> +
> + if (n->type == DATA_STRING && typemap->type == DATA_INT) {
> + convert_str2int(res, typemap->id, n->string.val);
> + continue;
> + }
> +
> + fprintf(stderr, "Cannot convert %s from %s to %s!",
And here.
> + typemap->id, data_type_name(n->type),
> + data_type_name(typemap->type));
> + exit(1);
> + }
> +}
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Kind regards,
Petr
More information about the ltp
mailing list