|
Packit Service |
a2ae7a |
/*
|
|
Packit Service |
a2ae7a |
* test-api.c: test public API functions for conformance
|
|
Packit Service |
a2ae7a |
*
|
|
Packit Service |
a2ae7a |
* Copyright (C) 2009-2016 David Lutterkort
|
|
Packit Service |
a2ae7a |
*
|
|
Packit Service |
a2ae7a |
* This library is free software; you can redistribute it and/or
|
|
Packit Service |
a2ae7a |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit Service |
a2ae7a |
* License as published by the Free Software Foundation; either
|
|
Packit Service |
a2ae7a |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit Service |
a2ae7a |
*
|
|
Packit Service |
a2ae7a |
* This library is distributed in the hope that it will be useful,
|
|
Packit Service |
a2ae7a |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
a2ae7a |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
a2ae7a |
* Lesser General Public License for more details.
|
|
Packit Service |
a2ae7a |
*
|
|
Packit Service |
a2ae7a |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit Service |
a2ae7a |
* License along with this library; if not, write to the Free Software
|
|
Packit Service |
a2ae7a |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
Packit Service |
a2ae7a |
*
|
|
Packit Service |
a2ae7a |
* Author: David Lutterkort <lutter@redhat.com>
|
|
Packit Service |
a2ae7a |
*/
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
#include <config.h>
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
#include "augeas.h"
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
#include "cutest.h"
|
|
Packit Service |
a2ae7a |
#include "internal.h"
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
#include <unistd.h>
|
|
Packit Service |
a2ae7a |
#include <libgen.h>
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
#include <libxml/tree.h>
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static const char *abs_top_srcdir;
|
|
Packit Service |
a2ae7a |
static char *root;
|
|
Packit Service |
a2ae7a |
static char *loadpath;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
#define die(msg) \
|
|
Packit Service |
a2ae7a |
do { \
|
|
Packit Service |
a2ae7a |
fprintf(stderr, "%d: Fatal error: %s\n", __LINE__, msg); \
|
|
Packit Service |
a2ae7a |
exit(EXIT_FAILURE); \
|
|
Packit Service |
a2ae7a |
} while(0)
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testGet(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
const char *value;
|
|
Packit Service |
a2ae7a |
const char *label;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Make sure we're looking at the right thing */
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/version/save/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertTrue(tc, r > 1);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_get returns 1 and the value if exactly one node matches */
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/version/save/*[1]", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_get returns 0 and no value when no node matches */
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/version/save/*[ last() + 1 ]", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_get should return an error when multiple nodes match */
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/version/save/*", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EMMATCH, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_label returns 1 and the label if exactly one node matches */
|
|
Packit Service |
a2ae7a |
r = aug_label(aug, "/augeas/version/save/*[1]", &label);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, label);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_label returns 0 and no label when no node matches */
|
|
Packit Service |
a2ae7a |
r = aug_label(aug, "/augeas/version/save/*[ last() + 1 ]", &label);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, label);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_label should return an error when multiple nodes match */
|
|
Packit Service |
a2ae7a |
r = aug_label(aug, "/augeas/version/save/*", &label);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, label);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EMMATCH, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* augeas should prepend context if relative path given */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/context", "/augeas/version");
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "save/*[1]", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* augeas should still work with an empty context */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/context", "");
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/version", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* augeas should ignore trailing slashes in context */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/context", "/augeas/version/");
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "save/*[1]", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* augeas should create non-existent context path */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/context", "/context/foo");
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "bar", "value");
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/context/foo/bar", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_get should set VALUE to NULL even if the path expression is invalid
|
|
Packit Service |
a2ae7a |
Issue #372 */
|
|
Packit Service |
a2ae7a |
value = (const char *) 7;
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "[invalid path]", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testSet(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
const char *value;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_set returns 0 for a simple set */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/testSet", "foo");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_set returns -1 when cannot set due to multiple nodes */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/version/save/*", "foo");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EMMATCH, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_set is able to set the context, even when currently invalid */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/context", "( /files | /augeas )");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/version", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EMMATCH, aug_error(aug));
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/context", "/files");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testSetM(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Change base nodes when SUB is NULL */
|
|
Packit Service |
a2ae7a |
r = aug_setm(aug, "/augeas/version/save/*", NULL, "changed");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 4, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/version/save/*[. = 'changed']", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 4, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Only change existing nodes */
|
|
Packit Service |
a2ae7a |
r = aug_setm(aug, "/augeas/version/save", "mode", "again");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 4, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/version/save/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 4, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/version/save/*[. = 'again']", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 4, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Create a new node */
|
|
Packit Service |
a2ae7a |
r = aug_setm(aug, "/augeas/version/save", "mode[last() + 1]", "newmode");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/version/save/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 5, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/version/save/*[. = 'again']", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 4, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/version/save/*[last()][. = 'newmode']", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Noexistent base */
|
|
Packit Service |
a2ae7a |
r = aug_setm(aug, "/augeas/version/save[last()+1]", "mode", "newmode");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Invalid path expressions */
|
|
Packit Service |
a2ae7a |
r = aug_setm(aug, "/augeas/version/save[]", "mode", "invalid");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_setm(aug, "/augeas/version/save/*", "mode[]", "invalid");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Check that defining a variable leads to a corresponding entry in
|
|
Packit Service |
a2ae7a |
* /augeas/variables and that that entry disappears when the variable is
|
|
Packit Service |
a2ae7a |
* undefined */
|
|
Packit Service |
a2ae7a |
static void testDefVarMeta(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
static const char *const expr = "/augeas/version/save/mode";
|
|
Packit Service |
a2ae7a |
const char *value;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_defvar(aug, "var", expr);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 4, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/variables/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/variables/var", &value);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, expr, value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_defvar(aug, "var", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/variables/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Check that defining a variable with defnode leads to a corresponding
|
|
Packit Service |
a2ae7a |
* entry in /augeas/variables and that that entry disappears when the
|
|
Packit Service |
a2ae7a |
* variable is undefined
|
|
Packit Service |
a2ae7a |
*/
|
|
Packit Service |
a2ae7a |
static void testDefNodeExistingMeta(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
int r, created;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
static const char *const expr = "/augeas/version/save/mode";
|
|
Packit Service |
a2ae7a |
const char *value;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_defnode(aug, "var", expr, "other", &created);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 4, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, created);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/variables/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/variables/var", &value);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, expr, value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_defvar(aug, "var", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/variables/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Check that defining a variable with defnode leads to a corresponding
|
|
Packit Service |
a2ae7a |
* entry in /augeas/variables and that that entry disappears when the
|
|
Packit Service |
a2ae7a |
* variable is undefined
|
|
Packit Service |
a2ae7a |
*/
|
|
Packit Service |
a2ae7a |
static void testDefNodeCreateMeta(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
int r, created;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
static const char *const expr = "/augeas/version/save/mode[last()+1]";
|
|
Packit Service |
a2ae7a |
static const char *const expr_can = "/augeas/version/save/mode[5]";
|
|
Packit Service |
a2ae7a |
const char *value;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_defnode(aug, "var", expr, "other", &created);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, created);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/variables/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/variables/var", &value);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, expr_can, value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_defvar(aug, "var", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/variables/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void reset_indexes(uint *a, uint *b, uint *c, uint *d, uint *e, uint *f) {
|
|
Packit Service |
a2ae7a |
*a = 0; *b = 0; *c = 0; *d = 0; *e = 0; *f = 0;
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
#define SPAN_TEST_DEF_LAST { .expr = NULL, .ls = 0, .le = 0, \
|
|
Packit Service |
a2ae7a |
.vs = 0, .ve = 0, .ss = 0, .se = 0 }
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
struct span_test_def {
|
|
Packit Service |
a2ae7a |
const char *expr;
|
|
Packit Service |
a2ae7a |
const char *f;
|
|
Packit Service |
a2ae7a |
int ret;
|
|
Packit Service |
a2ae7a |
int ls;
|
|
Packit Service |
a2ae7a |
int le;
|
|
Packit Service |
a2ae7a |
int vs;
|
|
Packit Service |
a2ae7a |
int ve;
|
|
Packit Service |
a2ae7a |
int ss;
|
|
Packit Service |
a2ae7a |
int se;
|
|
Packit Service |
a2ae7a |
};
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static const struct span_test_def span_test[] = {
|
|
Packit Service |
a2ae7a |
{ .expr = "/files/etc/hosts/1/ipaddr", .f = "hosts", .ret = 0, .ls = 0, .le = 0, .vs = 104, .ve = 113, .ss = 104, .se = 113 },
|
|
Packit Service |
a2ae7a |
{ .expr = "/files/etc/hosts/1", .f = "hosts", .ret = 0, .ls = 0, .le = 0, .vs = 0, .ve = 0, .ss = 104, .se = 171 },
|
|
Packit Service |
a2ae7a |
{ .expr = "/files/etc/hosts/*[last()]", .f = "hosts", .ret = 0, .ls = 0, .le = 0, .vs = 0, .ve = 0, .ss = 266, .se = 309 },
|
|
Packit Service |
a2ae7a |
{ .expr = "/files/etc/hosts/#comment[2]", .f = "hosts", .ret = 0, .ls = 0, .le = 0, .vs = 58, .ve = 103, .ss = 56, .se = 104 },
|
|
Packit Service |
a2ae7a |
{ .expr = "/files/etc/hosts", .f = "hosts", .ret = 0, .ls = 0, .le = 0, .vs = 0, .ve = 0, .ss = 0, .se = 309 },
|
|
Packit Service |
a2ae7a |
{ .expr = "/files", .f = NULL, .ret = -1, .ls = 0, .le = 0, .vs = 0, .ve = 0, .ss = 0, .se = 0 },
|
|
Packit Service |
a2ae7a |
{ .expr = "/random", .f = NULL, .ret = -1, .ls = 0, .le = 0, .vs = 0, .ve = 0, .ss = 0, .se = 0 },
|
|
Packit Service |
a2ae7a |
SPAN_TEST_DEF_LAST
|
|
Packit Service |
a2ae7a |
};
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testNodeInfo(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
int ret;
|
|
Packit Service |
a2ae7a |
int i = 0;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
struct span_test_def test;
|
|
Packit Service |
a2ae7a |
char *fbase;
|
|
Packit Service |
a2ae7a |
char msg[1024];
|
|
Packit Service |
a2ae7a |
static const char *const expr = "/files/etc/hosts/1/ipaddr";
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
char *filename_ac;
|
|
Packit Service |
a2ae7a |
uint label_start, label_end, value_start, value_end, span_start, span_end;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD|AUG_ENABLE_SPAN);
|
|
Packit Service |
a2ae7a |
ret = aug_load(aug);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, ret);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
while(span_test[i].expr != NULL) {
|
|
Packit Service |
a2ae7a |
test = span_test[i];
|
|
Packit Service |
a2ae7a |
i++;
|
|
Packit Service |
a2ae7a |
ret = aug_span(aug, test.expr, &filename_ac, &label_start, &label_end,
|
|
Packit Service |
a2ae7a |
&value_start, &value_end, &span_start, &span_end);
|
|
Packit Service |
a2ae7a |
sprintf(msg, "span_test %d ret\n", i);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals_Msg(tc, msg, test.ret, ret);
|
|
Packit Service |
a2ae7a |
sprintf(msg, "span_test %d label_start\n", i);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals_Msg(tc, msg, test.ls, label_start);
|
|
Packit Service |
a2ae7a |
sprintf(msg, "span_test %d label_end\n", i);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals_Msg(tc, msg, test.le, label_end);
|
|
Packit Service |
a2ae7a |
sprintf(msg, "span_test %d value_start\n", i);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals_Msg(tc, msg, test.vs, value_start);
|
|
Packit Service |
a2ae7a |
sprintf(msg, "span_test %d value_end\n", i);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals_Msg(tc, msg, test.ve, value_end);
|
|
Packit Service |
a2ae7a |
sprintf(msg, "span_test %d span_start\n", i);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals_Msg(tc, msg, test.ss, span_start);
|
|
Packit Service |
a2ae7a |
sprintf(msg, "span_test %d span_end\n", i);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals_Msg(tc, msg, test.se, span_end);
|
|
Packit Service |
a2ae7a |
if (filename_ac != NULL) {
|
|
Packit Service |
a2ae7a |
fbase = basename(filename_ac);
|
|
Packit Service |
a2ae7a |
} else {
|
|
Packit Service |
a2ae7a |
fbase = NULL;
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
sprintf(msg, "span_test %d filename\n", i);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals_Msg(tc, msg, test.f, fbase);
|
|
Packit Service |
a2ae7a |
free(filename_ac);
|
|
Packit Service |
a2ae7a |
filename_ac = NULL;
|
|
Packit Service |
a2ae7a |
reset_indexes(&label_start, &label_end, &value_start, &value_end,
|
|
Packit Service |
a2ae7a |
&span_start, &span_end);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_span returns -1 and when no node matches */
|
|
Packit Service |
a2ae7a |
ret = aug_span(aug, "/files/etc/hosts/*[ last() + 1 ]", &filename_ac,
|
|
Packit Service |
a2ae7a |
&label_start, &label_end, &value_start, &value_end,
|
|
Packit Service |
a2ae7a |
&span_start, &span_end);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, ret);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, filename_ac);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_ENOMATCH, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_span should return an error when multiple nodes match */
|
|
Packit Service |
a2ae7a |
ret = aug_span(aug, "/files/etc/hosts/*", &filename_ac,
|
|
Packit Service |
a2ae7a |
&label_start, &label_end, &value_start, &value_end,
|
|
Packit Service |
a2ae7a |
&span_start, &span_end);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, ret);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, filename_ac);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EMMATCH, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* aug_span returns -1 if nodes span are not loaded */
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
ret = aug_load(aug);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, ret);
|
|
Packit Service |
a2ae7a |
ret = aug_span(aug, expr, &filename_ac, &label_start, &label_end,
|
|
Packit Service |
a2ae7a |
&value_start, &value_end, &span_start, &span_end);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, ret);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, filename_ac);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_ENOSPAN, aug_error(aug));
|
|
Packit Service |
a2ae7a |
reset_indexes(&label_start, &label_end, &value_start, &value_end,
|
|
Packit Service |
a2ae7a |
&span_start, &span_end);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testMv(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/a/b/c", "value");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_mv(aug, "/a/b/c", "/a/b/c/d");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EMVDESC, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testCp(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
const char *value;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
r = aug_load(aug);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/a/b/c", "value");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_cp(aug, "/a/b/c", "/a/b/c/d");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_ECPDESC, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
// Copy recursive tree with empty label
|
|
Packit Service |
a2ae7a |
r = aug_cp(aug, "/files/etc/logrotate.d/rpm/rule/create", "/files/etc/logrotate.d/acpid/rule/create");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
// Check empty label
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/files/etc/logrotate.d/rpm/rule/create", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, NULL, value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
// Check that copies are well separated
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/files/etc/logrotate.d/rpm/rule/create/mode", "1234");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/files/etc/logrotate.d/acpid/rule/create/mode", "5678");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/files/etc/logrotate.d/rpm/rule/create/mode", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "1234", value);
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/files/etc/logrotate.d/acpid/rule/create/mode", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "5678", value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testRename(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/a/b/c", "value");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_rename(aug, "/a/b/c", "d");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/a/e/d", "value2");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
// Multiple rename
|
|
Packit Service |
a2ae7a |
r = aug_rename(aug, "/a//d", "x");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 2, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
// Label with a /
|
|
Packit Service |
a2ae7a |
r = aug_rename(aug, "/a/e/x", "a/b");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_ELABEL, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testToXml(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
xmlNodePtr xmldoc, xmlnode;
|
|
Packit Service |
a2ae7a |
xmlChar *value;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
r = aug_load(aug);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_to_xml(aug, "/files/etc/passwd", &xmldoc, 0);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
value = xmlGetProp(xmldoc, BAD_CAST "match");
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "/files/etc/passwd", (const char *) value);
|
|
Packit Service |
a2ae7a |
xmlFree(value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
xmlnode = xmlFirstElementChild(xmldoc);
|
|
Packit Service |
a2ae7a |
value = xmlGetProp(xmlnode, BAD_CAST "label");
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "passwd", (const char *) value);
|
|
Packit Service |
a2ae7a |
xmlFree(value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
value = xmlGetProp(xmlnode, BAD_CAST "path");
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "/files/etc/passwd", (const char *) value);
|
|
Packit Service |
a2ae7a |
xmlFree(value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
xmlnode = xmlFirstElementChild(xmlnode);
|
|
Packit Service |
a2ae7a |
value = xmlGetProp(xmlnode, BAD_CAST "label");
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "root", (const char *) value);
|
|
Packit Service |
a2ae7a |
xmlFree(value);
|
|
Packit Service |
a2ae7a |
xmlFreeNode(xmldoc);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Bug #239 */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/context", "/files/etc/passwd");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
r = aug_to_xml(aug, ".", &xmldoc, 0);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
xmlnode = xmlFirstElementChild(xmldoc);
|
|
Packit Service |
a2ae7a |
value = xmlGetProp(xmlnode, BAD_CAST "label");
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "passwd", (const char *) value);
|
|
Packit Service |
a2ae7a |
xmlFree(value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
xmlFreeNode(xmldoc);
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testTextStore(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
static const char *const hosts = "192.168.0.1 rtr.example.com router\n";
|
|
Packit Service |
a2ae7a |
/* Not acceptable for Hosts.lns - missing canonical and \n */
|
|
Packit Service |
a2ae7a |
static const char *const hosts_bad = "192.168.0.1";
|
|
Packit Service |
a2ae7a |
const char *v;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/raw/hosts", hosts);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_text_store(aug, "Hosts.lns", "/raw/hosts", "/t1");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/t1/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Test bad lens name */
|
|
Packit Service |
a2ae7a |
r = aug_text_store(aug, "Notthere.lns", "/raw/hosts", "/t2");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_ENOLENS, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/t2", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Test parse error */
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/raw/hosts_bad", hosts_bad);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_text_store(aug, "Hosts.lns", "/raw/hosts_bad", "/t3");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/t3", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/augeas/text/t3/error", &v);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "parse_failed", v);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_text_store(aug, "Hosts.lns", "/raw/hosts", "/t3");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas/text/t3/error", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Test invalid PATH */
|
|
Packit Service |
a2ae7a |
r = aug_text_store(aug, "Hosts.lns", "/raw/hosts", "[garbage]");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EPATHX, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/t2", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testTextRetrieve(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
static const char *const hosts = "192.168.0.1 rtr.example.com router\n";
|
|
Packit Service |
a2ae7a |
const char *hosts_out;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/raw/hosts", hosts);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_text_store(aug, "Hosts.lns", "/raw/hosts", "/t1");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_text_retrieve(aug, "Hosts.lns", "/raw/hosts", "/t1", "/out/hosts");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/out/hosts", &hosts_out);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, hosts, hosts_out);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testAugEscape(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
static const char *const in = "a/[]b|=c()!, \td";
|
|
Packit Service |
a2ae7a |
static const char *const exp = "a\\/\\[\\]b\\|\\=c\\(\\)\\!\\,\\ \\\td";
|
|
Packit Service |
a2ae7a |
char *out;
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_escape_name(aug, in, &out;;
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, out, exp);
|
|
Packit Service |
a2ae7a |
free(out);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testRm(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_MODL_AUTOLOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/files/1/2/3/4/5", "1");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_rm(aug, "/files//*");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 5, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
static void testLoadFile(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
const char *value;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* augeas should load a single file */
|
|
Packit Service |
a2ae7a |
r = aug_load_file(aug, "/etc/fstab");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
r = aug_get(aug, "/files/etc/fstab/1/vfstype", &value);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, value);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Only one file should be loaded */
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/files/etc/*", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* augeas should return an error when no lens can be found for a file */
|
|
Packit Service |
a2ae7a |
r = aug_load_file(aug, "/etc/unknown.conf");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_ENOLENS, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* augeas should return without an error when trying to load a
|
|
Packit Service |
a2ae7a |
nonexistent file that would be handled by a lens */
|
|
Packit Service |
a2ae7a |
r = aug_load_file(aug, "/etc/mtab");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/files/etc/mtab", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Make sure that if somebody erroneously creates a node
|
|
Packit Service |
a2ae7a |
/augeas/files/path, we do not corrupt the tree. It used to be that
|
|
Packit Service |
a2ae7a |
having such a node would free /augeas/files
|
|
Packit Service |
a2ae7a |
*/
|
|
Packit Service |
a2ae7a |
static void testLoadBadPath(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/files/path", "/files");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_load(aug);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* If a lens is set to a partial path which happens to actually resolve to
|
|
Packit Service |
a2ae7a |
a file when appended to the loadpath, we went into an infinite loop of
|
|
Packit Service |
a2ae7a |
loading a module, but then not realizing that it had actually been
|
|
Packit Service |
a2ae7a |
loaded, reloading it over and over again.
|
|
Packit Service |
a2ae7a |
See https://github.com/hercules-team/augeas/issues/522
|
|
Packit Service |
a2ae7a |
*/
|
|
Packit Service |
a2ae7a |
static void testLoadBadLens(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
char *lp;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
// This setup depends on the fact that
|
|
Packit Service |
a2ae7a |
// loadpath == abs_top_srcdir + "/lenses"
|
|
Packit Service |
a2ae7a |
r = asprintf(&lp, "%s:%s", loadpath, abs_top_srcdir);
|
|
Packit Service |
a2ae7a |
CuAssert(tc, "failed to allocate loadpath", (r >= 0));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, lp, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_set(aug, "/augeas/load/Fstab/lens", "lenses/Fstab.lns");
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_load(aug);
|
|
Packit Service |
a2ae7a |
CuAssertRetSuccess(tc, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
// We used to record the error to load the lens above against every
|
|
Packit Service |
a2ae7a |
// lens that we tried to load after it.
|
|
Packit Service |
a2ae7a |
r = aug_match(aug, "/augeas//error", NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
free(lp);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Test the aug_ns_* functions */
|
|
Packit Service |
a2ae7a |
static void testAugNs(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
const char *v, *l;
|
|
Packit Service |
a2ae7a |
char *s;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_load_file(aug, "/etc/hosts");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_defvar(aug, "matches",
|
|
Packit Service |
a2ae7a |
"/files/etc/hosts/*[label() != '#comment']/ipaddr");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 2, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_ns_attr(aug, "matches", 0, &v, &l, &s);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "127.0.0.1", v);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "ipaddr", l);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "/files/etc/hosts", s);
|
|
Packit Service |
a2ae7a |
free(s);
|
|
Packit Service |
a2ae7a |
s = NULL;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_ns_attr(aug, "matches", 0, NULL, NULL, NULL);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_ns_attr(aug, "matches", 1, &v, NULL, &s);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 1, r);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "172.31.122.14", v);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "/files/etc/hosts", s);
|
|
Packit Service |
a2ae7a |
free(s);
|
|
Packit Service |
a2ae7a |
s = NULL;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_ns_attr(aug, "matches", 2, &v, &l, &s);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, v);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, l);
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, s);
|
|
Packit Service |
a2ae7a |
free(s);
|
|
Packit Service |
a2ae7a |
s = NULL;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug_close(aug);
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/* Test aug_source */
|
|
Packit Service |
a2ae7a |
static void testAugSource(CuTest *tc) {
|
|
Packit Service |
a2ae7a |
struct augeas *aug;
|
|
Packit Service |
a2ae7a |
int r;
|
|
Packit Service |
a2ae7a |
char *s;
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
aug = aug_init(root, loadpath, AUG_NO_STDINC|AUG_NO_LOAD);
|
|
Packit Service |
a2ae7a |
CuAssertPtrNotNull(tc, aug);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_NOERROR, aug_error(aug));
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_load_file(aug, "/etc/hosts");
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_source(aug, "/files/etc/hosts/1", &s);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, 0, r);
|
|
Packit Service |
a2ae7a |
CuAssertStrEquals(tc, "/files/etc/hosts", s);
|
|
Packit Service |
a2ae7a |
free(s);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_source(aug, "/files/etc/fstab", &s);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_ENOMATCH, aug_error(aug));
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, s);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_source(aug, "/files[", &s);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EPATHX, aug_error(aug));
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, s);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
r = aug_source(aug, "/files/etc/hosts/*", &s);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, -1, r);
|
|
Packit Service |
a2ae7a |
CuAssertIntEquals(tc, AUG_EMMATCH, aug_error(aug));
|
|
Packit Service |
a2ae7a |
CuAssertPtrEquals(tc, NULL, s);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
int main(void) {
|
|
Packit Service |
a2ae7a |
char *output = NULL;
|
|
Packit Service |
a2ae7a |
CuSuite* suite = CuSuiteNew();
|
|
Packit Service |
a2ae7a |
CuSuiteSetup(suite, NULL, NULL);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testGet);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testSet);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testSetM);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testDefVarMeta);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testDefNodeExistingMeta);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testDefNodeCreateMeta);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testNodeInfo);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testMv);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testCp);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testRename);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testToXml);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testTextStore);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testTextRetrieve);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testAugEscape);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testRm);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testLoadFile);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testLoadBadPath);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testLoadBadLens);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testAugNs);
|
|
Packit Service |
a2ae7a |
SUITE_ADD_TEST(suite, testAugSource);
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
abs_top_srcdir = getenv("abs_top_srcdir");
|
|
Packit Service |
a2ae7a |
if (abs_top_srcdir == NULL)
|
|
Packit Service |
a2ae7a |
die("env var abs_top_srcdir must be set");
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
if (asprintf(&root, "%s/tests/root", abs_top_srcdir) < 0) {
|
|
Packit Service |
a2ae7a |
die("failed to set root");
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
if (asprintf(&loadpath, "%s/lenses", abs_top_srcdir) < 0) {
|
|
Packit Service |
a2ae7a |
die("failed to set loadpath");
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
CuSuiteRun(suite);
|
|
Packit Service |
a2ae7a |
CuSuiteSummary(suite, &output);
|
|
Packit Service |
a2ae7a |
CuSuiteDetails(suite, &output);
|
|
Packit Service |
a2ae7a |
printf("%s\n", output);
|
|
Packit Service |
a2ae7a |
free(output);
|
|
Packit Service |
a2ae7a |
int result = suite->failCount;
|
|
Packit Service |
a2ae7a |
CuSuiteFree(suite);
|
|
Packit Service |
a2ae7a |
return result;
|
|
Packit Service |
a2ae7a |
}
|
|
Packit Service |
a2ae7a |
|
|
Packit Service |
a2ae7a |
/*
|
|
Packit Service |
a2ae7a |
* Local variables:
|
|
Packit Service |
a2ae7a |
* indent-tabs-mode: nil
|
|
Packit Service |
a2ae7a |
* c-indent-level: 4
|
|
Packit Service |
a2ae7a |
* c-basic-offset: 4
|
|
Packit Service |
a2ae7a |
* tab-width: 4
|
|
Packit Service |
a2ae7a |
* End:
|
|
Packit Service |
a2ae7a |
*/
|