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

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

unix.superglobalmegacorp.com

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