Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(274)

Side by Side Diff: ports/glibc-compat/src/test.cc

Issue 1260083004: Add needed functions to glibc-compat for pkg (Closed) Base URL: https://chromium.googlesource.com/external/naclports.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* Copyright 2014 The Native Client Authors. All rights reserved. 1 /* Copyright 2014 The Native Client Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. */ 3 * found in the LICENSE file. */
4 4
5 #include <endian.h> 5 #include <endian.h>
6 #include <errno.h> 6 #include <errno.h>
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <netinet/in.h> 8 #include <netinet/in.h>
9 #include <stdlib.h> 9 #include <stdlib.h>
10 #include <sys/stat.h> 10 #include <sys/stat.h>
11 #include <sys/types.h> 11 #include <sys/types.h>
12 #include <sys/uio.h>
13 #include <fcntl.h>
14 #include <dirent.h>
15 #include <sys/file.h>
16 #include <err.h>
17 #include <time.h>
12 18
13 #ifndef __GLIBC__ 19 #ifndef __GLIBC__
14 #include <sys/endian.h> 20 #include <sys/endian.h>
15 #endif 21 #endif
16 22
17 #include "gtest/gtest.h" 23 #include "gtest/gtest.h"
18 24
19 TEST(TestMktemp, mkdtemp_errors) { 25 TEST(TestMktemp, mkdtemp_errors) {
20 char small[] = "small"; 26 char small[] = "small";
21 char missing_template[] = "missing_template"; 27 char missing_template[] = "missing_template";
22 char short_template_XXX[] = "short_template_XXX"; 28 char short_template_XXX[] = "short_template_XXX";
23 char not_XXXXXX_suffix[] = "not_XXXXXX_suffix"; 29 char not_XXXXXX_suffix[] = "not_XXXXXX_suffix";
24 ASSERT_EQ((char*)NULL, mkdtemp(small)); 30 ASSERT_EQ((char*)NULL, mkdtemp(small));
25 ASSERT_EQ(EINVAL, errno); 31 ASSERT_EQ(EINVAL, errno);
26 ASSERT_EQ((char*)NULL, mkdtemp(missing_template)); 32 ASSERT_EQ((char*)NULL, mkdtemp(missing_template));
27 ASSERT_EQ(EINVAL, errno); 33 ASSERT_EQ(EINVAL, errno);
28 ASSERT_EQ((char*)NULL, mkdtemp(short_template_XXX)); 34 ASSERT_EQ((char*)NULL, mkdtemp(short_template_XXX));
29 ASSERT_EQ(EINVAL, errno); 35 ASSERT_EQ(EINVAL, errno);
30 ASSERT_EQ((char*)NULL, mkdtemp(not_XXXXXX_suffix)); 36 ASSERT_EQ((char*)NULL, mkdtemp(not_XXXXXX_suffix));
31 ASSERT_EQ(EINVAL, errno); 37 ASSERT_EQ(EINVAL, errno);
32
33 } 38 }
34 39
35 TEST(TestMktemp, mkdtemp) { 40 TEST(TestMktemp, mkdtemp) {
36 char tempdir[] = "tempfile_XXXXXX"; 41 char tempdir[] = "tempfile_XXXXXX";
37 ASSERT_NE((char*)NULL, mkdtemp(tempdir)); 42 ASSERT_NE((char*)NULL, mkdtemp(tempdir));
38 // Check that tempname starts with the correct prefix but has been 43 // Check that tempname starts with the correct prefix but has been
39 // modified from the original. 44 // modified from the original.
40 ASSERT_EQ(0, strncmp("tempfile_", tempdir, strlen("tempfile_"))); 45 ASSERT_EQ(0, strncmp("tempfile_", tempdir, strlen("tempfile_")));
41 ASSERT_STRNE("tempfile_XXXXXX", tempdir); 46 ASSERT_STRNE("tempfile_XXXXXX", tempdir);
42 47
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 int n32 = htonl(num32); 90 int n32 = htonl(num32);
86 int h16 = ntohs(num16); 91 int h16 = ntohs(num16);
87 int h32 = ntohl(num32); 92 int h32 = ntohl(num32);
88 ASSERT_EQ(n16, htobe16(num16)); 93 ASSERT_EQ(n16, htobe16(num16));
89 ASSERT_EQ(n32, htobe32(num32)); 94 ASSERT_EQ(n32, htobe32(num32));
90 ASSERT_EQ(h16, betoh16(num16)); 95 ASSERT_EQ(h16, betoh16(num16));
91 ASSERT_EQ(h32, betoh32(num32)); 96 ASSERT_EQ(h32, betoh32(num32));
92 } 97 }
93 #endif 98 #endif
94 99
100 // readv is not implemented in glibc.
101 #ifndef __GLIBC__
102 TEST(TestReadv, readv_writev) {
103 struct iovec write_iov[3];
104 struct iovec read_iov[3];
105 char first[28], second[28], third[12];
106 read_iov[0].iov_base = first;
107 read_iov[0].iov_len = 28;
Sam Clegg 2015/07/28 00:14:13 sizeof(first)?
zhitingzhu 2015/07/28 02:05:41 Done.
108 read_iov[1].iov_base = second;
109 read_iov[1].iov_len = 28;
110 read_iov[2].iov_base = third;
111 read_iov[2].iov_len = 12;
112 int i = 0;
113 ssize_t ret = 0;
114 char str1[] = "abcdefghijklmnopqrstuvwxyz\n";
Sam Clegg 2015/07/28 00:14:13 Why not 'const char*'?
zhitingzhu 2015/07/28 02:05:41 Done.
115 char str2[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n";
116 char str3[] = "0123456789\n";
117 write_iov[0].iov_base = str1;
118 write_iov[0].iov_len = 28;
Sam Clegg 2015/07/28 00:14:13 sizeof?
zhitingzhu 2015/07/28 02:05:41 Done.
119 write_iov[1].iov_base = str2;
120 write_iov[1].iov_len = 28;
121 write_iov[2].iov_base = str3;
122 write_iov[2].iov_len = 12;
123 int fd = open("test.txt", O_CREAT | O_WRONLY, S_IRUSR|S_IWUSR);
124 ASSERT_NE(fd, -1);
125 ret = writev(fd, write_iov, 3);
126 ASSERT_NE(ret, -1);
127 ASSERT_NE(close(fd), -1);
128 fd = open("test.txt", O_RDONLY);
129 ASSERT_NE(fd, -1);
130 ret = readv(fd, read_iov, 3);
131 ASSERT_NE(ret, -1);
132 ASSERT_STREQ("abcdefghijklmnopqrstuvwxyz\n",
Sam Clegg 2015/07/28 00:14:13 Use str1 here?
zhitingzhu 2015/07/28 02:05:41 Done.
133 (const char*)read_iov[0].iov_base);
134 ASSERT_EQ(28, read_iov[0].iov_len);
135 ASSERT_STREQ("ABCDEFGHIJKLMNOPQRSTUVWXYZ\n",
136 (const char*)read_iov[1].iov_base);
137 ASSERT_EQ(28, read_iov[1].iov_len);
138 ASSERT_STREQ("0123456789\n", (const char*)read_iov[2].iov_base);
139 ASSERT_EQ(12, read_iov[2].iov_len);
140 ASSERT_NE(close(fd), -1);
141 ASSERT_NE(-1, unlink("test.txt"));
142 }
143 #endif
144
145 // No tests for funtions ended with at, e.g. openat, fts_*
146 // fchdir is not implemented in sel_ldr
147 #if 0
148 TEST(TestOpenat, openat) {
149 ASSERT_NE(-1, mkdir("t1", S_IRWXU | S_IRWXG | S_IXGRP));
150 DIR* dir = opendir("t1");
151 ASSERT_NE((DIR*)NULL, dir);
152 int fd_t1 = dirfd(dir);
153 ASSERT_NE(-1, fd_t1);
154 int fd_t2 = openat(fd_t1, "test.txt", O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
155 ASSERT_NE(-1, fd_t2);
156 ASSERT_EQ(4, write(fd_t2, "test", 4));
157 ASSERT_NE(-1, close(fd_t2));
158 ASSERT_NE(-1, close(fd_t1));
159 ASSERT_NE(-1, unlink("t1/test.txt"));
160 ASSERT_NE(-1, rmdir("t1"));
161 }
162 #endif
163
95 TEST(TestLockf, lockf) { 164 TEST(TestLockf, lockf) {
96 // The fcntl() method underlying lockf() is not implemented in NaCl. 165 // The fcntl() method underlying lockf() is not implemented in NaCl.
97 ASSERT_EQ(-1, lockf(1, F_LOCK, 1)); 166 ASSERT_EQ(-1, lockf(1, F_LOCK, 1));
98 ASSERT_EQ(ENOSYS, errno); 167 ASSERT_EQ(ENOSYS, errno);
99 ASSERT_EQ(-1, lockf(1, F_TLOCK, 1)); 168 ASSERT_EQ(-1, lockf(1, F_TLOCK, 1));
100 ASSERT_EQ(ENOSYS, errno); 169 ASSERT_EQ(ENOSYS, errno);
101 ASSERT_EQ(-1, lockf(1, F_ULOCK, 1)); 170 ASSERT_EQ(-1, lockf(1, F_ULOCK, 1));
102 ASSERT_EQ(ENOSYS, errno); 171 ASSERT_EQ(ENOSYS, errno);
103 } 172 }
104 173
174 TEST(TestFlock, flock) {
175 // The fcntl() method underlying flock() is not implemented in NaCl.
176 ASSERT_EQ(-1, flock(1, LOCK_SH));
177 ASSERT_EQ(ENOSYS, errno);
178 ASSERT_EQ(-1, flock(1, LOCK_EX));
179 ASSERT_EQ(ENOSYS, errno);
180 ASSERT_EQ(-1, flock(1, LOCK_UN));
181 ASSERT_EQ(ENOSYS, errno);
182 }
183
184 // Can't tested err as it will let the test program fail.
Sam Clegg 2015/07/28 00:14:13 Can you elaborate or re-phrase this comment? Its
zhitingzhu 2015/07/28 02:05:41 Done.
185
186 TEST(TestTimegm, timegm) {
187 struct tm tmp;
188 tmp.tm_sec = 1;
189 tmp.tm_min = 0;
190 tmp.tm_hour = 0;
191 tmp.tm_mday = 3;
192 tmp.tm_mon = 4 - 1;
193 tmp.tm_year = 2015 - 1900;
194 tmp.tm_isdst = -1;
195 time_t tt = timegm(&tmp);
196 ASSERT_EQ(1428019201, tt);
197 }
198
105 int main(int argc, char** argv) { 199 int main(int argc, char** argv) {
106 setenv("TERM", "xterm-256color", 0); 200 setenv("TERM", "xterm-256color", 0);
107 ::testing::InitGoogleTest(&argc, argv); 201 ::testing::InitGoogleTest(&argc, argv);
108 return RUN_ALL_TESTS(); 202 return RUN_ALL_TESTS();
109 } 203 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698