Make BufferedFile::close public.

This commit is contained in:
Victor Zverovich
2014-05-05 17:38:39 -07:00
parent cada26d226
commit e44a2be8b9
2 changed files with 24 additions and 6 deletions
+18 -2
View File
@@ -350,6 +350,21 @@ TEST(BufferedFileTest, CloseErrorInDtor) {
}, FormatSystemErrorMessage(EBADF, "cannot close file") + "\n");
}
TEST(BufferedFileTest, Close) {
BufferedFile f = OpenFile(".travis.yml");
int fd = fileno(f.get());
f.close();
EXPECT_TRUE(f.get() == 0);
EXPECT_TRUE(IsClosed(fd));
}
TEST(BufferedFileTest, CloseError) {
BufferedFile f = OpenFile(".travis.yml");
close(fileno(f.get()));
EXPECT_SYSTEM_ERROR_NOASSERT(f.close(), EBADF, "cannot close file");
EXPECT_TRUE(f.get() == 0);
}
TEST(FileTest, DefaultCtor) {
File f;
EXPECT_EQ(-1, f.descriptor());
@@ -656,7 +671,8 @@ TEST(OutputRedirectTest, ErrorInDtor) {
write_dup.dup2(write_fd); // "undo" close or dtor of BufferedFile will fail
}
// TODO: compile both in C++11 & C++98 mode
#endif
// TODO: test retry on EINTR
#endif // FMT_USE_FILE_DESCRIPTORS
} // namespace