#include <sys/stat.h>
#include <sys/types.h>
-#include <fcntl.h>
#include <system_error>
#include <boost/algorithm/string.hpp>
-#include <folly/Memory.h>
#include <glog/logging.h>
-#include <gtest/gtest.h>
+
+#include <folly/Memory.h>
+#include <folly/portability/Environment.h>
+#include <folly/portability/Fcntl.h>
+#include <folly/portability/GTest.h>
using namespace folly;
using namespace folly::test;
EXPECT_EQ(1, r);
}
- // The file must have been closed. This assumes that no other thread
- // has opened another file in the meanwhile, which is a sane assumption
- // to make in this test.
- ssize_t r = write(fd, &c, 1);
- int savedErrno = errno;
- EXPECT_EQ(-1, r);
- EXPECT_EQ(EBADF, savedErrno);
+ msvcSuppressAbortOnInvalidParams([&] {
+ // The file must have been closed. This assumes that no other thread
+ // has opened another file in the meanwhile, which is a sane assumption
+ // to make in this test.
+ ssize_t r = write(fd, &c, 1);
+ int savedErrno = errno;
+ EXPECT_EQ(-1, r);
+ EXPECT_EQ(EBADF, savedErrno);
+ });
}
TEST(TemporaryFile, Prefix) {
EXPECT_TRUE(fs::is_directory(path));
fs::path fp = path / "bar";
- int fd = open(fp.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd = open(fp.string().c_str(), O_RDWR | O_CREAT | O_TRUNC, 0666);
EXPECT_NE(fd, -1);
close(fd);
expectTempdirExists(d);
expectTempdirExists(d2);
- dir = std::make_unique<TemporaryDirectory>(std::move(d));
+ dir = folly::make_unique<TemporaryDirectory>(std::move(d));
dir2 = std::move(d2);
}
}
TEST(CaptureFD, GlogPatterns) {
- CaptureFD stderr(2);
+ CaptureFD err(fileno(stderr));
LOG(INFO) << "All is well";
- EXPECT_NO_PCRE_MATCH(glogErrOrWarnPattern(), stderr.readIncremental());
+ EXPECT_NO_PCRE_MATCH(glogErrOrWarnPattern(), err.readIncremental());
{
LOG(ERROR) << "Uh-oh";
- auto s = stderr.readIncremental();
+ auto s = err.readIncremental();
EXPECT_PCRE_MATCH(glogErrorPattern(), s);
EXPECT_NO_PCRE_MATCH(glogWarningPattern(), s);
EXPECT_PCRE_MATCH(glogErrOrWarnPattern(), s);
}
{
LOG(WARNING) << "Oops";
- auto s = stderr.readIncremental();
+ auto s = err.readIncremental();
EXPECT_NO_PCRE_MATCH(glogErrorPattern(), s);
EXPECT_PCRE_MATCH(glogWarningPattern(), s);
EXPECT_PCRE_MATCH(glogErrOrWarnPattern(), s);
TEST(CaptureFD, ChunkCob) {
std::vector<std::string> chunks;
{
- CaptureFD stderr(2, [&](StringPiece p) {
+ CaptureFD err(fileno(stderr), [&](StringPiece p) {
chunks.emplace_back(p.str());
switch (chunks.size()) {
case 1:
});
LOG(INFO) << "foo";
LOG(INFO) << "bar";
- EXPECT_PCRE_MATCH(".*foo.*bar.*", stderr.read());
- auto chunk = stderr.readIncremental();
+ EXPECT_PCRE_MATCH(".*foo.*bar.*", err.read());
+ auto chunk = err.readIncremental();
EXPECT_EQ(chunks.at(0), chunk);
LOG(INFO) << "baz";
- EXPECT_PCRE_MATCH(".*foo.*bar.*baz.*", stderr.read());
+ EXPECT_PCRE_MATCH(".*foo.*bar.*baz.*", err.read());
}
EXPECT_EQ(2, chunks.size());
}
auto key = "hahahahaha";
EXPECT_EQ(nullptr, getenv(key));
+ PCHECK(0 == setenv(key, "", true));
+ EXPECT_STREQ("", getenv(key));
+ PCHECK(0 == unsetenv(key));
+ EXPECT_EQ(nullptr, getenv(key));
+
auto saver = make_unique<EnvVarSaver>();
PCHECK(0 == setenv(key, "blah", true));
EXPECT_EQ("blah", std::string{getenv(key)});
}
TEST_F(EnvVarSaverTest, ExampleExisting) {
- auto key = "USER";
+ auto key = "PATH";
EXPECT_NE(nullptr, getenv(key));
auto value = std::string{getenv(key)};
}
TEST_F(EnvVarSaverTest, ExampleDeleting) {
- auto key = "USER";
+ auto key = "PATH";
EXPECT_NE(nullptr, getenv(key));
auto value = std::string{getenv(key)};