6d4adef48d
'make test' is broken at least since commit baacf04799ace72a9c735dd9306a1ceaf305e7cf. Several source files were moved to util/, and some of them there split, so add the missing prefix and new files to fix the compiler and linker errors. There remain more issues, but these changes allow running the test on a Linux i686 host. Cc: qemu-stable@nongnu.org Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
165 lines
4.8 KiB
C
165 lines
4.8 KiB
C
/* Test path override code */
|
|
#define _GNU_SOURCE
|
|
#include "config-host.h"
|
|
#include "util/cutils.c"
|
|
#include "util/hexdump.c"
|
|
#include "util/iov.c"
|
|
#include "util/path.c"
|
|
#include "util/qemu-timer-common.c"
|
|
#include "trace/control.c"
|
|
#include "../trace/generated-events.c"
|
|
#ifdef CONFIG_TRACE_SIMPLE
|
|
#include "trace/simple.c"
|
|
#endif
|
|
|
|
#include <stdarg.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
|
|
void qemu_log(const char *fmt, ...);
|
|
|
|
/* Any log message kills the test. */
|
|
void qemu_log(const char *fmt, ...)
|
|
{
|
|
va_list ap;
|
|
|
|
fprintf(stderr, "FATAL: ");
|
|
va_start(ap, fmt);
|
|
vfprintf(stderr, fmt, ap);
|
|
va_end(ap);
|
|
exit(1);
|
|
}
|
|
|
|
#define NO_CHANGE(_path) \
|
|
do { \
|
|
if (strcmp(path(_path), _path) != 0) return __LINE__; \
|
|
} while(0)
|
|
|
|
#define CHANGE_TO(_path, _newpath) \
|
|
do { \
|
|
if (strcmp(path(_path), _newpath) != 0) return __LINE__; \
|
|
} while(0)
|
|
|
|
static void cleanup(void)
|
|
{
|
|
unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE2");
|
|
unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE3");
|
|
unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE4");
|
|
unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE5");
|
|
rmdir("/tmp/qemu-test_path/DIR1/DIR2");
|
|
rmdir("/tmp/qemu-test_path/DIR1/DIR3");
|
|
rmdir("/tmp/qemu-test_path/DIR1");
|
|
rmdir("/tmp/qemu-test_path");
|
|
}
|
|
|
|
static unsigned int do_test(void)
|
|
{
|
|
if (mkdir("/tmp/qemu-test_path", 0700) != 0)
|
|
return __LINE__;
|
|
|
|
if (mkdir("/tmp/qemu-test_path/DIR1", 0700) != 0)
|
|
return __LINE__;
|
|
|
|
if (mkdir("/tmp/qemu-test_path/DIR1/DIR2", 0700) != 0)
|
|
return __LINE__;
|
|
|
|
if (mkdir("/tmp/qemu-test_path/DIR1/DIR3", 0700) != 0)
|
|
return __LINE__;
|
|
|
|
if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE", 0600)) != 0)
|
|
return __LINE__;
|
|
|
|
if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE2", 0600)) != 0)
|
|
return __LINE__;
|
|
|
|
if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE3", 0600)) != 0)
|
|
return __LINE__;
|
|
|
|
if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE4", 0600)) != 0)
|
|
return __LINE__;
|
|
|
|
if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE5", 0600)) != 0)
|
|
return __LINE__;
|
|
|
|
init_paths("/tmp/qemu-test_path");
|
|
|
|
NO_CHANGE("/tmp");
|
|
NO_CHANGE("/tmp/");
|
|
NO_CHANGE("/tmp/qemu-test_path");
|
|
NO_CHANGE("/tmp/qemu-test_path/");
|
|
NO_CHANGE("/tmp/qemu-test_path/D");
|
|
NO_CHANGE("/tmp/qemu-test_path/DI");
|
|
NO_CHANGE("/tmp/qemu-test_path/DIR");
|
|
NO_CHANGE("/tmp/qemu-test_path/DIR1");
|
|
NO_CHANGE("/tmp/qemu-test_path/DIR1/");
|
|
|
|
NO_CHANGE("/D");
|
|
NO_CHANGE("/DI");
|
|
NO_CHANGE("/DIR");
|
|
NO_CHANGE("/DIR2");
|
|
NO_CHANGE("/DIR1.");
|
|
|
|
CHANGE_TO("/DIR1", "/tmp/qemu-test_path/DIR1");
|
|
CHANGE_TO("/DIR1/", "/tmp/qemu-test_path/DIR1");
|
|
|
|
NO_CHANGE("/DIR1/D");
|
|
NO_CHANGE("/DIR1/DI");
|
|
NO_CHANGE("/DIR1/DIR");
|
|
NO_CHANGE("/DIR1/DIR1");
|
|
|
|
CHANGE_TO("/DIR1/DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
|
|
CHANGE_TO("/DIR1/DIR2/", "/tmp/qemu-test_path/DIR1/DIR2");
|
|
|
|
CHANGE_TO("/DIR1/DIR3", "/tmp/qemu-test_path/DIR1/DIR3");
|
|
CHANGE_TO("/DIR1/DIR3/", "/tmp/qemu-test_path/DIR1/DIR3");
|
|
|
|
NO_CHANGE("/DIR1/DIR2/F");
|
|
NO_CHANGE("/DIR1/DIR2/FI");
|
|
NO_CHANGE("/DIR1/DIR2/FIL");
|
|
NO_CHANGE("/DIR1/DIR2/FIL.");
|
|
|
|
CHANGE_TO("/DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
CHANGE_TO("/DIR1/DIR2/FILE2", "/tmp/qemu-test_path/DIR1/DIR2/FILE2");
|
|
CHANGE_TO("/DIR1/DIR2/FILE3", "/tmp/qemu-test_path/DIR1/DIR2/FILE3");
|
|
CHANGE_TO("/DIR1/DIR2/FILE4", "/tmp/qemu-test_path/DIR1/DIR2/FILE4");
|
|
CHANGE_TO("/DIR1/DIR2/FILE5", "/tmp/qemu-test_path/DIR1/DIR2/FILE5");
|
|
|
|
NO_CHANGE("/DIR1/DIR2/FILE6");
|
|
NO_CHANGE("/DIR1/DIR2/FILE/X");
|
|
|
|
CHANGE_TO("/DIR1/../DIR1", "/tmp/qemu-test_path/DIR1");
|
|
CHANGE_TO("/DIR1/../DIR1/", "/tmp/qemu-test_path/DIR1");
|
|
CHANGE_TO("/../DIR1", "/tmp/qemu-test_path/DIR1");
|
|
CHANGE_TO("/../DIR1/", "/tmp/qemu-test_path/DIR1");
|
|
CHANGE_TO("/DIR1/DIR2/../DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
|
|
CHANGE_TO("/DIR1/DIR2/../DIR2/../../DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
CHANGE_TO("/DIR1/DIR2/../DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
|
|
NO_CHANGE("/DIR1/DIR2/../DIR1");
|
|
NO_CHANGE("/DIR1/DIR2/../FILE");
|
|
|
|
CHANGE_TO("/./DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
CHANGE_TO("/././DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
CHANGE_TO("/DIR1/./DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
CHANGE_TO("/DIR1/././DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
CHANGE_TO("/DIR1/DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
CHANGE_TO("/DIR1/DIR2/././FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
CHANGE_TO("/./DIR1/./DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int ret;
|
|
|
|
ret = do_test();
|
|
cleanup();
|
|
if (ret) {
|
|
fprintf(stderr, "test_path: failed on line %i\n", ret);
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|