Entry point for testing file handling binaries for official ArchLinux packages, source repositories and databases. This function relegates to functions that: - Download packages. - Test file parsers on all files. - Clean up downloaded files.
(cmd: TestFilesCmd, cache_dir: CacheDir)
| 32 | /// - Test file parsers on all files. |
| 33 | /// - Clean up downloaded files. |
| 34 | pub(crate) fn test_files(cmd: TestFilesCmd, cache_dir: CacheDir) -> Result<(), Error> { |
| 35 | match cmd { |
| 36 | TestFilesCmd::Test { |
| 37 | repositories, |
| 38 | file_type, |
| 39 | } => { |
| 40 | let repositories = PackageRepositories::iter() |
| 41 | .filter(|v| repositories.clone().is_none_or(|r| r.contains(v))) |
| 42 | .collect(); |
| 43 | let runner = TestRunner { |
| 44 | cache_dir, |
| 45 | file_type, |
| 46 | repositories, |
| 47 | }; |
| 48 | runner.run_tests()?; |
| 49 | } |
| 50 | TestFilesCmd::Download { |
| 51 | repositories, |
| 52 | source, |
| 53 | } => { |
| 54 | let repositories = PackageRepositories::iter() |
| 55 | .filter(|v| repositories.clone().is_none_or(|r| r.contains(v))) |
| 56 | .collect(); |
| 57 | |
| 58 | match source { |
| 59 | DownloadCmd::PkgSrcRepositories {} => { |
| 60 | let downloader = PkgSrcDownloader { cache_dir }; |
| 61 | downloader.download_package_source_repositories()?; |
| 62 | } |
| 63 | DownloadCmd::Aur {} => { |
| 64 | let downloader = AurDownloader { cache_dir }; |
| 65 | downloader.download_packages()?; |
| 66 | } |
| 67 | DownloadCmd::Databases { |
| 68 | mirror, |
| 69 | force_extract, |
| 70 | } => { |
| 71 | let downloader = MirrorDownloader { |
| 72 | cache_dir, |
| 73 | mirror, |
| 74 | repositories, |
| 75 | extract_all: force_extract, |
| 76 | }; |
| 77 | warn!( |
| 78 | "Beginning database retrieval\nIf the process is unexpectedly halted, rerun with `--force-extract` flag" |
| 79 | ); |
| 80 | downloader.sync_remote_databases()?; |
| 81 | } |
| 82 | DownloadCmd::Packages { |
| 83 | mirror, |
| 84 | force_extract, |
| 85 | } => { |
| 86 | let downloader = MirrorDownloader { |
| 87 | cache_dir, |
| 88 | mirror, |
| 89 | repositories, |
| 90 | extract_all: force_extract, |
| 91 | }; |
no test coverage detected