diff --git a/repository/filesystem/lib.php b/repository/filesystem/lib.php index 53770530b9e..137345ccc2c 100644 --- a/repository/filesystem/lib.php +++ b/repository/filesystem/lib.php @@ -99,7 +99,7 @@ class repository_filesystem extends repository { $fileslist = array(); $dirslist = array(); if ($dh = opendir($abspath)) { - while (($file = readdir($dh)) != false) { + while (false !== ($file = readdir($dh))) { if ($file != '.' and $file != '..') { if (is_file($abspath . $file)) { $fileslist[] = $file; @@ -108,6 +108,7 @@ class repository_filesystem extends repository { } } } + closedir($dh); } core_collator::asort($fileslist, core_collator::SORT_NATURAL); core_collator::asort($dirslist, core_collator::SORT_NATURAL); diff --git a/repository/filesystem/tests/repository_filesystem_test.php b/repository/filesystem/tests/repository_filesystem_test.php new file mode 100644 index 00000000000..f9a200364e2 --- /dev/null +++ b/repository/filesystem/tests/repository_filesystem_test.php @@ -0,0 +1,50 @@ +. + +/** + * Tests for the repository_filesystem plugin. + * + * @package repository_filesystem + * @copyright 2024 Andrew Lyons + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @covers \repository_filesystem + */ +class repository_filesystem_test extends \advanced_testcase { + public function test_get_listing(): void { + global $CFG; + + $this->resetAfterTest(true); + + $user = get_admin(); + $this->setUser($user); + + $this->getDataGenerator()->create_repository_type('filesystem'); + + mkdir($CFG->dataroot . '/repository/test/0', recursive: true); + file_put_contents($CFG->dataroot . '/repository/test/0/test.txt', 'test'); + + $record = $this->getDataGenerator()->create_repository('filesystem', [ + 'fs_path' => 'test', + ]); + + /** @var repository_filesystem $repository */ + $repository = repository::get_repository_by_id($record->id, \core\context\user::instance($user->id)); + + $listing = $repository->get_listing(); + $this->assertCount(1, $listing['list']); + $this->assertEquals(['0'], array_column($listing['list'], 'title')); + } +}