@@ -19,9 +19,8 @@ class DrupalWatchdog extends Module {
1919   * @var array 
2020   */ 
2121  protected  $ config
22-     'channels '  => [
23-       'php '  => 'notice ' ,
24-     ],
22+     'channels '  => [],
23+     'level '  => 'ERROR ' ,
2524  ];
2625
2726  /** 
@@ -48,32 +47,69 @@ public function _beforeSuite($settings = []) { // @codingStandardsIgnoreLine
4847      // Clear log entries from the database log. 
4948      \Drupal::database ()->truncate ('watchdog ' )->execute ();
5049    }
50+     else  {
51+       $ this fail ('Database loging is not enabled. ' );
52+     }
5153  }
5254
5355  /** 
54-    * Tear down after tests.  
56+    * {@inheritdoc}  
5557   */ 
5658  public  function  _afterSuite () { // @codingStandardsIgnoreLine 
57-     if  (\Drupal::moduleHandler ()->moduleExists ('dblog ' )) {
58-       foreach  ($ this config ['channels ' ] as  $ channel$ level
59+     $ channels$ this _getConfig ('channels ' );
60+     if  (!empty ($ channelsis_array ($ channels
61+       foreach  ($ this _getConfig ('channels ' ) as  $ channel$ level
5962        if  (is_string ($ levelempty ($ this logLevels [strtoupper ($ level
60-           // Load any database log entries of level WARNING or more serious. 
61-           $ querydatabase ()->select ('watchdog ' , 'w ' );
62-           $ queryfields ('w ' , ['type ' , 'severity ' , 'message ' , 'variables ' ])
63-             ->condition ('severity ' , $ this logLevels [strtoupper ($ level'<= ' )
64-             ->condition ('type ' , $ channel
65-           $ result$ queryexecute ();
66-           foreach  ($ resultas  $ row
67-             // Build a readable message and declare a failure. 
68-             $ variablesunserialize ($ rowvariables );
69-             $ message$ rowtype  . ' -  ' ;
70-             $ messagegetLevels ()[$ rowseverity ] . ':  ' ;
71-             $ messaget (Xss::filterAdmin ($ rowmessage ), $ variablesrender (); // @codingStandardsIgnoreLine 
72-             $ this fail ($ message
73-           }
63+           $ this processResult ($ this getLogResults ($ level$ channel
7464        }
7565      }
7666    }
67+     if  ($ level$ this _getConfig ('level ' ) && is_string ($ levelisset ($ this logLevels [strtoupper ($ level
68+       $ this processResult ($ this getLogResults ($ level
69+     }
70+   }
71+ 
72+   /** 
73+    * Returns query result of log messages. 
74+    * 
75+    * @param string $level 
76+    *   Log level. 
77+    * @param string $channel 
78+    *   Log channel. 
79+    * 
80+    * @return \Drupal\Core\Database\StatementInterface|null 
81+    *   Query result. 
82+    */ 
83+   private  function  getLogResults ($ level$ channelNULL ) {
84+     $ querydatabase ()->select ('watchdog ' , 'w ' );
85+     $ queryfields ('w ' , ['type ' , 'severity ' , 'message ' , 'variables ' ])
86+       ->condition ('severity ' , $ this logLevels [strtoupper ($ level'<= ' );
87+ 
88+     if  ($ channel
89+       $ querycondition ('type ' , $ channel
90+     }
91+     return  $ queryexecute ();
92+   }
93+ 
94+   /** 
95+    * Process log results. 
96+    * 
97+    * @param mixed $result 
98+    *   Query result. 
99+    */ 
100+   protected  function  processResult ($ result
101+     $ messages
102+     foreach  ($ resultas  $ row
103+       // Build a readable message and declare a failure. 
104+       $ variablesunserialize ($ rowvariables );
105+       $ message$ rowtype  . ' -  ' ;
106+       $ messagegetLevels ()[$ rowseverity ] . ':  ' ;
107+       $ messaget (Xss::filterAdmin ($ rowmessage ), $ variablesrender (); // @codingStandardsIgnoreLine 
108+       $ messages$ message
109+     }
110+     if  (!empty ($ messages
111+       $ this fail (implode (PHP_EOL , $ messages
112+     }
77113  }
78114
79115}
0 commit comments