diff --git a/tests/config.h.in b/tests/config.h.in
index 5943c07..57c2bd1 100644
--- a/tests/config.h.in
+++ b/tests/config.h.in
@@ -14,6 +14,8 @@
 #ifndef LYTEST_CONFIG_H_
 #define LYTEST_CONFIG_H_
 
+#define _GNU_SOURCE
+
 #define UNUSED(x) @COMPILER_UNUSED_ATTR@
 
 #define TESTS_SRC "@CMAKE_CURRENT_SOURCE_DIR@"
diff --git a/tests/features/test_types.c b/tests/features/test_types.c
index 7ed3789..038dcdb 100644
--- a/tests/features/test_types.c
+++ b/tests/features/test_types.c
@@ -769,7 +769,7 @@
 
 /* dummy get_prefix callback for test_instanceid() */
 const struct lys_module *
-test_instanceid_getprefix(struct ly_ctx *ctx, const char *prefix, size_t prefix_len, void *private)
+test_instanceid_getprefix(const struct ly_ctx *ctx, const char *prefix, size_t prefix_len, void *private)
 {
     (void)ctx;
     (void)prefix;
diff --git a/tests/src/test_parser_xml.c b/tests/src/test_parser_xml.c
index b5c3f4c..247ff0a 100644
--- a/tests/src/test_parser_xml.c
+++ b/tests/src/test_parser_xml.c
@@ -12,6 +12,8 @@
  *     https://opensource.org/licenses/BSD-3-Clause
  */
 
+#include "tests/config.h"
+
 #include <stdarg.h>
 #include <stddef.h>
 #include <setjmp.h>
@@ -20,10 +22,9 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "tests/config.h"
-
 #include "../../src/context.h"
 #include "../../src/tree_data_internal.h"
+#include "../../src/printer_data.h"
 
 #define BUFSIZE 1024
 char logbuf[BUFSIZE] = {0};
@@ -161,19 +162,32 @@
 {
     *state = test_anydata;
 
-    const char *data = "<any xmlns=\"urn:tests:a\">"
-                         "<element1><x:element2 x:attr2=\"test\" xmlns:x=\"urn:x\">x:data</x:element2></element1><element1a/>"
-                       "</any>";
+    const char *data;
+    char *str;
     struct lyd_node *tree;
-    struct lyd_node_any *any;
 
+    data =
+    "<any xmlns=\"urn:tests:a\">"
+        "<element1>"
+            "<x:element2 x:attr2=\"test\" xmlns:a=\"urn:tests:a\" xmlns:x=\"urn:x\">a:data</x:element2>"
+        "</element1>"
+        "<element1a/>"
+    "</any>";
     assert_int_equal(LY_SUCCESS, lyd_parse_xml_data(ctx, data, LYD_VALOPT_DATA_ONLY, &tree));
     assert_non_null(tree);
     assert_int_equal(LYS_ANYDATA, tree->schema->nodetype);
     assert_string_equal("any", tree->schema->name);
-    any = (struct lyd_node_any*)tree;
-    assert_int_equal(LYD_ANYDATA_XML, any->value_type);
-    assert_string_equal("<element1><x:element2 x:attr2=\"test\" xmlns:x=\"urn:x\">x:data</x:element2></element1><element1a/>", any->value.xml);
+
+    lyd_print_mem(&str, tree, LYD_XML, 0);
+    assert_string_equal(str,
+        "<any xmlns=\"urn:tests:a\">"
+            "<element1>"
+                "<element2 xmlns=\"urn:x\" xmlns:x=\"urn:x\" x:attr2=\"test\" xmlns:a=\"urn:tests:a\">a:data</element2>"
+            "</element1>"
+            "<element1a/>"
+        "</any>"
+    );
+    free(str);
 
     lyd_free_all(tree);
     *state = NULL;
diff --git a/tests/src/test_printer_xml.c b/tests/src/test_printer_xml.c
index 83e14dc..f6cca7b 100644
--- a/tests/src/test_printer_xml.c
+++ b/tests/src/test_printer_xml.c
@@ -206,6 +206,8 @@
     assert_non_null(tree = lyd_parse_mem(s->ctx, data, LYD_XML, LYD_VALOPT_DATA_ONLY));
     assert_true((len = lyd_print_mem(&printed, tree, LYD_XML, 0)) >= 0);
     assert_int_equal(len, strlen(printed));
+    /* canonized */
+    data = "<any xmlns=\"urn:tests:types\"><somexml xmlns=\"example.com\"><x xmlns=\"url:x\"/></somexml></any>";
     assert_string_equal(printed, data);
     free(printed);
     lyd_free_all(tree);
@@ -218,6 +220,38 @@
     free(printed);
     lyd_free_all(tree);
 
+    data =
+        "<any xmlns=\"urn:tests:types\">"
+            "<cont>"
+                "<defs:elem1 xmlns:defs=\"urn:tests:defs\">"
+                    "<elem2 xmlns:defaults=\"urn:defaults\" defs:attr1=\"defaults:val\" attr2=\"/defaults:node/defs:node2\">"
+                    "</elem2>"
+                "</defs:elem1>"
+            "</cont>"
+        "</any>";
+    assert_non_null(tree = lyd_parse_mem(s->ctx, data, LYD_XML, LYD_VALOPT_DATA_ONLY));
+    /* cont should be normally parsed */
+    assert_string_equal(tree->schema->name, "any");
+    assert_int_equal(((struct lyd_node_any *)tree)->value_type, LYD_ANYDATA_DATATREE);
+    assert_string_equal(((struct lyd_node_any *)tree)->value.tree->schema->name, "cont");
+    /* but its children not */
+    assert_null(((struct lyd_node_inner *)(((struct lyd_node_any *)tree)->value.tree))->child->schema);
+    assert_true((len = lyd_print_mem(&printed, tree, LYD_XML, 0)) >= 0);
+    assert_int_equal(len, strlen(printed));
+    /* canonized */
+    data =
+        "<any xmlns=\"urn:tests:types\">"
+            "<cont>"
+                "<elem1 xmlns=\"urn:tests:defs\">"
+                    "<elem2 xmlns=\"urn:tests:types\" xmlns:defs=\"urn:tests:defs\" xmlns:defaults=\"urn:defaults\""
+                    " defs:attr1=\"defaults:val\" attr2=\"/defaults:node/defs:node2\"/>"
+                "</elem1>"
+            "</cont>"
+        "</any>";
+    assert_string_equal(printed, data);
+    free(printed);
+    lyd_free_all(tree);
+
     s->func = NULL;
 }
 
diff --git a/tests/src/test_set.c b/tests/src/test_set.c
index 3e288b5..a4e4332 100644
--- a/tests/src/test_set.c
+++ b/tests/src/test_set.c
@@ -113,8 +113,6 @@
 
     assert_int_equal(-1, ly_set_add(NULL, NULL, 0));
     assert_string_equal(logbuf, "Invalid argument set (ly_set_add()).");
-    assert_int_equal(-1, ly_set_add(&set, NULL, 0));
-    assert_string_equal(logbuf, "Invalid argument object (ly_set_add()).");
 
     assert_int_equal(-1, ly_set_merge(NULL, NULL, 0, NULL));
     assert_string_equal(logbuf, "Invalid argument trg (ly_set_merge()).");
diff --git a/tests/src/test_validation.c b/tests/src/test_validation.c
index d81ea74..4ba2e7c 100644
--- a/tests/src/test_validation.c
+++ b/tests/src/test_validation.c
@@ -12,6 +12,8 @@
  *     https://opensource.org/licenses/BSD-3-Clause
  */
 
+#include "tests/config.h"
+
 #include <stdarg.h>
 #include <stddef.h>
 #include <setjmp.h>
@@ -20,8 +22,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "tests/config.h"
-
 #include "../../src/context.h"
 #include "../../src/tree_data_internal.h"
 #include "../../src/printer_data.h"
@@ -966,13 +966,13 @@
         "<d xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">15</d>"
         "<ll2 xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt1</ll2>"
         "<ll2 xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt2</ll2>"
-        "<cont xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\">"
-            "<ll1 ncwd:default=\"true\">def1</ll1>"
-            "<ll1 ncwd:default=\"true\">def2</ll1>"
-            "<ll1 ncwd:default=\"true\">def3</ll1>"
-            "<d ncwd:default=\"true\">15</d>"
-            "<ll2 ncwd:default=\"true\">dflt1</ll2>"
-            "<ll2 ncwd:default=\"true\">dflt2</ll2>"
+        "<cont xmlns=\"urn:tests:f\">"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def1</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def2</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def3</ll1>"
+            "<d xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">15</d>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt1</ll2>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt2</ll2>"
         "</cont>");
     free(str);
 
@@ -988,13 +988,13 @@
         "<d xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">15</d>"
         "<ll2 xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt1</ll2>"
         "<ll2 xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt2</ll2>"
-        "<cont xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\">"
-            "<ll1 ncwd:default=\"true\">def1</ll1>"
-            "<ll1 ncwd:default=\"true\">def2</ll1>"
-            "<ll1 ncwd:default=\"true\">def3</ll1>"
-            "<d ncwd:default=\"true\">15</d>"
-            "<ll2 ncwd:default=\"true\">dflt1</ll2>"
-            "<ll2 ncwd:default=\"true\">dflt2</ll2>"
+        "<cont xmlns=\"urn:tests:f\">"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def1</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def2</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def3</ll1>"
+            "<d xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">15</d>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt1</ll2>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt2</ll2>"
         "</cont>"
         "<l xmlns=\"urn:tests:f\">value</l>");
     free(str);
@@ -1011,13 +1011,13 @@
     /* check data tree */
     lyd_print_mem(&str, tree, LYD_XML, LYDP_WITHSIBLINGS | LYDP_WD_IMPL_TAG);
     assert_string_equal(str,
-        "<cont xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\">"
-            "<ll1 ncwd:default=\"true\">def1</ll1>"
-            "<ll1 ncwd:default=\"true\">def2</ll1>"
-            "<ll1 ncwd:default=\"true\">def3</ll1>"
-            "<d ncwd:default=\"true\">15</d>"
-            "<ll2 ncwd:default=\"true\">dflt1</ll2>"
-            "<ll2 ncwd:default=\"true\">dflt2</ll2>"
+        "<cont xmlns=\"urn:tests:f\">"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def1</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def2</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def3</ll1>"
+            "<d xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">15</d>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt1</ll2>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt2</ll2>"
         "</cont>"
         "<l xmlns=\"urn:tests:f\">value</l>"
         "<d xmlns=\"urn:tests:f\">15</d>"
@@ -1034,13 +1034,13 @@
     /* check data tree */
     lyd_print_mem(&str, tree, LYD_XML, LYDP_WITHSIBLINGS | LYDP_WD_IMPL_TAG);
     assert_string_equal(str,
-        "<cont xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\">"
-            "<ll1 ncwd:default=\"true\">def1</ll1>"
-            "<ll1 ncwd:default=\"true\">def2</ll1>"
-            "<ll1 ncwd:default=\"true\">def3</ll1>"
-            "<d ncwd:default=\"true\">15</d>"
-            "<ll2 ncwd:default=\"true\">dflt1</ll2>"
-            "<ll2 ncwd:default=\"true\">dflt2</ll2>"
+        "<cont xmlns=\"urn:tests:f\">"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def1</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def2</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def3</ll1>"
+            "<d xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">15</d>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt1</ll2>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt2</ll2>"
         "</cont>"
         "<l xmlns=\"urn:tests:f\">value</l>"
         "<d xmlns=\"urn:tests:f\">15</d>"
@@ -1056,13 +1056,13 @@
     /* check data tree */
     lyd_print_mem(&str, tree, LYD_XML, LYDP_WITHSIBLINGS | LYDP_WD_IMPL_TAG);
     assert_string_equal(str,
-        "<cont xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\">"
-            "<ll1 ncwd:default=\"true\">def1</ll1>"
-            "<ll1 ncwd:default=\"true\">def2</ll1>"
-            "<ll1 ncwd:default=\"true\">def3</ll1>"
-            "<d ncwd:default=\"true\">15</d>"
-            "<ll2 ncwd:default=\"true\">dflt1</ll2>"
-            "<ll2 ncwd:default=\"true\">dflt2</ll2>"
+        "<cont xmlns=\"urn:tests:f\">"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def1</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def2</ll1>"
+            "<ll1 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">def3</ll1>"
+            "<d xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">15</d>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt1</ll2>"
+            "<ll2 xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\" ncwd:default=\"true\">dflt2</ll2>"
         "</cont>"
         "<l xmlns=\"urn:tests:f\">value</l>"
         "<d xmlns=\"urn:tests:f\">15</d>"
@@ -1078,7 +1078,7 @@
     /* check data tree */
     lyd_print_mem(&str, tree, LYD_XML, LYDP_WITHSIBLINGS | LYDP_WD_IMPL_TAG);
     assert_string_equal(str,
-        "<cont xmlns=\"urn:tests:f\" xmlns:ncwd=\"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults\">"
+        "<cont xmlns=\"urn:tests:f\">"
             "<ll1>def3</ll1>"
             "<d>5</d>"
             "<ll2>non-dflt</ll2>"
