diff options
Diffstat (limited to 'test/plugins')
| -rw-r--r-- | test/plugins/filesystem/FileLocatorTest.cpp | 33 | 
1 files changed, 25 insertions, 8 deletions
diff --git a/test/plugins/filesystem/FileLocatorTest.cpp b/test/plugins/filesystem/FileLocatorTest.cpp index beb091d..75d9f33 100644 --- a/test/plugins/filesystem/FileLocatorTest.cpp +++ b/test/plugins/filesystem/FileLocatorTest.cpp @@ -26,7 +26,7 @@  namespace fs = boost::filesystem;  namespace ousia { -TEST(FileLocator, testAddSearchPath) +TEST(FileLocator, addSearchPath)  {  	FileLocator instance;  	ASSERT_EQ(0U, instance.getSearchPaths().size()); @@ -61,9 +61,9 @@ TEST(FileLocator, testAddSearchPath)  	// Adding the path another time should not increase the number of found  	// paths, except for new resource types -	instance.addSearchPath(canonicalPath, -	                       {ResourceType::DOMAIN_DESC, ResourceType::SCRIPT, -	                        ResourceType::TYPESYSTEM, ResourceType::ATTRIBUTES}); +	instance.addSearchPath( +	    canonicalPath, {ResourceType::DOMAIN_DESC, ResourceType::SCRIPT, +	                    ResourceType::TYPESYSTEM, ResourceType::ATTRIBUTES});  	ASSERT_EQ(4U, instance.getSearchPaths().size()); @@ -122,7 +122,7 @@ void assert_not_located(const FileLocator &instance, const std::string &path,  	ASSERT_FALSE(res.isValid());  } -TEST(FileLocator, testLocate) +TEST(FileLocator, locate)  {  	FileLocator locator;  	locator.addUnittestSearchPath("filesystem"); @@ -142,7 +142,7 @@ TEST(FileLocator, testLocate)  	assert_not_located(locator, "c.txt", "", ResourceType::SCRIPT);  } -TEST(FileLocator, testLocateRelative) +TEST(FileLocator, locateRelative)  {  	FileLocator locator;  	locator.addUnittestSearchPath("filesystem"); @@ -160,6 +160,25 @@ TEST(FileLocator, testLocateRelative)  	ASSERT_TRUE(locator.locate(resD, "d.txt", ResourceType::UNKNOWN, resC));  	ASSERT_FALSE(locator.locate(resD, "./d.txt", ResourceType::UNKNOWN, resA));  	ASSERT_TRUE(locator.locate(resD, "./d.txt", ResourceType::UNKNOWN, resC)); + +	/* +	 * There are two e.txt, one in filesystem, one in b. If we simply look for +	 * e.txt, filesystem/b/e.txt will be returned, because search paths added +	 * last take precedence. This will be the case even if we search relative +	 * to a.txt, which is in filesystem. Only if we look for ./e.txt relative to +	 * a.txt will e.txt be returned. +	 */ +	Resource resE; +	ASSERT_TRUE(locator.locate(resE, "e.txt", ResourceType::UNKNOWN)); +	fs::path ePath{resE.getLocation()}; +	ASSERT_EQ("b", ePath.parent_path().filename()); +	ASSERT_TRUE(locator.locate(resE, "e.txt", ResourceType::UNKNOWN, resA)); +	ePath = resE.getLocation(); +	ASSERT_EQ("b", ePath.parent_path().filename()); +	ASSERT_TRUE(locator.locate(resE, "./e.txt", ResourceType::UNKNOWN, resA)); +	ePath = resE.getLocation(); +	ASSERT_EQ("filesystem", ePath.parent_path().filename()); +	ASSERT_FALSE(locator.locate(resE, "../e.txt", ResourceType::UNKNOWN, resA));  }  TEST(FileLocator, testStream) @@ -190,6 +209,4 @@ TEST(FileLocator, testDefaultSearchPaths)  	assert_located(locator, "typesystem/color.oxm", "", ResourceType::UNKNOWN);  	assert_located(locator, "color.oxm", "", ResourceType::TYPESYSTEM);  } - -  }  | 
