diff --git a/es2panda/aot/options.cpp b/es2panda/aot/options.cpp index bf961713972d335e111a24b6f0ff27694f984cf7..93835d75ba5ecc061fb6ae31a6ab96fac335ef24 100644 --- a/es2panda/aot/options.cpp +++ b/es2panda/aot/options.cpp @@ -621,9 +621,11 @@ bool Options::Parse(int argc, const char **argv) // common mode auto inputAbs = panda::os::file::File::GetAbsolutePath(sourceFile_); if (!inputAbs) { - std::cerr << "Failed to find file '" << sourceFile_ << "' during input file resolution" << std::endl - << "Please check if the file name is correct, the file exists at the specified path, " - << "and your project has the necessary permissions to access it." << std::endl; + std::cerr << "Failed to find file '" << sourceFile_ << "' during input file resolution." << std::endl << + "Solutions: > Check whether the file name is correct." << + "> Check whether the file exists at the specified path." << + "> Check whether the file path length is within OS limits." << + "> Check whether your project has the necessary permissions to access the file."; return false; } @@ -752,9 +754,11 @@ bool Options::Parse(int argc, const char **argv) // check file exist or not auto transformLibAbs = panda::os::file::File::GetAbsolutePath(libName); if (!transformLibAbs) { - std::cerr << "Failed to find file '" << libName << "' during transformLib file resolution" << std::endl - << "Please check if the file name is correct, the file exists at the specified path, " - << "and your project has the necessary permissions to access it." << std::endl; + std::cerr << "Failed to find file '" << libName << "' during transformLib file resolution." << std::endl << + "Solutions: > Check whether the file name is correct." << + "> Check whether the file exists at the specified path." << + "> Check whether the file path length is within OS limits." << + "> Check whether your project has the necessary permissions to access the file."; return false; } compilerOptions_.transformLib = transformLibAbs.Value(); diff --git a/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod-expected.pa.txt b/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..bd74d72e969b8e9ac57386bbeea2f2edfda74e47 --- /dev/null +++ b/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod-expected.pa.txt @@ -0,0 +1,2 @@ +Failed to find file '/mnt/data/l30052494/code/OpenHarmony/arkcompiler/ets_frontend/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/filesInfo.txt' during input file resolution. +Solutions: > Check whether the file name is correct.> Check whether the file exists at the specified path.> Check whether the file path length is within OS limits.> Check whether your project has the necessary permissions to access the file. diff --git a/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod/filesInfo.txt b/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod/filesInfo.txt new file mode 100644 index 0000000000000000000000000000000000000000..cce6e0c071f00fe02a0d991fac30582c327c652d --- /dev/null +++ b/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod/filesInfo.txt @@ -0,0 +1 @@ +ts.ts;ts;esm;mod/ts.ts;ts;false;ts \ No newline at end of file diff --git a/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod/ts.ts b/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod/ts.ts new file mode 100644 index 0000000000000000000000000000000000000000..2cdbabfc0302faf465c8fb721e243c160384d56b --- /dev/null +++ b/es2panda/test/compiler/filesInfoTest/long_path_filesinfo/mod/ts.ts @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +function TS() { + print("mod") +} + +TS() \ No newline at end of file diff --git a/es2panda/test/runner.py b/es2panda/test/runner.py index 7811e13c265af8c9bb47b5b09a57d683da98386a..b148a65698290be91914b43f69c036334a83488d 100755 --- a/es2panda/test/runner.py +++ b/es2panda/test/runner.py @@ -1250,7 +1250,10 @@ class FilesInfoRunner(Runner): projects_path = path.join(self.test_root, directory) test_projects = ["base", "mod"] for project in test_projects: - filesinfo_path = path.join(projects_path, project, "filesInfo.txt") + project_dir = path.join(projects_path, project) + if not path.isdir(project_dir): + continue + filesinfo_path = path.join(project_dir, "filesInfo.txt") self.tests.append(FilesInfoTest(projects_path, project, filesinfo_path, flags)) def test_path(self, src): @@ -1304,6 +1307,11 @@ class FilesInfoTest(Test): return es2abc_cmd def gen_merged_abc(self, runner): + # Generate long path filesinfo if it is path contains long path + if "long_path_filesinfo" in self.path: + long_dir = "a" * 4096 + self.files_info_path = path.join(self.projects_path, self.project, long_dir, "filesInfo.txt") + # Generate the abc to be tested es2abc_cmd = self.gen_es2abc_cmd(runner, '@' + self.files_info_path, self.output_abc_name) process = run_subprocess_with_beta3(self, es2abc_cmd) @@ -3037,6 +3045,8 @@ def add_directory_for_compiler(runners, args): filesinfo_runner = FilesInfoRunner(args) filesinfo_compiler_infos.append(CompilerTestInfo("compiler/filesInfoTest/sourceLang", "txt", ["--module", "--merge-abc", "--dump-assembly"])) + filesinfo_compiler_infos.append(CompilerTestInfo("compiler/filesInfoTest/long_path_filesinfo", "txt", + ["--module", "--merge-abc"])) for info in filesinfo_compiler_infos: filesinfo_runner.add_directory(info.directory, info.extension, info.flags)