Fossil SCM
Add -p short-form flag of --pretty to test-artifact-to-json. Restore the part of [8af0d05c66e6] which removes extraneous whitespace from artifact_to_json().
Commit
f1847847e43385a13e60a2d0ad8efaeb3b19dd73722289c653b1b9a76d66cc5e
Parent
d2db37a75296f5b…
1 file changed
+10
-10
+10
-10
| --- src/manifest.c | ||
| +++ src/manifest.c | ||
| @@ -2948,26 +2948,26 @@ | ||
| 2948 | 2948 | */ |
| 2949 | 2949 | void artifact_to_json(Manifest const *p, Blob *b){ |
| 2950 | 2950 | int i; |
| 2951 | 2951 | |
| 2952 | 2952 | blob_append_literal(b, "{"); |
| 2953 | - blob_appendf(b, "\"uuid\": \"%z\"", rid_to_uuid(p->rid)); | |
| 2953 | + blob_appendf(b, "\"uuid\":\"%z\"", rid_to_uuid(p->rid)); | |
| 2954 | 2954 | /*blob_appendf(b, ", \"rid\": %d", p->rid); not portable across repos*/ |
| 2955 | - blob_appendf(b, ", \"type\": %!j", artifact_type_to_name(p->type)); | |
| 2955 | + blob_appendf(b, ",\"type\":%!j", artifact_type_to_name(p->type)); | |
| 2956 | 2956 | #define ISA(TYPE) if( p->type==TYPE ) |
| 2957 | 2957 | #define CARD_LETTER(LETTER) \ |
| 2958 | - blob_append_literal(b, ",\"" #LETTER "\": ") | |
| 2958 | + blob_append_literal(b, ",\"" #LETTER "\":") | |
| 2959 | 2959 | #define CARD_STR(LETTER, VAL) \ |
| 2960 | 2960 | assert( VAL ); CARD_LETTER(LETTER); blob_appendf(b, "%!j", VAL) |
| 2961 | 2961 | #define CARD_STR2(LETTER, VAL) \ |
| 2962 | 2962 | if( VAL ) { CARD_STR(LETTER, VAL); } (void)0 |
| 2963 | 2963 | #define STR_OR_NULL(VAL) \ |
| 2964 | 2964 | if( VAL ) blob_appendf(b, "%!j", VAL); \ |
| 2965 | 2965 | else blob_append(b, "null", 4) |
| 2966 | 2966 | #define KVP_STR(ADDCOMMA, KEY,VAL) \ |
| 2967 | 2967 | if(ADDCOMMA) blob_append_char(b, ','); \ |
| 2968 | - blob_appendf(b, "%!j: ", #KEY); \ | |
| 2968 | + blob_appendf(b, "%!j:", #KEY); \ | |
| 2969 | 2969 | STR_OR_NULL(VAL) |
| 2970 | 2970 | |
| 2971 | 2971 | ISA( CFTYPE_ATTACHMENT ){ |
| 2972 | 2972 | CARD_LETTER(A); |
| 2973 | 2973 | blob_append_char(b, '{'); |
| @@ -2978,11 +2978,11 @@ | ||
| 2978 | 2978 | } |
| 2979 | 2979 | CARD_STR2(B, p->zBaseline); |
| 2980 | 2980 | CARD_STR2(C, p->zComment); |
| 2981 | 2981 | CARD_LETTER(D); blob_appendf(b, "%f", p->rDate); |
| 2982 | 2982 | ISA( CFTYPE_EVENT ){ |
| 2983 | - blob_appendf(b, ", \"E\": {\"time\": %f, \"id\": %!j}", | |
| 2983 | + blob_appendf(b, ", \"E\":{\"time\":%f,\"id\":%!j}", | |
| 2984 | 2984 | p->rEventDate, p->zEventId); |
| 2985 | 2985 | } |
| 2986 | 2986 | ISA( CFTYPE_MANIFEST ){ |
| 2987 | 2987 | CARD_LETTER(F); |
| 2988 | 2988 | blob_append_char(b, '['); |
| @@ -3014,11 +3014,11 @@ | ||
| 3014 | 3014 | const char * zName = p->aField[i].zName; |
| 3015 | 3015 | if( i>0 ) blob_append_char(b, ','); |
| 3016 | 3016 | blob_append_char(b, '{'); |
| 3017 | 3017 | KVP_STR(0, name, '+'==*zName ? &zName[1] : zName); |
| 3018 | 3018 | KVP_STR(1, value, p->aField[i].zValue); |
| 3019 | - blob_appendf(b, ", \"append\": %s", '+'==*zName ? "true" : "false"); | |
| 3019 | + blob_appendf(b, ",\"append\":%s", '+'==*zName ? "true" : "false"); | |
| 3020 | 3020 | blob_append_char(b, '}'); |
| 3021 | 3021 | } |
| 3022 | 3022 | blob_append_char(b, ']'); |
| 3023 | 3023 | } |
| 3024 | 3024 | CARD_STR2(K, p->zTicketUuid); |
| @@ -3048,11 +3048,11 @@ | ||
| 3048 | 3048 | CARD_LETTER(Q); |
| 3049 | 3049 | blob_append_char(b, '['); |
| 3050 | 3050 | for( i = 0; i < p->nCherrypick; ++i ){ |
| 3051 | 3051 | if( i>0 ) blob_append_char(b, ','); |
| 3052 | 3052 | blob_append_char(b, '{'); |
| 3053 | - blob_appendf(b, "\"type\": \"%c\"", p->aCherrypick[i].zCPTarget[0]); | |
| 3053 | + blob_appendf(b, "\"type\":\"%c\"", p->aCherrypick[i].zCPTarget[0]); | |
| 3054 | 3054 | KVP_STR(1, target, &p->aCherrypick[i].zCPTarget[1]); |
| 3055 | 3055 | KVP_STR(1, base, p->aCherrypick[i].zCPBase); |
| 3056 | 3056 | blob_append_char(b, '}'); |
| 3057 | 3057 | } |
| 3058 | 3058 | blob_append_char(b, ']'); |
| @@ -3063,11 +3063,11 @@ | ||
| 3063 | 3063 | blob_append_char(b, '['); |
| 3064 | 3064 | for( int i = 0; i < p->nTag; ++i ){ |
| 3065 | 3065 | const char *zName = p->aTag[i].zName; |
| 3066 | 3066 | if( i>0 ) blob_append_char(b, ','); |
| 3067 | 3067 | blob_append_char(b, '{'); |
| 3068 | - blob_appendf(b, "\"type\": \"%c\"", *zName); | |
| 3068 | + blob_appendf(b, "\"type\":\"%c\"", *zName); | |
| 3069 | 3069 | KVP_STR(1, name, &zName[1]); |
| 3070 | 3070 | KVP_STR(1, target, p->aTag[i].zUuid ? p->aTag[i].zUuid : "*") |
| 3071 | 3071 | /* We could arguably resolve the "*" as null or p's uuid. */; |
| 3072 | 3072 | KVP_STR(1, value, p->aTag[i].zValue); |
| 3073 | 3073 | blob_append_char(b, '}'); |
| @@ -3170,19 +3170,19 @@ | ||
| 3170 | 3170 | |
| 3171 | 3171 | |
| 3172 | 3172 | /* |
| 3173 | 3173 | ** COMMAND: test-artifact-to-json |
| 3174 | 3174 | ** |
| 3175 | -** Usage: %fossil test-artifact-to-json ?-pretty? symbolic-name [...names] | |
| 3175 | +** Usage: %fossil test-artifact-to-json ?-pretty|-p? symbolic-name [...names] | |
| 3176 | 3176 | ** |
| 3177 | 3177 | ** Tests the artifact_to_json() and artifact_to_json_by_name() APIs. |
| 3178 | 3178 | */ |
| 3179 | 3179 | void test_manifest_to_json(void){ |
| 3180 | 3180 | int i; |
| 3181 | 3181 | Blob b = empty_blob; |
| 3182 | 3182 | Stmt q; |
| 3183 | - const int bPretty = find_option("pretty",0,0)!=0; | |
| 3183 | + const int bPretty = find_option("pretty","p",0)!=0; | |
| 3184 | 3184 | int nErr = 0; |
| 3185 | 3185 | |
| 3186 | 3186 | db_find_and_open_repository(0,0); |
| 3187 | 3187 | db_prepare(&q, "select json_pretty(:json)"); |
| 3188 | 3188 | for( i=2; i<g.argc; ++i ){ |
| 3189 | 3189 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -2948,26 +2948,26 @@ | |
| 2948 | */ |
| 2949 | void artifact_to_json(Manifest const *p, Blob *b){ |
| 2950 | int i; |
| 2951 | |
| 2952 | blob_append_literal(b, "{"); |
| 2953 | blob_appendf(b, "\"uuid\": \"%z\"", rid_to_uuid(p->rid)); |
| 2954 | /*blob_appendf(b, ", \"rid\": %d", p->rid); not portable across repos*/ |
| 2955 | blob_appendf(b, ", \"type\": %!j", artifact_type_to_name(p->type)); |
| 2956 | #define ISA(TYPE) if( p->type==TYPE ) |
| 2957 | #define CARD_LETTER(LETTER) \ |
| 2958 | blob_append_literal(b, ",\"" #LETTER "\": ") |
| 2959 | #define CARD_STR(LETTER, VAL) \ |
| 2960 | assert( VAL ); CARD_LETTER(LETTER); blob_appendf(b, "%!j", VAL) |
| 2961 | #define CARD_STR2(LETTER, VAL) \ |
| 2962 | if( VAL ) { CARD_STR(LETTER, VAL); } (void)0 |
| 2963 | #define STR_OR_NULL(VAL) \ |
| 2964 | if( VAL ) blob_appendf(b, "%!j", VAL); \ |
| 2965 | else blob_append(b, "null", 4) |
| 2966 | #define KVP_STR(ADDCOMMA, KEY,VAL) \ |
| 2967 | if(ADDCOMMA) blob_append_char(b, ','); \ |
| 2968 | blob_appendf(b, "%!j: ", #KEY); \ |
| 2969 | STR_OR_NULL(VAL) |
| 2970 | |
| 2971 | ISA( CFTYPE_ATTACHMENT ){ |
| 2972 | CARD_LETTER(A); |
| 2973 | blob_append_char(b, '{'); |
| @@ -2978,11 +2978,11 @@ | |
| 2978 | } |
| 2979 | CARD_STR2(B, p->zBaseline); |
| 2980 | CARD_STR2(C, p->zComment); |
| 2981 | CARD_LETTER(D); blob_appendf(b, "%f", p->rDate); |
| 2982 | ISA( CFTYPE_EVENT ){ |
| 2983 | blob_appendf(b, ", \"E\": {\"time\": %f, \"id\": %!j}", |
| 2984 | p->rEventDate, p->zEventId); |
| 2985 | } |
| 2986 | ISA( CFTYPE_MANIFEST ){ |
| 2987 | CARD_LETTER(F); |
| 2988 | blob_append_char(b, '['); |
| @@ -3014,11 +3014,11 @@ | |
| 3014 | const char * zName = p->aField[i].zName; |
| 3015 | if( i>0 ) blob_append_char(b, ','); |
| 3016 | blob_append_char(b, '{'); |
| 3017 | KVP_STR(0, name, '+'==*zName ? &zName[1] : zName); |
| 3018 | KVP_STR(1, value, p->aField[i].zValue); |
| 3019 | blob_appendf(b, ", \"append\": %s", '+'==*zName ? "true" : "false"); |
| 3020 | blob_append_char(b, '}'); |
| 3021 | } |
| 3022 | blob_append_char(b, ']'); |
| 3023 | } |
| 3024 | CARD_STR2(K, p->zTicketUuid); |
| @@ -3048,11 +3048,11 @@ | |
| 3048 | CARD_LETTER(Q); |
| 3049 | blob_append_char(b, '['); |
| 3050 | for( i = 0; i < p->nCherrypick; ++i ){ |
| 3051 | if( i>0 ) blob_append_char(b, ','); |
| 3052 | blob_append_char(b, '{'); |
| 3053 | blob_appendf(b, "\"type\": \"%c\"", p->aCherrypick[i].zCPTarget[0]); |
| 3054 | KVP_STR(1, target, &p->aCherrypick[i].zCPTarget[1]); |
| 3055 | KVP_STR(1, base, p->aCherrypick[i].zCPBase); |
| 3056 | blob_append_char(b, '}'); |
| 3057 | } |
| 3058 | blob_append_char(b, ']'); |
| @@ -3063,11 +3063,11 @@ | |
| 3063 | blob_append_char(b, '['); |
| 3064 | for( int i = 0; i < p->nTag; ++i ){ |
| 3065 | const char *zName = p->aTag[i].zName; |
| 3066 | if( i>0 ) blob_append_char(b, ','); |
| 3067 | blob_append_char(b, '{'); |
| 3068 | blob_appendf(b, "\"type\": \"%c\"", *zName); |
| 3069 | KVP_STR(1, name, &zName[1]); |
| 3070 | KVP_STR(1, target, p->aTag[i].zUuid ? p->aTag[i].zUuid : "*") |
| 3071 | /* We could arguably resolve the "*" as null or p's uuid. */; |
| 3072 | KVP_STR(1, value, p->aTag[i].zValue); |
| 3073 | blob_append_char(b, '}'); |
| @@ -3170,19 +3170,19 @@ | |
| 3170 | |
| 3171 | |
| 3172 | /* |
| 3173 | ** COMMAND: test-artifact-to-json |
| 3174 | ** |
| 3175 | ** Usage: %fossil test-artifact-to-json ?-pretty? symbolic-name [...names] |
| 3176 | ** |
| 3177 | ** Tests the artifact_to_json() and artifact_to_json_by_name() APIs. |
| 3178 | */ |
| 3179 | void test_manifest_to_json(void){ |
| 3180 | int i; |
| 3181 | Blob b = empty_blob; |
| 3182 | Stmt q; |
| 3183 | const int bPretty = find_option("pretty",0,0)!=0; |
| 3184 | int nErr = 0; |
| 3185 | |
| 3186 | db_find_and_open_repository(0,0); |
| 3187 | db_prepare(&q, "select json_pretty(:json)"); |
| 3188 | for( i=2; i<g.argc; ++i ){ |
| 3189 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -2948,26 +2948,26 @@ | |
| 2948 | */ |
| 2949 | void artifact_to_json(Manifest const *p, Blob *b){ |
| 2950 | int i; |
| 2951 | |
| 2952 | blob_append_literal(b, "{"); |
| 2953 | blob_appendf(b, "\"uuid\":\"%z\"", rid_to_uuid(p->rid)); |
| 2954 | /*blob_appendf(b, ", \"rid\": %d", p->rid); not portable across repos*/ |
| 2955 | blob_appendf(b, ",\"type\":%!j", artifact_type_to_name(p->type)); |
| 2956 | #define ISA(TYPE) if( p->type==TYPE ) |
| 2957 | #define CARD_LETTER(LETTER) \ |
| 2958 | blob_append_literal(b, ",\"" #LETTER "\":") |
| 2959 | #define CARD_STR(LETTER, VAL) \ |
| 2960 | assert( VAL ); CARD_LETTER(LETTER); blob_appendf(b, "%!j", VAL) |
| 2961 | #define CARD_STR2(LETTER, VAL) \ |
| 2962 | if( VAL ) { CARD_STR(LETTER, VAL); } (void)0 |
| 2963 | #define STR_OR_NULL(VAL) \ |
| 2964 | if( VAL ) blob_appendf(b, "%!j", VAL); \ |
| 2965 | else blob_append(b, "null", 4) |
| 2966 | #define KVP_STR(ADDCOMMA, KEY,VAL) \ |
| 2967 | if(ADDCOMMA) blob_append_char(b, ','); \ |
| 2968 | blob_appendf(b, "%!j:", #KEY); \ |
| 2969 | STR_OR_NULL(VAL) |
| 2970 | |
| 2971 | ISA( CFTYPE_ATTACHMENT ){ |
| 2972 | CARD_LETTER(A); |
| 2973 | blob_append_char(b, '{'); |
| @@ -2978,11 +2978,11 @@ | |
| 2978 | } |
| 2979 | CARD_STR2(B, p->zBaseline); |
| 2980 | CARD_STR2(C, p->zComment); |
| 2981 | CARD_LETTER(D); blob_appendf(b, "%f", p->rDate); |
| 2982 | ISA( CFTYPE_EVENT ){ |
| 2983 | blob_appendf(b, ", \"E\":{\"time\":%f,\"id\":%!j}", |
| 2984 | p->rEventDate, p->zEventId); |
| 2985 | } |
| 2986 | ISA( CFTYPE_MANIFEST ){ |
| 2987 | CARD_LETTER(F); |
| 2988 | blob_append_char(b, '['); |
| @@ -3014,11 +3014,11 @@ | |
| 3014 | const char * zName = p->aField[i].zName; |
| 3015 | if( i>0 ) blob_append_char(b, ','); |
| 3016 | blob_append_char(b, '{'); |
| 3017 | KVP_STR(0, name, '+'==*zName ? &zName[1] : zName); |
| 3018 | KVP_STR(1, value, p->aField[i].zValue); |
| 3019 | blob_appendf(b, ",\"append\":%s", '+'==*zName ? "true" : "false"); |
| 3020 | blob_append_char(b, '}'); |
| 3021 | } |
| 3022 | blob_append_char(b, ']'); |
| 3023 | } |
| 3024 | CARD_STR2(K, p->zTicketUuid); |
| @@ -3048,11 +3048,11 @@ | |
| 3048 | CARD_LETTER(Q); |
| 3049 | blob_append_char(b, '['); |
| 3050 | for( i = 0; i < p->nCherrypick; ++i ){ |
| 3051 | if( i>0 ) blob_append_char(b, ','); |
| 3052 | blob_append_char(b, '{'); |
| 3053 | blob_appendf(b, "\"type\":\"%c\"", p->aCherrypick[i].zCPTarget[0]); |
| 3054 | KVP_STR(1, target, &p->aCherrypick[i].zCPTarget[1]); |
| 3055 | KVP_STR(1, base, p->aCherrypick[i].zCPBase); |
| 3056 | blob_append_char(b, '}'); |
| 3057 | } |
| 3058 | blob_append_char(b, ']'); |
| @@ -3063,11 +3063,11 @@ | |
| 3063 | blob_append_char(b, '['); |
| 3064 | for( int i = 0; i < p->nTag; ++i ){ |
| 3065 | const char *zName = p->aTag[i].zName; |
| 3066 | if( i>0 ) blob_append_char(b, ','); |
| 3067 | blob_append_char(b, '{'); |
| 3068 | blob_appendf(b, "\"type\":\"%c\"", *zName); |
| 3069 | KVP_STR(1, name, &zName[1]); |
| 3070 | KVP_STR(1, target, p->aTag[i].zUuid ? p->aTag[i].zUuid : "*") |
| 3071 | /* We could arguably resolve the "*" as null or p's uuid. */; |
| 3072 | KVP_STR(1, value, p->aTag[i].zValue); |
| 3073 | blob_append_char(b, '}'); |
| @@ -3170,19 +3170,19 @@ | |
| 3170 | |
| 3171 | |
| 3172 | /* |
| 3173 | ** COMMAND: test-artifact-to-json |
| 3174 | ** |
| 3175 | ** Usage: %fossil test-artifact-to-json ?-pretty|-p? symbolic-name [...names] |
| 3176 | ** |
| 3177 | ** Tests the artifact_to_json() and artifact_to_json_by_name() APIs. |
| 3178 | */ |
| 3179 | void test_manifest_to_json(void){ |
| 3180 | int i; |
| 3181 | Blob b = empty_blob; |
| 3182 | Stmt q; |
| 3183 | const int bPretty = find_option("pretty","p",0)!=0; |
| 3184 | int nErr = 0; |
| 3185 | |
| 3186 | db_find_and_open_repository(0,0); |
| 3187 | db_prepare(&q, "select json_pretty(:json)"); |
| 3188 | for( i=2; i<g.argc; ++i ){ |
| 3189 |