1.1 --- a/librazor/test-pfu.c Mon Jul 04 10:48:18 2016 +0100
1.2 +++ b/librazor/test-pfu.c Fri Jun 08 18:02:49 2018 +0100
1.3 @@ -25,6 +25,7 @@
1.4 #include <windows.h>
1.5 #endif
1.6 #include "razor.h"
1.7 +#include "razor-internal.h"
1.8
1.9 #ifdef MSWIN_API
1.10 static int is_ascii_letter(char c)
1.11 @@ -104,6 +105,64 @@
1.12 return r;
1.13 }
1.14
1.15 +static int test_abs(const char *abspath, const char *path)
1.16 +{
1.17 + char *s;
1.18 + int r;
1.19 +
1.20 + s = razor_abspath(path);
1.21 +
1.22 + if (s && abspath)
1.23 + r = strcmp(s, abspath);
1.24 + else
1.25 + r = (s != abspath);
1.26 +
1.27 + if (r) {
1.28 + fprintf(stderr, "Fail: razor_abspath(\"%s\")", path);
1.29 + if (s)
1.30 + fprintf(stderr, " returns \"%s\", expected", s);
1.31 + else
1.32 + fprintf(stderr, " fails, expected");
1.33 + if (abspath)
1.34 + fprintf(stderr, " \"%s\"\n", abspath);
1.35 + else
1.36 + fprintf(stderr, " failure\n");
1.37 + }
1.38 +
1.39 + free(s);
1.40 +
1.41 + return r;
1.42 +}
1.43 +
1.44 +static int test_ptu(const char *uri, const char *path)
1.45 +{
1.46 + char *s;
1.47 + int r;
1.48 +
1.49 + s = razor_path_to_uri(path);
1.50 +
1.51 + if (s && uri)
1.52 + r = strcmp(s, uri);
1.53 + else
1.54 + r = (s != uri);
1.55 +
1.56 + if (r) {
1.57 + fprintf(stderr, "Fail: razor_path_to_uri(\"%s\")", path);
1.58 + if (s)
1.59 + fprintf(stderr, " returns \"%s\", expected", s);
1.60 + else
1.61 + fprintf(stderr, " fails, expected");
1.62 + if (uri)
1.63 + fprintf(stderr, " \"%s\"\n", uri);
1.64 + else
1.65 + fprintf(stderr, " failure\n");
1.66 + }
1.67 +
1.68 + free(s);
1.69 +
1.70 + return r;
1.71 +}
1.72 +
1.73 #ifdef MSWIN_API
1.74 UINT saved_cp;
1.75
1.76 @@ -116,6 +175,20 @@
1.77 int main(int argc, char *argv[])
1.78 {
1.79 int r = 0;
1.80 + const char *tmpdir;
1.81 + char *tempdir, *s;
1.82 +
1.83 + tmpdir = getenv("TMPDIR");
1.84 + if (!tmpdir || !*tmpdir)
1.85 + tmpdir = "/tmp";
1.86 +
1.87 + tempdir = razor_concat(tmpdir, "/test-pfu-XXXXXX", NULL);
1.88 +
1.89 + if (!mkdtemp(tempdir) || chdir(tempdir) < 0) {
1.90 + perror(tempdir);
1.91 + free(tempdir);
1.92 + exit(1);
1.93 + }
1.94
1.95 #ifdef MSWIN_API
1.96 atexit(cleanup_on_exit);
1.97 @@ -136,5 +209,31 @@
1.98 r |= test_pfu("file:///var/log/22%20%e0%b8%aa%e0%b8%b4%e0%b8%87%e0%b8%ab%e0%b8%b2%e0%b8%84%e0%b8%a1%202014",
1.99 "/var/log/22 สิงหาคม 2014");
1.100
1.101 + s = razor_concat(tempdir, "/file.txt", NULL);
1.102 + r |= test_abs(s, "file.txt");
1.103 + free(s);
1.104 +
1.105 + s = razor_concat(tempdir, "/dir/../file.txt", NULL);
1.106 + r |= test_abs(s, "dir/../file.txt");
1.107 + free(s);
1.108 +
1.109 + s = razor_concat(tempdir, "/../file.txt", NULL);
1.110 + r |= test_abs(s, "../file.txt");
1.111 + free(s);
1.112 +
1.113 + s = razor_concat(tempdir, "/dir/../../file.txt", NULL);
1.114 + r |= test_abs(s, "dir/../../file.txt");
1.115 + free(s);
1.116 +
1.117 + r |= test_ptu("file:file.txt", "file.txt");
1.118 + r |= test_ptu("file:file.txt", "dir/../file.txt");
1.119 +
1.120 + s = razor_concat("file:", tmpdir, "/file.txt", NULL);
1.121 + r |= test_ptu(s, "../file.txt");
1.122 + r |= test_ptu(s, "dir/../../file.txt");
1.123 + free(s);
1.124 +
1.125 + free(tempdir);
1.126 +
1.127 exit(r ? 1 : 0);
1.128 }