// Copyright 2019-2024 Tauri Programme within The Commons Conservancy // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT use std::fs; use std::process::Command; #[test] fn init_non_interactive_works() { let temp_dir = tempfile::tempdir().unwrap(); let dir = temp_dir.path(); // Determine the path to the cargo-tauri binary. // The test binary is in target/debug/deps/, so we navigate up to target/debug/ let current_exe = std::env::current_exe().unwrap(); let target_debug = current_exe.parent().unwrap().parent().unwrap(); let cargo_tauri = if cfg!(windows) { target_debug.join("cargo-tauri.exe") } else { target_debug.join("cargo-tauri") }; assert!( cargo_tauri.exists(), "cargo-tauri binary not found at {:?}", cargo_tauri ); // Run `init` without --force or --ci; since stdin is not a terminal in tests, // it should automatically skip prompts and use defaults. let output = Command::new(&cargo_tauri) .arg("init") .arg("--app-name") .arg("testapp") .arg("--frontend-dist") .arg("../dist") .arg("--dev-url") .arg("http://localhost:3000") .current_dir(dir) .output() .expect("failed to run cargo-tauri init"); assert!(output.status.success(), "init failed: {:?}", output); // Verify that src-tauri was created. let src_tauri = dir.join("src-tauri"); assert!(src_tauri.exists(), "src-tauri directory was not created"); // Verify that the tauri.conf.json contains the app name we set. let conf_path = src_tauri.join("tauri.conf.json"); assert!(conf_path.exists(), "tauri.conf.json not found"); let content = fs::read_to_string(&conf_path).unwrap(); assert!(content.contains("testapp"), "app name not found in config"); }