]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Proper error if the conf file is invalid instead of fatal error 817/head
authorArthurHoaro <arthur@hoa.ro>
Sun, 12 Mar 2017 15:09:34 +0000 (16:09 +0100)
committerArthurHoaro <arthur@hoa.ro>
Sun, 12 Mar 2017 15:09:34 +0000 (16:09 +0100)
Error:

An error occurred while parsing configuration JSON file (data/config.json.php): error code #4
➜ Syntax error
Please check your JSON syntax (without PHP comment tags) using a JSON lint tool such as jsonlint.com.

application/config/ConfigJson.php
application/config/ConfigManager.php
tests/config/ConfigJsonTest.php

index 30908d90db436574f9585d20d6b437f29d56e363..9ef2ef562634bb346cf398b290093cbd02e66926 100644 (file)
@@ -21,8 +21,14 @@ class ConfigJson implements ConfigIO
         $data = str_replace(self::getPhpSuffix(), '', $data);
         $data = json_decode($data, true);
         if ($data === null) {
-            $error = json_last_error();
-            throw new \Exception('An error occurred while parsing JSON file: error code #'. $error);
+            $errorCode = json_last_error();
+            $error  = 'An error occurred while parsing JSON configuration file ('. $filepath .'): error code #';
+            $error .= $errorCode. '<br>➜ <code>' . json_last_error_msg() .'</code>';
+            if ($errorCode === JSON_ERROR_SYNTAX) {
+                $error .= '<br>Please check your JSON syntax (without PHP comment tags) using a JSON lint tool such as ';
+                $error .= '<a href="http://jsonlint.com/">jsonlint.com</a>.';
+            }
+            throw new \Exception($error);
         }
         return $data;
     }
index f2097410364db285236fdd5013bcfa8729882e35..e98af8ab0fe5c8892b36bca44715c499e252e20f 100644 (file)
@@ -81,7 +81,11 @@ class ConfigManager
      */
     protected function load()
     {
-        $this->loadedConfig = $this->configIO->read($this->getConfigFileExt());
+        try {
+            $this->loadedConfig = $this->configIO->read($this->getConfigFileExt());
+        } catch (\Exception $e) {
+            die($e->getMessage());
+        }
         $this->setDefaultValues();
     }
 
index 3527f83d67af1bae0816f61ea8bd164d1cfb4b99..d237bc80cdacd1a7919399f68cad57ece869a470 100644 (file)
@@ -40,7 +40,7 @@ class ConfigJsonTest extends \PHPUnit_Framework_TestCase
      * Read a non existent config file -> empty array.
      *
      * @expectedException \Exception
-     * @expectedExceptionMessage An error occurred while parsing JSON file: error code #4
+     * @expectedExceptionMessageRegExp  /An error occurred while parsing JSON configuration file \([\w\/\.]+\): error code #4/
      */
     public function testReadInvalidJson()
     {