reverted: --- b/core/modules/image/src/Tests/ImageFieldCreationTrait.php +++ /dev/null @@ -1,68 +0,0 @@ - $name, - 'entity_type' => 'node', - 'type' => 'image', - 'settings' => $storage_settings, - 'cardinality' => !empty($storage_settings['cardinality']) ? $storage_settings['cardinality'] : 1, - ))->save(); - - $field_config = FieldConfig::create([ - 'field_name' => $name, - 'label' => $name, - 'entity_type' => 'node', - 'bundle' => $type_name, - 'required' => !empty($field_settings['required']), - 'settings' => $field_settings, - 'description' => $description, - ]); - $field_config->save(); - - entity_get_form_display('node', $type_name, 'default') - ->setComponent($name, array( - 'type' => 'image_image', - 'settings' => $widget_settings, - )) - ->save(); - - entity_get_display('node', $type_name, 'default') - ->setComponent($name, array( - 'type' => 'image', - 'settings' => $formatter_settings, - )) - ->save(); - - return $field_config; - } - -} diff -u b/core/modules/image/src/Tests/ImageFieldTestBase.php b/core/modules/image/src/Tests/ImageFieldTestBase.php --- b/core/modules/image/src/Tests/ImageFieldTestBase.php +++ b/core/modules/image/src/Tests/ImageFieldTestBase.php @@ -2,6 +2,7 @@ namespace Drupal\image\Tests; +use Drupal\Tests\image\Kernel\ImageFieldCreationTrait; use Drupal\simpletest\WebTestBase; /** diff -u b/core/modules/image/src/Tests/QuickEditImageControllerTest.php b/core/modules/image/src/Tests/QuickEditImageControllerTest.php --- b/core/modules/image/src/Tests/QuickEditImageControllerTest.php +++ b/core/modules/image/src/Tests/QuickEditImageControllerTest.php @@ -2,6 +2,7 @@ namespace Drupal\image\Tests; +use Drupal\Tests\image\Kernel\ImageFieldCreationTrait; use Drupal\simpletest\WebTestBase; /** diff -u b/core/modules/image/tests/src/FunctionalJavascript/QuickEditImageTest.php b/core/modules/image/tests/src/FunctionalJavascript/QuickEditImageTest.php --- b/core/modules/image/tests/src/FunctionalJavascript/QuickEditImageTest.php +++ b/core/modules/image/tests/src/FunctionalJavascript/QuickEditImageTest.php @@ -4,8 +4,8 @@ use Drupal\file\Entity\File; use Drupal\FunctionalJavascriptTests\JavascriptTestBase; -use Drupal\image\Tests\ImageFieldCreationTrait; -use Drupal\simpletest\TestFilesTrait; +use Drupal\Tests\image\Kernel\ImageFieldCreationTrait; +use Drupal\Tests\TestFileCreationTrait; /** * Tests the JavaScript functionality of the "image" in-place editor. @@ -15,7 +15,7 @@ class QuickEditImageTest extends JavascriptTestBase { use ImageFieldCreationTrait; - use TestFilesTrait; + use TestFileCreationTrait; /** * {@inheritdoc} reverted: --- b/core/modules/simpletest/src/TestFilesTrait.php +++ /dev/null @@ -1,117 +0,0 @@ -generatedTestFiles)) { - // Generate binary test files. - $lines = array(64, 1024); - $count = 0; - foreach ($lines as $line) { - simpletest_generate_file('binary-' . $count++, 64, $line, 'binary'); - } - - // Generate ASCII text test files. - $lines = array(16, 256, 1024, 2048, 20480); - $count = 0; - foreach ($lines as $line) { - simpletest_generate_file('text-' . $count++, 64, $line, 'text'); - } - - // Copy other test files from simpletest. - $original = drupal_get_path('module', 'simpletest') . '/files'; - $files = file_scan_directory($original, '/(html|image|javascript|php|sql)-.*/'); - foreach ($files as $file) { - file_unmanaged_copy($file->uri, PublicStream::basePath()); - } - - $this->generatedTestFiles = TRUE; - } - - $files = array(); - // Make sure type is valid. - if (in_array($type, array('binary', 'html', 'image', 'javascript', 'php', 'sql', 'text'))) { - $files = file_scan_directory('public://', '/' . $type . '\-.*/'); - - // If size is set then remove any files that are not of that size. - if ($size !== NULL) { - foreach ($files as $file) { - $stats = stat($file->uri); - if ($stats['size'] != $size) { - unset($files[$file->uri]); - } - } - } - } - usort($files, array($this, 'drupalCompareFiles')); - return $files; - } - - /** - * Compare two files based on size and file name. - * - * @param object $file1 - * An object with the properties 'uri', 'filename', and 'name'. - * @param object $file2 - * An object with the properties 'uri', 'filename', and 'name'. - * @return bool - * The comparison result based on size and file name. - */ - protected function drupalCompareFiles($file1, $file2) { - $compare_size = filesize($file1->uri) - filesize($file2->uri); - if ($compare_size) { - // Sort by file size. - return $compare_size; - } - else { - // The files were the same size, so sort alphabetically. - return strnatcmp($file1->name, $file2->name); - } - } - -} reverted: --- b/core/modules/simpletest/src/WebTestBase.php +++ a/core/modules/simpletest/src/WebTestBase.php @@ -22,6 +22,7 @@ use Drupal\Core\Session\AnonymousUserSession; use Drupal\Core\Session\UserSession; use Drupal\Core\Site\Settings; +use Drupal\Core\StreamWrapper\PublicStream; use Drupal\Core\Test\AssertMailTrait; use Drupal\Core\Url; use Drupal\system\Tests\Cache\AssertPageCacheContextsAndTagsTrait; @@ -57,9 +58,6 @@ createRole as drupalCreateRole; createAdminRole as drupalCreateAdminRole; } - use TestFilesTrait { - getTestFiles as drupalGetTestFiles; - } /** * The profile to install as a basis for testing. @@ -171,6 +169,11 @@ protected $sessionId = NULL; /** + * Whether the files were copied to the test files directory. + */ + protected $generatedTestFiles = FALSE; + + /** * The maximum number of redirects to follow when handling responses. */ protected $maximumRedirects = 5; @@ -331,6 +334,99 @@ } /** + * Gets a list of files that can be used in tests. + * + * The first time this method is called, it will call + * simpletest_generate_file() to generate binary and ASCII text files in the + * public:// directory. It will also copy all files in + * core/modules/simpletest/files to public://. These contain image, SQL, PHP, + * JavaScript, and HTML files. + * + * All filenames are prefixed with their type and have appropriate extensions: + * - text-*.txt + * - binary-*.txt + * - html-*.html and html-*.txt + * - image-*.png, image-*.jpg, and image-*.gif + * - javascript-*.txt and javascript-*.script + * - php-*.txt and php-*.php + * - sql-*.txt and sql-*.sql + * + * Any subsequent calls will not generate any new files, or copy the files + * over again. However, if a test class adds a new file to public:// that + * is prefixed with one of the above types, it will get returned as well, even + * on subsequent calls. + * + * @param $type + * File type, possible values: 'binary', 'html', 'image', 'javascript', + * 'php', 'sql', 'text'. + * @param $size + * (optional) File size in bytes to match. Defaults to NULL, which will not + * filter the returned list by size. + * + * @return + * List of files in public:// that match the filter(s). + */ + protected function drupalGetTestFiles($type, $size = NULL) { + if (empty($this->generatedTestFiles)) { + // Generate binary test files. + $lines = array(64, 1024); + $count = 0; + foreach ($lines as $line) { + simpletest_generate_file('binary-' . $count++, 64, $line, 'binary'); + } + + // Generate ASCII text test files. + $lines = array(16, 256, 1024, 2048, 20480); + $count = 0; + foreach ($lines as $line) { + simpletest_generate_file('text-' . $count++, 64, $line, 'text'); + } + + // Copy other test files from simpletest. + $original = drupal_get_path('module', 'simpletest') . '/files'; + $files = file_scan_directory($original, '/(html|image|javascript|php|sql)-.*/'); + foreach ($files as $file) { + file_unmanaged_copy($file->uri, PublicStream::basePath()); + } + + $this->generatedTestFiles = TRUE; + } + + $files = array(); + // Make sure type is valid. + if (in_array($type, array('binary', 'html', 'image', 'javascript', 'php', 'sql', 'text'))) { + $files = file_scan_directory('public://', '/' . $type . '\-.*/'); + + // If size is set then remove any files that are not of that size. + if ($size !== NULL) { + foreach ($files as $file) { + $stats = stat($file->uri); + if ($stats['size'] != $size) { + unset($files[$file->uri]); + } + } + } + } + usort($files, array($this, 'drupalCompareFiles')); + return $files; + } + + /** + * Compare two files based on size and file name. + */ + protected function drupalCompareFiles($file1, $file2) { + $compare_size = filesize($file1->uri) - filesize($file2->uri); + if ($compare_size) { + // Sort by file size. + return $compare_size; + } + else { + // The files were the same size, so sort alphabetically. + return strnatcmp($file1->name, $file2->name); + } + } + + /** * Log in a user with the internal browser. * * If a user is already logged in, then the current user is logged out before only in patch2: unchanged: --- /dev/null +++ b/core/modules/image/tests/src/Kernel/ImageFieldCreationTrait.php @@ -0,0 +1,70 @@ + $name, + 'entity_type' => 'node', + 'type' => 'image', + 'settings' => $storage_settings, + 'cardinality' => !empty($storage_settings['cardinality']) ? $storage_settings['cardinality'] : 1, + ))->save(); + + $field_config = FieldConfig::create([ + 'field_name' => $name, + 'label' => $name, + 'entity_type' => 'node', + 'bundle' => $type_name, + 'required' => !empty($field_settings['required']), + 'settings' => $field_settings, + 'description' => $description, + ]); + $field_config->save(); + + entity_get_form_display('node', $type_name, 'default') + ->setComponent($name, array( + 'type' => 'image_image', + 'settings' => $widget_settings, + )) + ->save(); + + entity_get_display('node', $type_name, 'default') + ->setComponent($name, array( + 'type' => 'image', + 'settings' => $formatter_settings, + )) + ->save(); + + return $field_config; + } + +}