xref: /aosp_15_r20/external/crosvm/e2e_tests/tests/prebuilts.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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