src/Codeception/Module/WPFilesystem.php
protected function ensureOptionalPaths($check = true)
    {
        $optionalPaths = [
            'themes' => [
                'mustExist' => true,
                'default' => '/wp-content/themes',
            ],
            'plugins' => [
                'mustExist' => true,
                'default' => '/wp-content/plugins',
            ],
            'mu-plugins' => [
                'mustExist' => false,
                'default' => '/wp-content/mu-plugins',
            ],
            'uploads' => [
                'mustExist' => true,
                'default' => '/wp-content/uploads',
            ],
        ];
        $wpRoot = Utils::untrailslashit($this->config['wpRootFolder']);
        foreach ($optionalPaths as $configKey => $info) {
            if (empty($this->config[$configKey])) {
                $path = $info['default'];
            } else {
                $path = $this->config[$configKey];
            }
            if (!is_dir($path) || ($configKey === 'mu-plugins' && !is_dir(dirname($path)))) {
                $path = Utils::unleadslashit(str_replace($wpRoot, '', $path));
                $absolutePath = $wpRoot . DIRECTORY_SEPARATOR . $path;
            } else {
                $absolutePath = $path;
            }

            if ($check) {
                $mustExistAndIsNotDir = $info['mustExist'] && !is_dir($absolutePath);

                if ($mustExistAndIsNotDir) {
                    if (!mkdir($absolutePath, 0777, true) && !is_dir($absolutePath)) {
                        throw new ModuleConfigException(
                            __CLASS__,
                            "The {$configKey} config path [{$path}] does not exist."
                        );
                    }
                }
            }

            $this->config[$configKey] = Utils::untrailslashit($absolutePath) . DIRECTORY_SEPARATOR;
        }
    }
protected function ensureOptionalPaths($check = true)
    {
        $optionalPaths = [
            'themes' => [
                'mustExist' => true,
                'default' => '/wp-content/themes',
            ],
            'plugins' => [
                'mustExist' => true,
                'default' => '/wp-content/plugins',
            ],
            'mu-plugins' => [
                'mustExist' => false,
                'default' => '/wp-content/mu-plugins',
            ],
            'uploads' => [
                'mustExist' => true,
                'default' => '/wp-content/uploads',
            ],
        ];
        $wpRoot = Utils::untrailslashit($this->config['wpRootFolder']);
        foreach ($optionalPaths as $configKey => $info) {
            if (empty($this->config[$configKey])) {
                $path = $info['default'];
            } else {
                $path = $this->config[$configKey];
            }
            if (!is_dir($path) || ($configKey === 'mu-plugins' && !is_dir(dirname($path)))) {
                $path = Utils::unleadslashit(str_replace($wpRoot, '', $path));
                $absolutePath = $wpRoot . DIRECTORY_SEPARATOR . $path;
            } else {
                $absolutePath = $path;
            }

            if ($check) {
                $mustExistAndIsNotDir = $info['mustExist'] && !is_dir($absolutePath);

                if ($mustExistAndIsNotDir) {
                    if (!mkdir($absolutePath, 0777, true) && !is_dir($absolutePath)) {
                        throw new ModuleConfigException(
                            __CLASS__,
                            "The {$configKey} config path [{$path}] does not exist."
                        );
                    }
                }
            }

            $this->config[$configKey] = Utils::untrailslashit($absolutePath) . DIRECTORY_SEPARATOR;
        }
    }
protected function ensureOptionalPaths ( $ check = true ) { $ optionalPaths = [ 'themes' => [ 'mustExist' => true , 'default' => '/wp-content/themes' , ] , 'plugins' => [ 'mustExist' => true , 'default' => '/wp-content/plugins' , ] , 'mu-plugins' => [ 'mustExist' => false , 'default' => '/wp-content/mu-plugins' , ] , 'uploads' => [ 'mustExist' => true , 'default' => '/wp-content/uploads' , ] , ] ; $ wpRoot = Utils :: untrailslashit ( $ this -> config [ 'wpRootFolder' ] ) ; foreach ( $ optionalPaths as $ configKey => $ info ) { if ( empty ( $ this -> config [ $ configKey ] ) ) { $ path = $ info [ 'default' ] ; } else { $ path = $ this -> config [ $ configKey ] ; } if ( ! is_dir ( $ path ) || ( $ configKey === 'mu-plugins' && ! is_dir ( dirname ( $ path ) ) ) ) { $ path = Utils :: unleadslashit ( str_replace ( $ wpRoot , '' , $ path ) ) ; $ absolutePath = $ wpRoot . DIRECTORY_SEPARATOR . $ path ; } else { $ absolutePath = $ path ; } if ( $ check ) { $ mustExistAndIsNotDir = $ info [ 'mustExist' ] && ! is_dir ( $ absolutePath ) ; if ( $ mustExistAndIsNotDir ) { if ( ! mkdir ( $ absolutePath , 0777 , true ) && ! is_dir ( $ absolutePath ) ) { throw new ModuleConfigException ( __CLASS__ , "The {$configKey} config path [{$path}] does not exist." ) ; } } } $ this -> config [ $ configKey ] = Utils :: untrailslashit ( $ absolutePath ) . DIRECTORY_SEPARATOR ; } }
Sets and checks that the optional paths, if set, are actually valid.

@param bool $check Whether to check the paths for existence or not.

@throws \Codeception\Exception\ModuleConfigException If one of the paths does not exist.
Sets and checks that the optional paths if set are actually valid .