'No error', JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', JSON_ERROR_STATE_MISMATCH => 'State mismatch (invalid or malformed JSON)', JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded', JSON_ERROR_SYNTAX => 'Syntax error', JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded' ); $error = json_last_error(); return isset($errors[$error]) ? $errors[$error] : 'Unknown error'; } } // function not autoloaded in PHP, thus its a good place for them if (!function_exists('codecept_debug')) { function codecept_debug($data) { \Codeception\Util\Debug::debug($data); } } if (!function_exists('codecept_root_dir')) { function codecept_root_dir($appendPath = '') { return \Codeception\Configuration::projectDir() . $appendPath; } } if (!function_exists('codecept_output_dir')) { function codecept_output_dir($appendPath = '') { return \Codeception\Configuration::outputDir() . $appendPath; } } if (!function_exists('codecept_log_dir')) { function codecept_log_dir($appendPath = '') { return \Codeception\Configuration::outputDir() . $appendPath; } } if (!function_exists('codecept_data_dir')) { function codecept_data_dir($appendPath = '') { return \Codeception\Configuration::dataDir() . $appendPath; } } if (!function_exists('codecept_relative_path')) { function codecept_relative_path($path) { return \Codeception\Util\PathResolver::getRelativeDir( $path, \Codeception\Configuration::projectDir(), DIRECTORY_SEPARATOR ); } } if (!function_exists('codecept_absolute_path')) { /** * If $path is absolute, it will be returned without changes. * If $path is relative, it will be passed to `codecept_root_dir()` function * to make it absolute. * * @param string $path * @return string the absolute path */ function codecept_absolute_path($path) { return mb_substr($path, 0, 1) === DIRECTORY_SEPARATOR ? $path : codecept_root_dir($path); } }