annotate tests/test-jsapi-directory.c @ 1062:7bc2e8fac3dc

man: fix typo
author David Demelier <markand@malikania.fr>
date Fri, 02 Jul 2021 10:03:50 +0200
parents 8f8ce47aba8a
children f06e9761cc90
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test-jsapi-directory.c -- test Irccd.Directory API
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2021 David Demelier <markand@malikania.fr>
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <sys/stat.h>
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #define GREATEST_USE_ABBREVS 0
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <greatest.h>
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #include <irccd/js-plugin.h>
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <irccd/plugin.h>
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 static struct irc_plugin *plugin;
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
28 static duk_context *ctx;
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 static void
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 setup(void *udata)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 (void)udata;
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
35 plugin = js_plugin_open("example", TOP "/tests/data/example-plugin.js");
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
36 ctx = js_plugin_get_context(plugin);
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
38 duk_push_string(ctx, TOP);
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
39 duk_put_global_string(ctx, "TOP");
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 static void
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 teardown(void *udata)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 (void)udata;
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
47 remove(TOP "/tests/1/2");
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
48 remove(TOP "/tests/1");
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
49
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 irc_plugin_finish(plugin);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 plugin = NULL;
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
53 ctx = NULL;
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 GREATEST_TEST
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 object_constructor(void)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 const char *script =
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
60 "d = new Irccd.Directory(TOP + '/tests/data/root');"
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 "p = d.path;"
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 "l = d.entries.length;";
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
64 if (duk_peval_string(ctx, script) != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
67 duk_get_global_string(ctx, "l");
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
68 GREATEST_ASSERT_EQ(3U, duk_get_uint(ctx, -1));
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
69 duk_get_global_string(ctx, "p");
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
70 GREATEST_ASSERT(duk_is_string(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 GREATEST_PASS();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 GREATEST_TEST
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 object_find(void)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 {
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
78 const char *script = "d = new Irccd.Directory(TOP + '/tests/data/root');";
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
80 if (duk_peval_string(ctx, script) != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
82
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 /* Find "lines.txt" not recursively. */
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
84 if (duk_peval_string(ctx, "p = d.find('lines.txt');") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
87 duk_get_global_string(ctx, "p");
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
88 GREATEST_ASSERT_STR_EQ(TOP "/tests/data/root/lines.txt", duk_get_string(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 /* Find "unknown.txt" not recursively (not found). */
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
91 if (duk_peval_string(ctx, "p = d.find('unknown.txt');") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
94 duk_get_global_string(ctx, "p");
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
95 GREATEST_ASSERT(duk_is_null(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 /* Find "file-2.txt" not recursively (exists but in sub directory). */
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
98 if (duk_peval_string(ctx, "p = d.find('file-2.txt');") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
100
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
101 duk_get_global_string(ctx, "p");
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
102 GREATEST_ASSERT(duk_is_null(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 /* Find "file-2.txt" recursively. */
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
105 if (duk_peval_string(ctx, "p = d.find('file-2.txt', true);") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
107
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
108 duk_get_global_string(ctx, "p");
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
109 GREATEST_ASSERT_STR_EQ(TOP "/tests/data/root/level-1/level-2/file-2.txt", duk_get_string(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 GREATEST_PASS();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 GREATEST_TEST
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 object_remove(void)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 struct stat st;
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 /* First create an empty directory. */
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
120 mkdir(TOP "/tests/empty", 0700);
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
122 if (duk_peval_string(ctx, "d = new Irccd.Directory(TOP + '/tests/empty')") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 /* Not recursive. */
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
126 if (duk_peval_string(ctx, "d.remove()") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
128
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
129 GREATEST_ASSERT_EQ(-1, stat(TOP "/tests/empty", &st));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
130
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
131 mkdir(TOP "/tests/notempty", 0700);
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
132 mkdir(TOP "/tests/notempty/empty", 0700);
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
133
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
134 if (duk_peval_string(ctx, "d = new Irccd.Directory(TOP + '/tests/notempty')") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 /* Not recursive. */
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
138 if (duk_peval_string(ctx, "d.remove(true)") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
140
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
141 GREATEST_ASSERT_EQ(-1, stat(TOP "/tests/notempty", &st));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
142
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 GREATEST_PASS();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
145
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 GREATEST_SUITE(suite_object)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 GREATEST_SET_SETUP_CB(setup, NULL);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 GREATEST_SET_TEARDOWN_CB(teardown, NULL);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 GREATEST_RUN_TEST(object_constructor);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 GREATEST_RUN_TEST(object_find);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 GREATEST_RUN_TEST(object_remove);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 GREATEST_TEST
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 free_find(void)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 /* Find "lines.txt" not recursively. */
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
159 if (duk_peval_string(ctx, "p = Irccd.Directory.find(TOP + '/tests/data/root', 'lines.txt');") != 0) {
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
160 puts(duk_to_string(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
163
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
164 duk_get_global_string(ctx, "p");
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
165 GREATEST_ASSERT_STR_EQ(TOP "/tests/data/root/lines.txt", duk_get_string(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
166
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 /* Find "unknown.txt" not recursively (not found). */
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
168 if (duk_peval_string(ctx, "p = Irccd.Directory.find(TOP + '/tests/data/root', 'unknown.txt');") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
170
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
171 duk_get_global_string(ctx, "p");
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
172 GREATEST_ASSERT(duk_is_null(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 /* Find "file-2.txt" not recursively (exists but in sub directory). */
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
175 if (duk_peval_string(ctx, "p = Irccd.Directory.find(TOP + '/tests/data/root', 'file-2.txt');") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
178 duk_get_global_string(ctx, "p");
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
179 GREATEST_ASSERT(duk_is_null(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 /* Find "file-2.txt" recursively. */
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
182 if (duk_peval_string(ctx, "p = Irccd.Directory.find(TOP + '/tests/data/root', 'file-2.txt', true);") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
184
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
185 duk_get_global_string(ctx, "p");
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
186 GREATEST_ASSERT_STR_EQ(TOP "/tests/data/root/level-1/level-2/file-2.txt", duk_get_string(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
187
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 GREATEST_PASS();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
190
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 GREATEST_TEST
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 free_remove(void)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 struct stat st;
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
195
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 /* First create an empty directory. */
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
197 mkdir(TOP "/tests/empty", 0700);
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
198
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 /* Not recursive. */
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
200 if (duk_peval_string(ctx, "Irccd.Directory.remove(TOP + '/tests/empty')") != 0) {
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
201 puts(duk_to_string(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
204
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
205 GREATEST_ASSERT_EQ(-1, stat(TOP "/tests/empty", &st));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
206
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
207 mkdir(TOP "/tests/notempty", 0700);
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
208 mkdir(TOP "/tests/notempty/empty", 0700);
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
209
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 /* Not recursive. */
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
211 if (duk_peval_string(ctx, "Irccd.Directory.remove(TOP + '/tests/notempty', true)") != 0)
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
213
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
214 GREATEST_ASSERT_EQ(-1, stat(TOP "/tests/notempty", &st));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
215
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 GREATEST_PASS();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
218
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 GREATEST_TEST
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 free_mkdir(void)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 struct stat st;
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
223
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
224 remove(TOP "/tests/1/2");
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
225 remove(TOP "/tests/1");
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
226
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
227 if (duk_peval_string(ctx, "Irccd.Directory.mkdir(TOP + '/tests/1/2')") != 0) {
965
a518664b20a0 irccd: move javascript API from library to frontend
David Demelier <markand@malikania.fr>
parents: 963
diff changeset
228 puts(duk_to_string(ctx, -1));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 GREATEST_FAIL();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
231
1037
8f8ce47aba8a make: switch to GNU make
David Demelier <markand@malikania.fr>
parents: 985
diff changeset
232 GREATEST_ASSERT_EQ(0, stat(TOP "/tests/1/2", &st));
963
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
233
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 GREATEST_PASS();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
236
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 GREATEST_SUITE(suite_free)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 GREATEST_SET_SETUP_CB(setup, NULL);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 GREATEST_SET_TEARDOWN_CB(teardown, NULL);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 GREATEST_RUN_TEST(free_find);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 GREATEST_RUN_TEST(free_remove);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 GREATEST_RUN_TEST(free_mkdir);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 }
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
245
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 GREATEST_MAIN_DEFS();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
247
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 int
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 main(int argc, char **argv)
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 {
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 GREATEST_MAIN_BEGIN();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 GREATEST_RUN_SUITE(suite_object);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 GREATEST_RUN_SUITE(suite_free);
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 GREATEST_MAIN_END();
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
255
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 return 0;
371e1cc2c697 tests: add 80% of the Javascript API
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 }