1 // Copyright 2022 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 use std::env;
6
7 use prebuilts::download_prebuilt;
8 use prebuilts::download_prebuilts;
9 use tempfile::TempDir;
10
11 static LIBRARY: &str = "prebuilts_test";
12 static PREBUILT_FILE1: &str = "prebuilt_test";
13 static PREBUILT_FILE2: &str = "prebuilt_test2";
14 static VERSION: u32 = 1;
15
setup_env(build_type: &str) -> TempDir16 fn setup_env(build_type: &str) -> TempDir {
17 let tempdir = tempfile::tempdir().unwrap();
18 if build_type == "debug" {
19 env::set_var("DEBUG", "");
20 } else {
21 env::remove_var("DEBUG");
22 }
23 env::set_var("CARGO_CFG_TARGET_FAMILY", "windows");
24 env::set_var("CARGO_CFG_TARGET_ARCH", "x86_64");
25 env::set_var("CARGO_CFG_TARGET_ENV", "gnu");
26 let deps = tempdir.path().join("deps");
27 std::fs::create_dir_all(deps).unwrap();
28 let out_dir = tempdir.path().join("build").join("crate_name").join("out");
29 std::fs::create_dir_all(&out_dir).unwrap();
30 env::set_var("OUT_DIR", out_dir.as_os_str().to_str().unwrap());
31 tempdir
32 }
33
34 #[test]
test_download_prebuilt()35 fn test_download_prebuilt() {
36 for build_type in ["release", "debug"] {
37 let _tempdir = setup_env(build_type);
38 let file = download_prebuilt(LIBRARY, VERSION, PREBUILT_FILE1).unwrap();
39 assert!(file.exists());
40 assert_eq!(
41 std::fs::read_to_string(&file).unwrap(),
42 format!("hello world {}\n", build_type)
43 );
44 }
45 }
46
47 #[test]
test_download_prebuilt_files()48 fn test_download_prebuilt_files() {
49 for build_type in ["release", "debug"] {
50 let _tempdir = setup_env(build_type);
51 let files =
52 download_prebuilts(LIBRARY, VERSION, &[PREBUILT_FILE1, PREBUILT_FILE2]).unwrap();
53 for file in files {
54 assert!(file.exists());
55 assert_eq!(
56 std::fs::read_to_string(&file).unwrap(),
57 format!("hello world {}\n", build_type),
58 "failed for file {file:?}"
59 );
60 }
61 }
62 }
63