Browse Source

jinja : add missing tojson filter for bool (#18900)

* add missing tojson for bool

* add more literal tests
Sigbjørn Skjæret 1 week ago
parent
commit
10c98cbdf6
2 changed files with 61 additions and 0 deletions
  1. 1 0
      common/jinja/value.cpp
  2. 60 0
      tests/test-jinja.cpp

+ 1 - 0
common/jinja/value.cpp

@@ -698,6 +698,7 @@ const func_builtins & value_bool_t::get_builtins() const {
             bool val = args.get_pos(0)->as_bool();
             bool val = args.get_pos(0)->as_bool();
             return mk_val<value_string>(val ? "True" : "False");
             return mk_val<value_string>(val ? "True" : "False");
         }},
         }},
+        {"tojson", tojson},
     };
     };
     return builtins;
     return builtins;
 }
 }

+ 60 - 0
tests/test-jinja.cpp

@@ -540,6 +540,66 @@ static void test_literals(testing & t) {
         json::object(),
         json::object(),
         "1"
         "1"
     );
     );
+
+    test_template(t, "integer|abs",
+        "{{ -42 | abs }}",
+        json::object(),
+        "42"
+    );
+
+    test_template(t, "integer|float",
+        "{{ 42 | float }}",
+        json::object(),
+        "42.0"
+    );
+
+    test_template(t, "integer|tojson",
+        "{{ 42 | tojson }}",
+        json::object(),
+        "42"
+    );
+
+    test_template(t, "float|abs",
+        "{{ -3.14 | abs }}",
+        json::object(),
+        "3.14"
+    );
+
+    test_template(t, "float|int",
+        "{{ 3.14 | int }}",
+        json::object(),
+        "3"
+    );
+
+    test_template(t, "float|tojson",
+        "{{ 3.14 | tojson }}",
+        json::object(),
+        "3.14"
+    );
+
+    test_template(t, "string|tojson",
+        "{{ 'hello' | tojson }}",
+        json::object(),
+        "\"hello\""
+    );
+
+    test_template(t, "boolean|int",
+        "{{ true | int }}",
+        json::object(),
+        "1"
+    );
+
+    test_template(t, "boolean|float",
+        "{{ true | float }}",
+        json::object(),
+        "1.0"
+    );
+
+    test_template(t, "boolean|tojson",
+        "{{ true | tojson }}",
+        json::object(),
+        "true"
+    );
 }
 }
 
 
 static void test_comments(testing & t) {
 static void test_comments(testing & t) {