TEST_F(INotifyTests, test_inotify_recursion) { // Create a non-registered publisher and subscriber. auto pub = std::make_shared<INotifyEventPublisher>(true); EventFactory::registerEventPublisher(pub); auto sub = std::make_shared<TestINotifyEventSubscriber>(); // Create a mock directory structure. createMockFileStructure(); // Create and test several subscriptions. auto sc = sub->createSubscriptionContext(); sc->path = kFakeDirectory + "/*"; sub->subscribe(&TestINotifyEventSubscriber::Callback, sc); // Trigger a configure step manually. pub->configure(); // Expect a single monitor on the root of the fake tree. EXPECT_EQ(pub->path_descriptors_.size(), 1U); EXPECT_EQ(pub->path_descriptors_.count(kFakeDirectory + "/"), 1U); RemoveAll(pub); // Make sure monitors are empty. EXPECT_EQ(pub->numDescriptors(), 0U); auto sc2 = sub->createSubscriptionContext(); sc2->path = kFakeDirectory + "/**"; sub->subscribe(&TestINotifyEventSubscriber::Callback, sc2); pub->configure(); // Expect only the directories to be monitored. EXPECT_EQ(pub->path_descriptors_.size(), 11U); RemoveAll(pub); // Use a directory structure that includes a loop. boost::system::error_code ec; fs::create_symlink(kFakeDirectory, kFakeDirectory + "/link", ec); auto sc3 = sub->createSubscriptionContext(); sc3->path = kFakeDirectory + "/**"; sub->subscribe(&TestINotifyEventSubscriber::Callback, sc3); pub->configure(); // Also expect canonicalized resolution (to prevent loops). EXPECT_EQ(pub->path_descriptors_.size(), 11U); RemoveAll(pub); // Remove mock directory structure. tearDownMockFileStructure(); EventFactory::deregisterEventPublisher("inotify"); }
void TearDown() { tearDownMockFileStructure(); }
TEST_F(ExtensionsTest, test_extension_module_search) { createMockFileStructure(); EXPECT_FALSE(loadModules(kFakeDirectory + "/root.txt")); EXPECT_FALSE(loadModules("/dir/does/not/exist")); tearDownMockFileStructure(); }
void TearDown() override { tearDownMockFileStructure(); }
TEST_F(ExtensionsTest, test_extension_module_search) { createMockFileStructure(); tearDownMockFileStructure(); }