Annotation of qemu/tests/test_path.c, revision 1.1.1.5

1.1       root        1: /* Test path override code */
1.1.1.4   root        2: #include "../config-host.h"
                      3: #include "../qemu-malloc.c"
                      4: #include "../cutils.c"
1.1       root        5: #include "../path.c"
1.1.1.4   root        6: #include "../trace.c"
1.1.1.5 ! root        7: #ifdef CONFIG_TRACE_SIMPLE
1.1.1.4   root        8: #include "../simpletrace.c"
                      9: #endif
                     10: 
1.1       root       11: #include <stdarg.h>
                     12: #include <sys/stat.h>
                     13: #include <fcntl.h>
                     14: 
1.1.1.4   root       15: void qemu_log(const char *fmt, ...);
                     16: 
1.1       root       17: /* Any log message kills the test. */
1.1.1.4   root       18: void qemu_log(const char *fmt, ...)
1.1       root       19: {
                     20:     va_list ap;
                     21: 
                     22:     fprintf(stderr, "FATAL: ");
                     23:     va_start(ap, fmt);
                     24:     vfprintf(stderr, fmt, ap);
                     25:     va_end(ap);
                     26:     exit(1);
                     27: }
                     28: 
                     29: #define NO_CHANGE(_path)                                               \
                     30:        do {                                                            \
                     31:            if (strcmp(path(_path), _path) != 0) return __LINE__;       \
                     32:        } while(0)
                     33: 
                     34: #define CHANGE_TO(_path, _newpath)                                     \
                     35:        do {                                                            \
                     36:            if (strcmp(path(_path), _newpath) != 0) return __LINE__;    \
                     37:        } while(0)
                     38: 
                     39: static void cleanup(void)
                     40: {
                     41:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE");
                     42:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE2");
                     43:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE3");
                     44:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE4");
                     45:     unlink("/tmp/qemu-test_path/DIR1/DIR2/FILE5");
                     46:     rmdir("/tmp/qemu-test_path/DIR1/DIR2");
                     47:     rmdir("/tmp/qemu-test_path/DIR1/DIR3");
                     48:     rmdir("/tmp/qemu-test_path/DIR1");
                     49:     rmdir("/tmp/qemu-test_path");
                     50: }
                     51: 
                     52: static unsigned int do_test(void)
                     53: {
                     54:     if (mkdir("/tmp/qemu-test_path", 0700) != 0)
                     55:        return __LINE__;
                     56: 
                     57:     if (mkdir("/tmp/qemu-test_path/DIR1", 0700) != 0)
                     58:        return __LINE__;
                     59: 
                     60:     if (mkdir("/tmp/qemu-test_path/DIR1/DIR2", 0700) != 0)
                     61:        return __LINE__;
                     62: 
                     63:     if (mkdir("/tmp/qemu-test_path/DIR1/DIR3", 0700) != 0)
                     64:        return __LINE__;
                     65: 
                     66:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE", 0600)) != 0)
                     67:        return __LINE__;
                     68: 
                     69:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE2", 0600)) != 0)
                     70:        return __LINE__;
                     71: 
                     72:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE3", 0600)) != 0)
                     73:        return __LINE__;
                     74: 
                     75:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE4", 0600)) != 0)
                     76:        return __LINE__;
                     77: 
                     78:     if (close(creat("/tmp/qemu-test_path/DIR1/DIR2/FILE5", 0600)) != 0)
                     79:        return __LINE__;
                     80: 
                     81:     init_paths("/tmp/qemu-test_path");
                     82: 
                     83:     NO_CHANGE("/tmp");
                     84:     NO_CHANGE("/tmp/");
                     85:     NO_CHANGE("/tmp/qemu-test_path");
                     86:     NO_CHANGE("/tmp/qemu-test_path/");
                     87:     NO_CHANGE("/tmp/qemu-test_path/D");
                     88:     NO_CHANGE("/tmp/qemu-test_path/DI");
                     89:     NO_CHANGE("/tmp/qemu-test_path/DIR");
                     90:     NO_CHANGE("/tmp/qemu-test_path/DIR1");
                     91:     NO_CHANGE("/tmp/qemu-test_path/DIR1/");
                     92: 
                     93:     NO_CHANGE("/D");
                     94:     NO_CHANGE("/DI");
                     95:     NO_CHANGE("/DIR");
                     96:     NO_CHANGE("/DIR2");
                     97:     NO_CHANGE("/DIR1.");
                     98: 
                     99:     CHANGE_TO("/DIR1", "/tmp/qemu-test_path/DIR1");
                    100:     CHANGE_TO("/DIR1/", "/tmp/qemu-test_path/DIR1");
                    101: 
                    102:     NO_CHANGE("/DIR1/D");
                    103:     NO_CHANGE("/DIR1/DI");
                    104:     NO_CHANGE("/DIR1/DIR");
                    105:     NO_CHANGE("/DIR1/DIR1");
                    106: 
                    107:     CHANGE_TO("/DIR1/DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
                    108:     CHANGE_TO("/DIR1/DIR2/", "/tmp/qemu-test_path/DIR1/DIR2");
                    109: 
                    110:     CHANGE_TO("/DIR1/DIR3", "/tmp/qemu-test_path/DIR1/DIR3");
                    111:     CHANGE_TO("/DIR1/DIR3/", "/tmp/qemu-test_path/DIR1/DIR3");
                    112: 
                    113:     NO_CHANGE("/DIR1/DIR2/F");
                    114:     NO_CHANGE("/DIR1/DIR2/FI");
                    115:     NO_CHANGE("/DIR1/DIR2/FIL");
                    116:     NO_CHANGE("/DIR1/DIR2/FIL.");
                    117: 
                    118:     CHANGE_TO("/DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    119:     CHANGE_TO("/DIR1/DIR2/FILE2", "/tmp/qemu-test_path/DIR1/DIR2/FILE2");
                    120:     CHANGE_TO("/DIR1/DIR2/FILE3", "/tmp/qemu-test_path/DIR1/DIR2/FILE3");
                    121:     CHANGE_TO("/DIR1/DIR2/FILE4", "/tmp/qemu-test_path/DIR1/DIR2/FILE4");
                    122:     CHANGE_TO("/DIR1/DIR2/FILE5", "/tmp/qemu-test_path/DIR1/DIR2/FILE5");
                    123: 
                    124:     NO_CHANGE("/DIR1/DIR2/FILE6");
                    125:     NO_CHANGE("/DIR1/DIR2/FILE/X");
                    126: 
                    127:     CHANGE_TO("/DIR1/../DIR1", "/tmp/qemu-test_path/DIR1");
                    128:     CHANGE_TO("/DIR1/../DIR1/", "/tmp/qemu-test_path/DIR1");
                    129:     CHANGE_TO("/../DIR1", "/tmp/qemu-test_path/DIR1");
                    130:     CHANGE_TO("/../DIR1/", "/tmp/qemu-test_path/DIR1");
                    131:     CHANGE_TO("/DIR1/DIR2/../DIR2", "/tmp/qemu-test_path/DIR1/DIR2");
                    132:     CHANGE_TO("/DIR1/DIR2/../DIR2/../../DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    133:     CHANGE_TO("/DIR1/DIR2/../DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    134: 
                    135:     NO_CHANGE("/DIR1/DIR2/../DIR1");
                    136:     NO_CHANGE("/DIR1/DIR2/../FILE");
                    137: 
                    138:     CHANGE_TO("/./DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    139:     CHANGE_TO("/././DIR1/DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    140:     CHANGE_TO("/DIR1/./DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    141:     CHANGE_TO("/DIR1/././DIR2/FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    142:     CHANGE_TO("/DIR1/DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    143:     CHANGE_TO("/DIR1/DIR2/././FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    144:     CHANGE_TO("/./DIR1/./DIR2/./FILE", "/tmp/qemu-test_path/DIR1/DIR2/FILE");
                    145: 
                    146:     return 0;
                    147: }
                    148: 
                    149: int main(int argc, char *argv[])
                    150: {
                    151:     int ret;
                    152: 
                    153:     ret = do_test();
                    154:     cleanup();
                    155:     if (ret) {
                    156:        fprintf(stderr, "test_path: failed on line %i\n", ret);
                    157:        return 1;
                    158:     }
                    159:     return 0;
                    160: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.