diff --git a/libraries/classes/FileListing.php b/libraries/classes/FileListing.php
index a562d9ea7e..f8487725b8 100644
--- a/libraries/classes/FileListing.php
+++ b/libraries/classes/FileListing.php
@@ -64,15 +64,13 @@ class FileListing
if ($list === false) {
return false;
}
- $result = '';
- foreach ($list as $val) {
- $result .= '
+{% endfor %}
diff --git a/test/classes/FileListingTest.php b/test/classes/FileListingTest.php
index 278147dea6..542e3b9358 100644
--- a/test/classes/FileListingTest.php
+++ b/test/classes/FileListingTest.php
@@ -34,6 +34,16 @@ class FileListingTest extends TestCase
public function testGetDirContent(): void
{
$this->assertFalse($this->fileListing->getDirContent('nonexistent directory'));
+
+ $fixturesDir = ROOT_PATH . 'test/classes/_data/file_listing';
+
+ $this->assertSame(
+ array_values([
+ 'one.txt',
+ 'two.md',
+ ]),
+ array_values($this->fileListing->getDirContent($fixturesDir))
+ );
}
/**
@@ -41,7 +51,51 @@ class FileListingTest extends TestCase
*/
public function testGetFileSelectOptions(): void
{
+ $fixturesDir = ROOT_PATH . 'test/classes/_data/file_listing';
+
$this->assertFalse($this->fileListing->getFileSelectOptions('nonexistent directory'));
+
+ $expectedHtmlWithoutActive = <<
+ one.txt
+
+
+
+HTML;
+
+ $this->assertSame(
+ $expectedHtmlWithoutActive,
+ $this->fileListing->getFileSelectOptions($fixturesDir)
+ );
+
+ $expectedHtmlWithActive = <<
+ one.txt
+
+
+
+HTML;
+
+ $this->assertSame(
+ $expectedHtmlWithActive,
+ $this->fileListing->getFileSelectOptions($fixturesDir, '', 'two.md')
+ );
+
+ $expectedFilteredHtml = <<
+ one.txt
+
+
+HTML;
+
+ $this->assertSame(
+ $expectedFilteredHtml,
+ $this->fileListing->getFileSelectOptions($fixturesDir, '/.*\.txt/')
+ );
}
/**
diff --git a/test/classes/_data/file_listing/one.txt b/test/classes/_data/file_listing/one.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test/classes/_data/file_listing/two.md b/test/classes/_data/file_listing/two.md
new file mode 100644
index 0000000000..e69de29bb2