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