summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_file_util_unittest.cc
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-09 21:28:19 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-09 21:28:19 +0000
commitf6f5b8bdad700644866d1097cf20807732aaf62b (patch)
tree43df29dce8655135ae179bd46ced2e92020ab7a3 /chrome/browser/extensions/extension_file_util_unittest.cc
parentef8413855c5e505d12843fc31eb69e4b5bead560 (diff)
downloadchromium_src-f6f5b8bdad700644866d1097cf20807732aaf62b.zip
chromium_src-f6f5b8bdad700644866d1097cf20807732aaf62b.tar.gz
chromium_src-f6f5b8bdad700644866d1097cf20807732aaf62b.tar.bz2
Improve error messages when a manifest is not readable or not valid JSON.
Review URL: http://codereview.chromium.org/251003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28601 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_file_util_unittest.cc')
-rw-r--r--chrome/browser/extensions/extension_file_util_unittest.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_file_util_unittest.cc b/chrome/browser/extensions/extension_file_util_unittest.cc
index 7230ecd..c462032 100644
--- a/chrome/browser/extensions/extension_file_util_unittest.cc
+++ b/chrome/browser/extensions/extension_file_util_unittest.cc
@@ -185,6 +185,41 @@ TEST(ExtensionFileUtil, CheckIllegalFilenamesReservedAndIllegal) {
&error));
}
+TEST(ExtensionFileUtil, LoadExtensionGivesHelpfullErrorOnMissingManifest) {
+ FilePath install_dir;
+ ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir));
+ install_dir = install_dir.AppendASCII("extensions")
+ .AppendASCII("bad")
+ .AppendASCII("Extensions")
+ .AppendASCII("dddddddddddddddddddddddddddddddd")
+ .AppendASCII("1.0");
+
+ std::string error;
+ scoped_ptr<Extension> extension(
+ extension_file_util::LoadExtension(install_dir, false, &error));
+ ASSERT_TRUE(extension == NULL);
+ ASSERT_FALSE(error.empty());
+ ASSERT_STREQ("Manifest file is missing or unreadable.", error.c_str());
+}
+
+TEST(ExtensionFileUtil, LoadExtensionGivesHelpfullErrorOnBadManifest) {
+ FilePath install_dir;
+ ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir));
+ install_dir = install_dir.AppendASCII("extensions")
+ .AppendASCII("bad")
+ .AppendASCII("Extensions")
+ .AppendASCII("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee")
+ .AppendASCII("1.0");
+
+ std::string error;
+ scoped_ptr<Extension> extension(
+ extension_file_util::LoadExtension(install_dir, false, &error));
+ ASSERT_TRUE(extension == NULL);
+ ASSERT_FALSE(error.empty());
+ ASSERT_STREQ("Manifest is not valid JSON. "
+ "Line: 2, column: 16, Syntax error.", error.c_str());
+}
+
// TODO(aa): More tests as motivation allows. Maybe steal some from
// ExtensionsService? Many of them could probably be tested here without the
// MessageLoop shenanigans.