| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | 
							- <?php
 
- namespace Drupal\KernelTests;
 
- use Drupal\Component\Diff\Diff;
 
- /**
 
-  * Trait to help with diffing config.
 
-  */
 
- trait AssertConfigTrait {
 
-   /**
 
-    * Ensures that a specific config diff does not contain unwanted changes.
 
-    *
 
-    * @param \Drupal\Component\Diff\Diff $result
 
-    *   The diff result for the passed in config name.
 
-    * @param string $config_name
 
-    *   The config name to check.
 
-    * @param array $skipped_config
 
-    *   An array of skipped config, keyed by string. If the value is TRUE, the
 
-    *   entire file will be ignored, otherwise it's an array of strings which are
 
-    *   ignored.
 
-    *
 
-    * @throws \Exception
 
-    *   Thrown when a configuration is different.
 
-    */
 
-   protected function assertConfigDiff(Diff $result, $config_name, array $skipped_config) {
 
-     foreach ($result->getEdits() as $op) {
 
-       switch (get_class($op)) {
 
-         case 'Drupal\Component\Diff\Engine\DiffOpCopy':
 
-           // Nothing to do, a copy is what we expect.
 
-           break;
 
-         case 'Drupal\Component\Diff\Engine\DiffOpDelete':
 
-         case 'Drupal\Component\Diff\Engine\DiffOpChange':
 
-           // It is not part of the skipped config, so we can directly throw the
 
-           // exception.
 
-           if (!in_array($config_name, array_keys($skipped_config))) {
 
-             throw new \Exception($config_name . ': ' . var_export($op, TRUE));
 
-           }
 
-           // Allow to skip entire config files.
 
-           if ($skipped_config[$config_name] === TRUE) {
 
-             continue;
 
-           }
 
-           // Allow to skip some specific lines of imported config files.
 
-           // Ensure that the only changed lines are the ones we marked as
 
-           // skipped.
 
-           $all_skipped = TRUE;
 
-           $changes = get_class($op) == 'Drupal\Component\Diff\Engine\DiffOpDelete' ? $op->orig : $op->closing;
 
-           foreach ($changes as $closing) {
 
-             // Skip some of the changes, as they are caused by module install
 
-             // code.
 
-             $found = FALSE;
 
-             if (!empty($skipped_config[$config_name])) {
 
-               foreach ($skipped_config[$config_name] as $line) {
 
-                 if (strpos($closing, $line) !== FALSE) {
 
-                   $found = TRUE;
 
-                   break;
 
-                 }
 
-               }
 
-             }
 
-             $all_skipped = $all_skipped && $found;
 
-           }
 
-           if (!$all_skipped) {
 
-             throw new \Exception($config_name . ': ' . var_export($op, TRUE));
 
-           }
 
-           break;
 
-         case 'Drupal\Component\Diff\Engine\DiffOpAdd':
 
-           // The _core property does not exist in the default config.
 
-           if ($op->closing[0] === '_core:') {
 
-             continue;
 
-           }
 
-           foreach ($op->closing as $closing) {
 
-             // The UUIDs don't exist in the default config.
 
-             if (strpos($closing, 'uuid: ') === 0) {
 
-               continue;
 
-             }
 
-             throw new \Exception($config_name . ': ' . var_export($op, TRUE));
 
-           }
 
-           break;
 
-         default:
 
-           throw new \Exception($config_name . ': ' . var_export($op, TRUE));
 
-       }
 
-     }
 
-   }
 
- }
 
 
  |