diff --git a/tests/utests/basic/test_context.c b/tests/utests/basic/test_context.c
index 7899079..8b79a1c 100644
--- a/tests/utests/basic/test_context.c
+++ b/tests/utests/basic/test_context.c
@@ -440,7 +440,10 @@
     struct lys_glob_unres unres = {0};
 
     unsigned int index = 0;
-    const char *names[] = {"ietf-yang-metadata", "yang", "ietf-inet-types", "ietf-yang-types", "ietf-datastores", "ietf-yang-library", "a", "a", "a"};
+    const char *names[] = {
+        "ietf-yang-metadata", "yang", "ietf-inet-types", "ietf-yang-types", "ietf-yang-schema-mount",
+        "ietf-datastores", "ietf-yang-library", "a", "a", "a"
+    };
 
     assert_int_equal(LY_SUCCESS, ly_in_new_memory(str0, &in0));
     assert_int_equal(LY_SUCCESS, ly_in_new_memory(str1, &in1));
@@ -507,7 +510,7 @@
     while ((mod = (struct lys_module *)ly_ctx_get_module_iter(UTEST_LYCTX, &index))) {
         assert_string_equal(names[index - 1], mod->name);
     }
-    assert_int_equal(9, index);
+    assert_int_equal(10, index);
 
     /* cleanup */
     ly_in_free(in0, 0);
diff --git a/tests/utests/basic/test_plugins.c b/tests/utests/basic/test_plugins.c
index 95b190f..dd50347 100644
--- a/tests/utests/basic/test_plugins.c
+++ b/tests/utests/basic/test_plugins.c
@@ -68,61 +68,6 @@
 }
 
 static void
-test_validation(void **state)
-{
-    struct lys_module *mod;
-    struct lyd_node *tree;
-    const char *data;
-    const char *schema = "module libyang-plugins-validate {"
-            "  namespace urn:libyang:tests:plugins:validate;"
-            "  prefix v;"
-            "  extension extra-validation;"
-            "  typedef note { type string { v:extra-validation;}}"
-            "  leaf test1 {"
-            "    type v:note;"
-            "  }"
-            "  leaf test2 {"
-            "    type string;"
-            "    v:extra-validation;"
-            "  }"
-            "  leaf test3 {"
-            "    type string {v:extra-validation;}"
-            "  }"
-            "  leaf test4 {"
-            "    type string;"
-            "  }"
-            "}";
-
-    assert_int_equal(LY_SUCCESS, lyplg_add(TESTS_BIN "/plugins/plugin_validate" LYPLG_SUFFIX));
-
-    UTEST_ADD_MODULE(schema, LYS_IN_YANG, NULL, &mod);
-
-    /* test1 - extra-validation done based on typedef's extension */
-    data = "<test1 xmlns=\"urn:libyang:tests:plugins:validate\">xxx</test1>";
-    assert_int_equal(LY_SUCCESS, lyd_parse_data_mem(UTEST_LYCTX, data, LYD_XML, 0, LYD_VALIDATE_PRESENT, &tree));
-    CHECK_LOG_CTX("Extension plugin \"libyang 2 - validation test, version 1\": extra validation callback invoked on test1", NULL);
-    lyd_free_all(tree);
-
-    /* test2 - extra-validation done based on node's extension */
-    data = "<test2 xmlns=\"urn:libyang:tests:plugins:validate\">xxx</test2>";
-    assert_int_equal(LY_SUCCESS, lyd_parse_data_mem(UTEST_LYCTX, data, LYD_XML, 0, LYD_VALIDATE_PRESENT, &tree));
-    CHECK_LOG_CTX("Extension plugin \"libyang 2 - validation test, version 1\": extra validation callback invoked on test2", NULL);
-    lyd_free_all(tree);
-
-    /* test3 - extra-validation done based on node type's extension */
-    data = "<test3 xmlns=\"urn:libyang:tests:plugins:validate\">xxx</test3>";
-    assert_int_equal(LY_SUCCESS, lyd_parse_data_mem(UTEST_LYCTX, data, LYD_XML, 0, LYD_VALIDATE_PRESENT, &tree));
-    CHECK_LOG_CTX("Extension plugin \"libyang 2 - validation test, version 1\": extra validation callback invoked on test3", NULL);
-    lyd_free_all(tree);
-
-    /* test4 - extra-validation not done */
-    data = "<test4 xmlns=\"urn:libyang:tests:plugins:validate\">xxx</test4>";
-    assert_int_equal(LY_SUCCESS, lyd_parse_data_mem(UTEST_LYCTX, data, LYD_XML, 0, LYD_VALIDATE_PRESENT, &tree));
-    CHECK_LOG_CTX(NULL, NULL);
-    lyd_free_all(tree);
-}
-
-static void
 test_not_implemented(void **state)
 {
     struct lys_module *mod;
@@ -157,7 +102,6 @@
     const struct CMUnitTest tests[] = {
         UTEST(test_add_invalid),
         UTEST(test_add_simple),
-        UTEST(test_validation),
         UTEST(test_not_implemented),
     };
 
diff --git a/tests/utests/basic/test_xml.c b/tests/utests/basic/test_xml.c
index 1999f65..7e8132d 100644
--- a/tests/utests/basic/test_xml.c
+++ b/tests/utests/basic/test_xml.c
@@ -23,7 +23,6 @@
 #include "xml.h"
 
 LY_ERR lyxml_ns_add(struct lyxml_ctx *xmlctx, const char *prefix, size_t prefix_len, char *uri);
-LY_ERR lyxml_ns_rm(struct lyxml_ctx *xmlctx);
 
 static void
 test_element(void **state)
