Unverified Commit 0865322d authored by Alex Pott's avatar Alex Pott
Browse files

Issue #2909805 by googletorp, fgm, dagmar, ankithashetty: LogMessageParser...

Issue #2909805 by googletorp, fgm, dagmar, ankithashetty: LogMessageParser breaks messages containing braces

(cherry picked from commit f6531023)
parent 7a5d5cdd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ public function parseMessagePlaceholders(&$message, array &$context) {
      $has_psr3 = TRUE;
      // Transform PSR3 style messages containing placeholders to
      // \Drupal\Component\Render\FormattableMarkup style.
      $message = preg_replace('/\{(.*)\}/U', '@$1', $message);
      $message = preg_replace('/\{([^\{}]*)\}/U', '@$1', $message);
    }
    foreach ($context as $key => $variable) {
      // PSR3 style placeholders.
+17 −0
Original line number Diff line number Diff line
@@ -245,6 +245,23 @@ public function testLogEventPageWithMissingInfo() {
    $this->assertSession()->linkNotExists($request_uri);
  }

  /**
   * Test that twig errors are displayed correctly.
   */
  public function testMessageParsing() {
    $this->drupalLogin($this->adminUser);
    // Log a common twig error with {{ }} and { } variables.
    \Drupal::service('logger.factory')->get("php")
      ->error('Incorrect parameter {{foo}} in path {path}: {value}',
        ['foo' => 'bar', 'path' => '/baz', 'value' => 'horse']
      );
    // View the log page to verify it's correct.
    $wid = \Drupal::database()->query('SELECT MAX(wid) FROM {watchdog}')->fetchField();
    $this->drupalGet('admin/reports/dblog/event/' . $wid);
    $this->assertSession()
      ->responseContains('Incorrect parameter {bar} in path /baz: horse');
  }

  /**
   * Verifies setting of the database log row limit.
   *
+2 −2
Original line number Diff line number Diff line
@@ -60,8 +60,8 @@ public function providerTestParseMessagePlaceholders() {
      ],
      // Message with double PSR3 style messages.
      [
        ['message' => 'Test {with} two {encapsuled} strings', 'context' => ['with' => 'together', 'encapsuled' => 'awesome']],
        ['message' => 'Test @with two @encapsuled strings', 'context' => ['@with' => 'together', '@encapsuled' => 'awesome']],
        ['message' => 'Test {with} two {{encapsuled}} strings', 'context' => ['with' => 'together', 'encapsuled' => 'awesome']],
        ['message' => 'Test @with two {@encapsuled} strings', 'context' => ['@with' => 'together', '@encapsuled' => 'awesome']],
      ],
    ];
  }