/*
- * Copyright 2014 Facebook, Inc.
+ * Copyright 2015 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
}
}
+TEST(File, SimpleStringPiece) {
+ char buf = 'x';
+ File f(StringPiece("/etc/hosts"));
+ EXPECT_NE(-1, f.fd());
+ EXPECT_EQ(1, ::read(f.fd(), &buf, 1));
+ f.close();
+ EXPECT_EQ(-1, f.fd());
+}
+
TEST(File, OwnsFd) {
// Wrap a file descriptor, make sure that ownsFd works
// We'll test that the file descriptor is closed by closing the writing
CHECK_ERR(r);
buf[r] = '\0';
- fs::path helper(buf);
- helper.remove_filename();
- helper /= "file_test_lock_helper";
+ // NOTE(agallagher): Our various internal build systems layout built
+ // binaries differently, so the two layouts below.
+ fs::path me(buf);
+ auto helper_basename = "file_test_lock_helper";
+ fs::path helper;
+ if (fs::exists(me.parent_path() / helper_basename)) {
+ helper = me.parent_path() / helper_basename;
+ } else if (fs::exists(
+ me.parent_path().parent_path() / helper_basename / helper_basename)) {
+ helper = me.parent_path().parent_path()
+ / helper_basename / helper_basename;
+ } else {
+ throw std::runtime_error(
+ folly::to<std::string>("cannot find helper ", helper_basename));
+ }
TemporaryFile tempFile;
File f(tempFile.fd());
testLock(SHARED, true);
}
}
-