MDL-55020 admin: Fix renaming of the plugin package root folder
[moodle.git] / lib / tests / update_code_manager_test.php
index 6166152..cbf4717 100644 (file)
@@ -73,6 +73,7 @@ class core_update_code_manager_testcase extends advanced_testcase {
         $codeman = new \core\update\testable_code_manager();
         $zipfilepath = __DIR__.'/fixtures/update_validator/zips/invalidroot.zip';
         $targetdir = make_request_directory();
+        mkdir($targetdir.'/aaa_another');
 
         $files = $codeman->unzip_plugin_file($zipfilepath, $targetdir);
 
@@ -110,6 +111,15 @@ class core_update_code_manager_testcase extends advanced_testcase {
         $files = $codeman->unzip_plugin_file($zipfilepath, $targetdir, 'bar');
     }
 
+    public function test_unzip_plugin_file_multidir() {
+        $codeman = new \core\update\testable_code_manager();
+        $zipfilepath = __DIR__.'/fixtures/update_validator/zips/multidir.zip';
+        $targetdir = make_request_directory();
+        // Attempting to rename the root folder if there are multiple ones should lead to exception.
+        $this->setExpectedException('moodle_exception');
+        $files = $codeman->unzip_plugin_file($zipfilepath, $targetdir, 'foo');
+    }
+
     public function test_get_plugin_zip_root_dir() {
         $codeman = new \core\update\testable_code_manager();
 
@@ -118,6 +128,9 @@ class core_update_code_manager_testcase extends advanced_testcase {
 
         $zipfilepath = __DIR__.'/fixtures/update_validator/zips/bar.zip';
         $this->assertEquals('bar', $codeman->get_plugin_zip_root_dir($zipfilepath));
+
+        $zipfilepath = __DIR__.'/fixtures/update_validator/zips/multidir.zip';
+        $this->assertSame(false, $codeman->get_plugin_zip_root_dir($zipfilepath));
     }
 
     public function test_list_plugin_folder_files() {