summaryrefslogtreecommitdiffstats
path: root/rlz/lib
diff options
context:
space:
mode:
Diffstat (limited to 'rlz/lib')
-rw-r--r--rlz/lib/rlz_lib_test.cc19
-rw-r--r--rlz/lib/rlz_value_store.h3
2 files changed, 22 insertions, 0 deletions
diff --git a/rlz/lib/rlz_lib_test.cc b/rlz/lib/rlz_lib_test.cc
index 118f48c..2ab1bb3 100644
--- a/rlz/lib/rlz_lib_test.cc
+++ b/rlz/lib/rlz_lib_test.cc
@@ -20,6 +20,7 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "rlz/lib/rlz_lib.h"
+#include "rlz/lib/rlz_value_store.h"
#include "rlz/test/rlz_test_helpers.h"
#if defined(OS_WIN)
@@ -871,4 +872,22 @@ TEST_F(RlzLibTest, ConcurrentStoreAccessWithProcessExitsWhileLockHeld) {
EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER,
rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::INSTALL));
}
+
+TEST_F(RlzLibTest, LockAcquistionSucceedsButPlistCannotBeCreated) {
+ // See the comment at the top of WriteFails.
+ if (!rlz_lib::SupplementaryBranding::GetBrand().empty())
+ return;
+
+ // Create a directory where the rlz file is supposed to appear. This way,
+ // the lock file can be created successfully, but creation of the rlz file
+ // itself will fail.
+ int mkdir_result = mkdir(rlz_lib::testing::RlzPlistFilenameStr().c_str(),
+ 0500);
+ ASSERT_EQ(0, mkdir_result);
+
+ rlz_lib::SupplementaryBranding branding("TEST");
+ EXPECT_FALSE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER,
+ rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::INSTALL));
+}
+
#endif
diff --git a/rlz/lib/rlz_value_store.h b/rlz/lib/rlz_value_store.h
index d41421b..f45ac25 100644
--- a/rlz/lib/rlz_value_store.h
+++ b/rlz/lib/rlz_value_store.h
@@ -107,6 +107,9 @@ class ScopedRlzValueStoreLock {
namespace testing {
// Prefix |directory| to the path where the RLZ data file lives, for tests.
void SetRlzStoreDirectory(const FilePath& directory);
+
+// Returns the path of the plist file used as data store.
+std::string RlzPlistFilenameStr();
} // namespace testing
#endif // defined(OS_MACOSX)