| 2779 | } |
| 2780 | |
| 2781 | Error ImportExporter::test_exported_project(const String &p_original_project_dir) { |
| 2782 | if (p_original_project_dir.is_empty()) { |
| 2783 | print_line("Original project directory is empty, running tests without import comparison..."); |
| 2784 | } |
| 2785 | // clear errors |
| 2786 | GDRESettings::get_singleton()->get_errors(); |
| 2787 | original_project_dir = p_original_project_dir; |
| 2788 | Error _ret_err = OK; |
| 2789 | #if TESTS_ENABLED |
| 2790 | const bool is_unit_testing = GDRESettings::is_testing(); |
| 2791 | #else |
| 2792 | const bool is_unit_testing = false; |
| 2793 | #endif |
| 2794 | if (report.is_null() || output_dir.is_empty()) { |
| 2795 | ERR_FAIL_V_MSG(ERR_BUG, "Export hasn't been run yet"); |
| 2796 | } |
| 2797 | if (!GDRESettings::get_singleton()->is_pack_loaded()) { |
| 2798 | ERR_FAIL_V_MSG(ERR_BUG, "Pack is not loaded, cannot test exported project"); |
| 2799 | } |
| 2800 | String tmp_dir; |
| 2801 | if (original_project_dir.has_extension("zip")) { |
| 2802 | tmp_dir = get_settings()->get_gdre_tmp_path().path_join("test_recovery").path_join(original_project_dir.get_file().get_basename()); |
| 2803 | print_line(vformat("Extracting original project zip to temporary directory %s...", tmp_dir)); |
| 2804 | |
| 2805 | if (DirAccess::dir_exists_absolute(tmp_dir)) { |
| 2806 | gdre::rimraf(tmp_dir); |
| 2807 | } |
| 2808 | gdre::ensure_dir(tmp_dir); |
| 2809 | Error err = gdre::unzip_file_to_dir(original_project_dir, tmp_dir); |
| 2810 | if (err != OK) { |
| 2811 | print_line("Error extracting original project zip: " + String::num_int64(err)); |
| 2812 | return err; |
| 2813 | } |
| 2814 | original_project_dir = tmp_dir; |
| 2815 | } |
| 2816 | |
| 2817 | auto rimraf_tmp_dir = [&]() { |
| 2818 | if (!tmp_dir.is_empty() && DirAccess::dir_exists_absolute(tmp_dir)) { |
| 2819 | gdre::rimraf(tmp_dir); |
| 2820 | } |
| 2821 | String reimport_dir = GDRESettings::get_gdre_tmp_path().path_join("test_reimport"); |
| 2822 | if (DirAccess::dir_exists_absolute(reimport_dir)) { |
| 2823 | gdre::rimraf(reimport_dir); |
| 2824 | } |
| 2825 | }; |
| 2826 | |
| 2827 | Vector<Ref<ExportReport>> export_failed_reports = array_to_vector<Ref<ExportReport>>(report->get_failed()); |
| 2828 | bool had_failed_exports = export_failed_reports.size() > 0; |
| 2829 | GDRE_CHECK(!had_failed_exports); |
| 2830 | Vector<Ref<ExportReport>> successes = array_to_vector<Ref<ExportReport>>(report->get_successes()); |
| 2831 | Vector<Ref<ExportReport>> success_reports; |
| 2832 | Vector<Ref<ExportReport>> failed_reports; |
| 2833 | Vector<Ref<ExportReport>> not_run_reports; |
| 2834 | |
| 2835 | Vector<String> unzipped_output_dirs; |
| 2836 | for (auto &download : report->get_downloaded_plugins()) { |
| 2837 | Vector<String> dirs = download.operator Dictionary().get("unzipped_output_dirs", ""); |
| 2838 | for (auto &unzipped_output_dir : dirs) { |
no test coverage detected