def test_normalize_case(self): """Tests normalize case for windows.""" if sys.platform.startswith('win'): self.assertEqual( utils.normalize_path('C:\\test\\test2\\test3'), # Notice that the path starts with a lowercase c. utils.normalize_path('c:\\test\\test2\\test3')) else: self.assertEqual('/mnt/Test', utils.normalize_path('/mnt/Test'))
def get_testcases_from_directories(directories): """Returns all testcases from testcase directories.""" testcase_paths = [] max_testcases = environment.get_value('MAX_TESTCASES') generators = [] for directory in directories: if not directory.strip(): continue generators.append(shell.walk(directory)) for generator in generators: for structure in generator: base_directory = structure[0] for filename in structure[2]: if not filename.startswith(FUZZ_PREFIX): continue if filename.endswith(COVERAGE_SUFFIX): continue file_path = os.path.join(base_directory, filename) if not os.path.getsize(file_path): continue testcase_paths.append(utils.normalize_path(file_path)) if len(testcase_paths) == max_testcases: return testcase_paths return testcase_paths
def convert_dependency_url_to_local_path(url): """Convert a dependency URL to a corresponding local path.""" # Bot-specific import. from clusterfuzz._internal.bot.webserver import http_server logs.log('Process dependency: %s.' % url) file_match = FILE_URL_REGEX.search(url) http_match = HTTP_URL_REGEX.search(url) platform = environment.platform() local_path = None if file_match: file_path = file_match.group(1) logs.log('Detected file dependency: %s.' % file_path) if platform == 'WINDOWS': local_path = file_path else: local_path = '/' + file_path # Convert remote to local path for android. if environment.is_android(): remote_testcases_directory = android.constants.DEVICE_TESTCASES_DIR local_testcases_directory = environment.get_value( 'FUZZ_INPUTS') local_path = local_path.replace(remote_testcases_directory, local_testcases_directory) elif http_match: relative_http_path = os.path.sep + http_match.group(2) logs.log('Detected http dependency: %s.' % relative_http_path) local_path = http_server.get_absolute_testcase_file(relative_http_path) if not local_path: # This needs to be a warning since in many cases, it is actually a # non-existent path. For others, we need to add the directory aliases in # file http_server.py. logs.log_warn('Unable to find server resource %s, skipping.' % relative_http_path) if local_path: local_path = utils.normalize_path(local_path) return local_path
def test_redundant_path(self): """Tests redundant paths.""" self.assertEqual('/test/test2/test3', utils.normalize_path('/test/./test2/test3')) self.assertEqual('/test/test2/test3', utils.normalize_path('/test//test2/test3'))