Move IsDir() to utils.

This patch moves the generic IsDir() function to the utils.cc file
where other similar functions reside. It also adds unit tests for it.

BUG=None
TEST=Added unittests.

Change-Id: Iba05059f72a1156bb5f19ae0624ae7025af4c522
Reviewed-on: https://chromium-review.googlesource.com/200691
Tested-by: Alex Deymo <deymo@chromium.org>
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
diff --git a/utils_unittest.cc b/utils_unittest.cc
index 77a7d9b..3103349 100644
--- a/utils_unittest.cc
+++ b/utils_unittest.cc
@@ -198,6 +198,20 @@
   EXPECT_TRUE(utils::RecursiveUnlinkDir(temp_dir));
 }
 
+TEST(UtilsTest, IsDirTest) {
+  string temp_dir;
+  EXPECT_TRUE(utils::MakeTempDirectory("isdir-test.XXXXXX", &temp_dir));
+  string temp_file = temp_dir + "temp-file";
+  EXPECT_TRUE(utils::WriteFile(temp_file.c_str(), "", 0));
+  string temp_symlink = temp_dir + "temp-symlink";
+  EXPECT_EQ(0, symlink(temp_dir.c_str(), temp_symlink.c_str()));
+  EXPECT_TRUE(utils::IsDir(temp_dir.c_str()));
+  EXPECT_FALSE(utils::IsDir(temp_file.c_str()));
+  EXPECT_FALSE(utils::IsDir(temp_symlink.c_str()));
+  EXPECT_FALSE(utils::IsDir("/non/existent/path"));
+  ASSERT_TRUE(utils::RecursiveUnlinkDir(temp_dir));
+}
+
 TEST(UtilsTest, TempFilenameTest) {
   const string original = "/foo.XXXXXX";
   const string result = utils::TempFilename(original);