From d1eabfd6e29ce24cafda96b3e846773be16dc592 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 30 May 2023 12:33:07 +0930 Subject: [PATCH] runes: allow underscores in field names, as per Python runes 0.6 Suggested-by: @niftynei Signed-off-by: Rusty Russell --- ccan/rune/coding.c | 2 +- ccan/rune/test/run.c | 2 +- ccan/rune/test/test_vectors.csv | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ccan/rune/coding.c b/ccan/rune/coding.c index f4d11028..495d37c3 100644 --- a/ccan/rune/coding.c +++ b/ccan/rune/coding.c @@ -206,7 +206,7 @@ bool rune_condition_is_valid(enum rune_condition cond) size_t rune_altern_fieldname_len(const char *alternstr, size_t alternstrlen) { for (size_t i = 0; i < alternstrlen; i++) { - if (cispunct(alternstr[i])) + if (cispunct(alternstr[i]) && alternstr[i] != '_') return i; } return alternstrlen; diff --git a/ccan/rune/test/run.c b/ccan/rune/test/run.c index e5326552..d90b701c 100644 --- a/ccan/rune/test/run.c +++ b/ccan/rune/test/run.c @@ -43,7 +43,7 @@ int main(void) assert(vecs); lines = tal_strsplit(mr, take(vecs), "\n", STR_NO_EMPTY); - plan_tests(343); + plan_tests(355); for (size_t i = 0; lines[i]; i++) { struct rune *rune1, *rune2; diff --git a/ccan/rune/test/test_vectors.csv b/ccan/rune/test/test_vectors.csv index a8411693..880ea3c6 100644 --- a/ccan/rune/test/test_vectors.csv +++ b/ccan/rune/test/test_vectors.csv @@ -94,6 +94,12 @@ PASS,f1= PASS,f1=/ PASS,f1=11 PASS +VALID,f_with_underscores equals v1,ee979e1f2c376d69923aab0e8e001111963af038bdce394ffd7ecdc9e7020a6e:f_with_underscores=v1,7peeHyw3bWmSOqsOjgAREZY68Di9zjlP_X7NyecCCm5mX3dpdGhfdW5kZXJzY29yZXM9djE= +PASS,f_with_underscores=v1 +FAIL,f_with_underscores=v +FAIL,f_with_underscores=v1a +FAIL +FAIL,f2=f_with_underscores VALID,f1=1 or f2=3,85c3643dc102f0a0d6f20eeb8c294092151688fae41ef7c8ec7272ab23918376:f1=1|f2=3,hcNkPcEC8KDW8g7rjClAkhUWiPrkHvfI7HJyqyORg3ZmMT0xfGYyPTM= PASS,f1=1 PASS,f1=1,f2=2 @@ -144,7 +150,6 @@ MALFORMED,Bad condition ?,76bdd625de0e12058956e6c8a07cac58d7dc2253609a6bfb959f87 MALFORMED,Bad condition [,76bdd625de0e12058956e6c8a07cac58d7dc2253609a6bfb959f87cc094f3f0f:f1[11,dr3WJd4OEgWJVubIoHysWNfcIlNgmmv7lZ-HzAlPPw9mMVsxMQ== MALFORMED,Bad condition \,76bdd625de0e12058956e6c8a07cac58d7dc2253609a6bfb959f87cc094f3f0f:f1\11,dr3WJd4OEgWJVubIoHysWNfcIlNgmmv7lZ-HzAlPPw9mMVwxMQ== MALFORMED,Bad condition ],76bdd625de0e12058956e6c8a07cac58d7dc2253609a6bfb959f87cc094f3f0f:f1]11,dr3WJd4OEgWJVubIoHysWNfcIlNgmmv7lZ-HzAlPPw9mMV0xMQ== -MALFORMED,Bad condition _,76bdd625de0e12058956e6c8a07cac58d7dc2253609a6bfb959f87cc094f3f0f:f1_11,dr3WJd4OEgWJVubIoHysWNfcIlNgmmv7lZ-HzAlPPw9mMV8xMQ== MALFORMED,Bad condition `,76bdd625de0e12058956e6c8a07cac58d7dc2253609a6bfb959f87cc094f3f0f:f1`11,dr3WJd4OEgWJVubIoHysWNfcIlNgmmv7lZ-HzAlPPw9mMWAxMQ== MALFORMED,Bad condition |,76bdd625de0e12058956e6c8a07cac58d7dc2253609a6bfb959f87cc094f3f0f:f1|11,dr3WJd4OEgWJVubIoHysWNfcIlNgmmv7lZ-HzAlPPw9mMXwxMQ== BAD DERIVATION,Incremented sha,76bdd625de0e12058956e6c8a07cac58d7dc2253609a6bfb959f87cc094f3f0e:f1#11,dr3WJd4OEgWJVubIoHysWNfcIlNgmmv7lZ-HzAlPPw5mMSMxMQ== -- 2.39.2