});
}
+TEST(TemporaryFile, EarlyClose) {
+ fs::path p;
+ {
+ TemporaryFile f;
+ p = f.path();
+ EXPECT_TRUE(fs::exists(p));
+ f.close();
+ EXPECT_EQ(-1, f.fd());
+ EXPECT_TRUE(fs::exists(p));
+ }
+ EXPECT_FALSE(fs::exists(p));
+}
+
TEST(TemporaryFile, Prefix) {
TemporaryFile f("Foo");
EXPECT_TRUE(f.path().is_absolute());
std::system_error);
}
+TEST(TemporaryFile, moveAssignment) {
+ TemporaryFile f;
+ int fd;
+
+ EXPECT_TRUE(f.path().is_absolute());
+ {
+ TemporaryFile g("Foo", ".");
+ EXPECT_NE(g.fd(), -1);
+ fd = g.fd();
+ f = std::move(g);
+ }
+ EXPECT_EQ(fs::path("."), f.path().parent_path());
+ EXPECT_EQ(f.fd(), fd);
+
+ TemporaryFile h = TemporaryFile("FooBar", ".");
+ EXPECT_NE(h.fd(), -1);
+}
+
+TEST(TemporaryFile, moveCtor) {
+ struct FooBar {
+ TemporaryFile f_;
+ explicit FooBar(TemporaryFile&& f) : f_(std::move(f)) {}
+ };
+ TemporaryFile g("Foo");
+ FooBar fb(std::move(g));
+ EXPECT_EQ(g.fd(), -1);
+ EXPECT_NE(fb.f_.fd(), -1);
+}
+
void testTemporaryDirectory(TemporaryDirectory::Scope scope) {
fs::path path;
{