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

Unified Diff: native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc

Issue 660353003: [NaCl SDK] nacl_io: Fix utime() on directories. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
diff --git a/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc b/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
index c42ba59cb0391989b72d09ab1a6c2cc7192da6f1..b0702bfbbe199f8dc405002fbc11647cc6e4bf13 100644
--- a/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
+++ b/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
@@ -549,13 +549,25 @@ TEST_F(KernelProxyTest, Lstat) {
EXPECT_EQ(0, ki_lstat("/foo", &buf));
}
+TEST_F(KernelProxyTest, OpenDirectory) {
+ // Opening a directory for read should succeed.
+ int fd = ki_open("/", O_RDONLY, 0);
+ ASSERT_GT(fd, -1);
+
+ // Opening a directory for write should fail.
+ EXPECT_EQ(-1, ki_open("/", O_RDWR, 0));
+ EXPECT_EQ(errno, EISDIR);
+ EXPECT_EQ(-1, ki_open("/", O_WRONLY, 0));
+ EXPECT_EQ(errno, EISDIR);
+}
+
TEST_F(KernelProxyTest, OpenWithMode) {
int fd = ki_open("/foo", O_CREAT | O_RDWR, 0723);
ASSERT_GT(fd, -1);
struct stat buf;
EXPECT_EQ(0, ki_lstat("/foo", &buf));
- EXPECT_EQ(0723, buf.st_mode & ~S_IFMT);
+ EXPECT_EQ(0723, buf.st_mode & 0777);
}
TEST_F(KernelProxyTest, CreateWronlyWithReadOnlyMode) {
@@ -586,6 +598,9 @@ TEST_F(KernelProxyTest, Utimes) {
// utime should work if the file is write-only.
EXPECT_EQ(0, ki_utimes("/dummy", times));
+ // utime should work directories (we can never be opened for write)
+ EXPECT_EQ(0, ki_utimes("/", times));
+
// or if the file is read-only.
EXPECT_EQ(0, ki_chmod("/dummy", 0444));
EXPECT_EQ(0, ki_utimes("/dummy", times));
@@ -648,10 +663,10 @@ TEST_F(KernelProxyTest, Umask) {
struct stat buf;
EXPECT_EQ(0, ki_stat("/foo", &buf));
- EXPECT_EQ(0444, buf.st_mode & ~S_IFMT);
+ EXPECT_EQ(0444, buf.st_mode & 0777);
EXPECT_EQ(0, ki_stat("/dir", &buf));
- EXPECT_EQ(0555, buf.st_mode & ~S_IFMT);
+ EXPECT_EQ(0555, buf.st_mode & 0777);
EXPECT_EQ(0222, ki_umask(0));
}

Powered by Google App Engine
This is Rietveld 408576698