diff --git a/dev/tests/integration/testsuite/Magento/Framework/App/Utility/FilesTest.php b/dev/tests/integration/testsuite/Magento/Framework/App/Utility/FilesTest.php
index a41fe148a4624..d054900bb8031 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/App/Utility/FilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/App/Utility/FilesTest.php
@@ -6,7 +6,6 @@
namespace Magento\Framework\App\Utility;
-use Magento\Framework\App\Utility\Files;
use Magento\Framework\Component\ComponentRegistrar;
class FilesTest extends \PHPUnit\Framework\TestCase
@@ -159,4 +158,24 @@ public function testReadLists()
}
$this->assertSame($expected, $actual);
}
+
+ /**
+ * Tests if underscores are allowed in extended static files in theme.
+ *
+ * @magentoComponentsDir Magento/Framework/App/Utility/_files/design
+ * @magentoAppIsolation enabled
+ * @magentoDbIsolation enabled
+ */
+ public function testAllowUnderscoreInExtendedFiles()
+ {
+ $this->assertNotEmpty(
+ array_filter(
+ $this->model->getStaticPreProcessingFiles('*.less'),
+ function ($resource) {
+ return $resource[3] === 'Module_Third_Party'
+ && $resource[4] === 'css/source/_module.less';
+ }
+ )
+ );
+ }
}
diff --git a/dev/tests/integration/testsuite/Magento/Framework/App/Utility/_files/design/frontend/Test/default/Module_Third_Party/web/css/source/_module.less b/dev/tests/integration/testsuite/Magento/Framework/App/Utility/_files/design/frontend/Test/default/Module_Third_Party/web/css/source/_module.less
new file mode 100644
index 0000000000000..5d97e4e29303f
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/App/Utility/_files/design/frontend/Test/default/Module_Third_Party/web/css/source/_module.less
@@ -0,0 +1,8 @@
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ .a-random-css-rule {
+ background: red;
+ }
+
diff --git a/dev/tests/integration/testsuite/Magento/Framework/App/Utility/_files/design/frontend/Test/default/registration.php b/dev/tests/integration/testsuite/Magento/Framework/App/Utility/_files/design/frontend/Test/default/registration.php
new file mode 100644
index 0000000000000..8837388781c28
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/App/Utility/_files/design/frontend/Test/default/registration.php
@@ -0,0 +1,9 @@
+
+
+
+ Test Default
+
diff --git a/lib/internal/Magento/Framework/App/Utility/Files.php b/lib/internal/Magento/Framework/App/Utility/Files.php
index 36993f1620e36..b0480510e7f68 100644
--- a/lib/internal/Magento/Framework/App/Utility/Files.php
+++ b/lib/internal/Magento/Framework/App/Utility/Files.php
@@ -936,7 +936,7 @@ private function accumulateThemeStaticFiles($area, $locale, $filePattern, &$resu
];
$this->_accumulateFilesByPatterns($paths, $filePattern, $files);
$regex = '#^' . $themePath .
- '/((?P[a-z\d]+_[a-z\d]+)/)?web/(i18n/(?P[a-z_]+)/)?(?P.+)$#i';
+ '/((?P[a-z\d]+_[a-z_\d]+)/)?web/(i18n/(?P[a-z_]+)/)?(?P.+)$#i';
foreach ($files as $file) {
if (preg_match($regex, $file, $matches)) {
$result[] = [