From 380041dc2ad1c3535328591f9e6831cf1e5f9afa Mon Sep 17 00:00:00 2001 From: Joe Date: Sun, 1 Mar 2026 14:41:51 -0600 Subject: [PATCH] Refactor logging configuration and streamline command execution in tests - Updated the main function to conditionally disable file logging based on the `ATLAS_NO_FILE_LOG` environment variable, enhancing flexibility in logging behavior. - Introduced a new `atlas_command` function to encapsulate command creation for tests, ensuring consistent command execution across various test files. - Replaced direct usage of `ROJO_PATH` with `atlas_command` in multiple test utilities, improving code clarity and maintainability. These changes aim to enhance the logging setup and simplify command handling in the test suite. --- src/main.rs | 12 ++++++++---- tests/rojo_test/io_util.rs | 8 +++++++- tests/rojo_test/roundtrip_util.rs | 7 +++---- tests/rojo_test/serve_util.rs | 18 +++++++++--------- tests/rojo_test/syncback_util.rs | 6 +++--- tests/tests/build.rs | 6 +++--- tests/tests/clean_mode.rs | 5 ++--- 7 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/main.rs b/src/main.rs index 37a91a91..68eb5499 100644 --- a/src/main.rs +++ b/src/main.rs @@ -55,10 +55,14 @@ fn main() { let project_dir = options.subcommand.project_path().map(resolve_project_dir); - let file_log_level = project_dir - .as_deref() - .and_then(logging::quick_read_file_log_level) - .unwrap_or(Some(tracing::level_filters::LevelFilter::TRACE)); + let file_log_level = if env::var("ATLAS_NO_FILE_LOG").is_ok() { + None + } else { + project_dir + .as_deref() + .and_then(logging::quick_read_file_log_level) + .unwrap_or(Some(tracing::level_filters::LevelFilter::TRACE)) + }; let command_name = format!("atlas-{}", options.subcommand.command_name()); diff --git a/tests/rojo_test/io_util.rs b/tests/rojo_test/io_util.rs index 53e8da02..66bb322d 100644 --- a/tests/rojo_test/io_util.rs +++ b/tests/rojo_test/io_util.rs @@ -2,12 +2,18 @@ use std::{ fs, io::{self, Read}, path::{Path, PathBuf}, - process::Child, + process::{Child, Command}, }; use walkdir::WalkDir; pub static ROJO_PATH: &str = env!("CARGO_BIN_EXE_atlas"); + +pub fn atlas_command() -> Command { + let mut cmd = Command::new(ROJO_PATH); + cmd.env("ATLAS_NO_FILE_LOG", "1"); + cmd +} pub static BUILD_TESTS_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/rojo-test/build-tests"); pub static SERVE_TESTS_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/rojo-test/serve-tests"); pub static SYNCBACK_TESTS_PATH: &str = diff --git a/tests/rojo_test/roundtrip_util.rs b/tests/rojo_test/roundtrip_util.rs index 8a0d1f4a..a2044409 100644 --- a/tests/rojo_test/roundtrip_util.rs +++ b/tests/rojo_test/roundtrip_util.rs @@ -10,12 +10,11 @@ use std::{ collections::{HashMap, HashSet}, fs, path::{Path, PathBuf}, - process::Command, }; use tempfile::TempDir; -use super::io_util::ROJO_PATH; +use super::io_util::atlas_command; /// Run `rojo build` on a project and return the output file path. /// @@ -25,7 +24,7 @@ pub fn run_rojo_build(project_path: &Path, output_name: &str) -> (TempDir, PathB let output_dir = tempfile::tempdir().expect("Failed to create temp dir for build output"); let output_path = output_dir.path().join(output_name); - let output = Command::new(ROJO_PATH) + let output = atlas_command() .args([ "build", project_path.to_str().unwrap(), @@ -57,7 +56,7 @@ pub fn run_rojo_syncback_clean(project_path: &Path, input_path: &Path) -> bool { return false; } - let output = Command::new(ROJO_PATH) + let output = atlas_command() .args([ "syncback", project_path.to_str().unwrap(), diff --git a/tests/rojo_test/serve_util.rs b/tests/rojo_test/serve_util.rs index c31d8a1a..be662a1e 100644 --- a/tests/rojo_test/serve_util.rs +++ b/tests/rojo_test/serve_util.rs @@ -4,7 +4,7 @@ use std::{ fs, io::Read as _, path::{Path, PathBuf}, - process::{Command, Stdio}, + process::Stdio, thread, time::Duration, }; @@ -22,7 +22,7 @@ use librojo::web_api::{ use rojo_insta_ext::RedactionMap; use crate::rojo_test::io_util::{ - copy_recursive, get_working_dir_path, KillOnDrop, ROJO_PATH, SERVE_TESTS_PATH, + atlas_command, copy_recursive, get_working_dir_path, KillOnDrop, SERVE_TESTS_PATH, }; /// Convenience method to run a `rojo serve` test. @@ -110,7 +110,7 @@ impl TestServeSession { let port = get_port_number(); let port_string = port.to_string(); - let rojo_process = Command::new(ROJO_PATH) + let rojo_process = atlas_command() .args([ "serve", project_path.to_str().unwrap(), @@ -163,7 +163,7 @@ impl TestServeSession { let port = get_port_number(); let port_string = port.to_string(); - let rojo_process = Command::new(ROJO_PATH) + let rojo_process = atlas_command() .args([ "serve", project_path.to_str().unwrap(), @@ -223,7 +223,7 @@ impl TestServeSession { let port = get_port_number(); let port_string = port.to_string(); - let rojo_process = Command::new(ROJO_PATH) + let rojo_process = atlas_command() .args([ "serve", project_path.to_str().unwrap(), @@ -257,7 +257,7 @@ impl TestServeSession { let port_string = port.to_string(); let working_dir = get_working_dir_path(); - let rojo_process = Command::new(ROJO_PATH) + let rojo_process = atlas_command() .args([ "serve", self.project_path.to_str().unwrap(), @@ -777,7 +777,7 @@ pub fn run_cli_syncback_on_chunks( data: &[u8], chunks: &[librojo::web_api::ServiceChunk], ) -> (TempDir, PathBuf) { - use crate::rojo_test::io_util::{copy_recursive, ROJO_PATH, SERVE_TESTS_PATH}; + use crate::rojo_test::io_util::{atlas_command, copy_recursive, SERVE_TESTS_PATH}; let source_path = Path::new(SERVE_TESTS_PATH).join(fixture_name); let dir = tempdir().expect("Couldn't create temp dir for CLI syncback"); @@ -789,7 +789,7 @@ pub fn run_cli_syncback_on_chunks( let rbxl_path = dir.path().join("input.rbxl"); fs::write(&rbxl_path, rbxl_data).expect("Failed to write rbxl"); - let output = std::process::Command::new(ROJO_PATH) + let output = atlas_command() .args([ "syncback", project_path.to_str().unwrap(), @@ -984,7 +984,7 @@ pub fn fresh_rebuild_read(project_path: &Path) -> NormalizedInstance { let port = get_port_number(); let port_string = port.to_string(); - let process = Command::new(ROJO_PATH) + let process = atlas_command() .args([ "serve", project_file.to_str().unwrap(), diff --git a/tests/rojo_test/syncback_util.rs b/tests/rojo_test/syncback_util.rs index e22f3fa8..c94d3262 100644 --- a/tests/rojo_test/syncback_util.rs +++ b/tests/rojo_test/syncback_util.rs @@ -1,4 +1,4 @@ -use std::{io::Write as _, path::Path, process::Command}; +use std::{io::Write as _, path::Path}; use insta::{assert_snapshot, assert_yaml_snapshot}; use regex::Regex; @@ -6,7 +6,7 @@ use tempfile::tempdir; use crate::rojo_test::io_util::SYNCBACK_TESTS_PATH; -use super::io_util::{copy_recursive, ROJO_PATH}; +use super::io_util::{atlas_command, copy_recursive}; const INPUT_FILE_PROJECT: &str = "input-project"; const INPUT_FILE_PLACE: &str = "input.rbxl"; @@ -82,7 +82,7 @@ fn run_syncback_test_impl(name: &str, incremental: bool, callback: impl FnOnce(& args.push("--incremental"); } - let output = Command::new(ROJO_PATH) + let output = atlas_command() // I don't really understand why setting the working directory breaks this, but it does. // It's a bit concerning but I'm more interested in writing tests than debugging it right now. // TODO: Figure out why and fix it. diff --git a/tests/tests/build.rs b/tests/tests/build.rs index cbb40736..58464cf0 100644 --- a/tests/tests/build.rs +++ b/tests/tests/build.rs @@ -1,9 +1,9 @@ -use std::{fs, path::Path, process::Command}; +use std::{fs, path::Path}; use insta::assert_snapshot; use tempfile::tempdir; -use crate::rojo_test::io_util::{get_working_dir_path, BUILD_TESTS_PATH, ROJO_PATH}; +use crate::rojo_test::io_util::{atlas_command, get_working_dir_path, BUILD_TESTS_PATH}; macro_rules! gen_build_tests { ( $($test_name: ident,)* ) => { @@ -81,7 +81,7 @@ fn run_build_test(test_name: &str) { let output_dir = tempdir().expect("couldn't create temporary directory"); let output_path = output_dir.path().join(format!("{}.rbxmx", test_name)); - let output = Command::new(ROJO_PATH) + let output = atlas_command() .args([ "build", input_path.to_str().unwrap(), diff --git a/tests/tests/clean_mode.rs b/tests/tests/clean_mode.rs index 8f340540..5b257f76 100644 --- a/tests/tests/clean_mode.rs +++ b/tests/tests/clean_mode.rs @@ -7,11 +7,10 @@ //! 4. Incremental mode preserves existing file structure use std::path::Path; -use std::process::Command; use tempfile::tempdir; -use crate::rojo_test::io_util::{copy_recursive, ROJO_PATH}; +use crate::rojo_test::io_util::{atlas_command, copy_recursive}; const SYNCBACK_TESTS_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/rojo-test/syncback-tests"); @@ -30,7 +29,7 @@ fn run_syncback(project_path: &Path, input_path: &Path, incremental: bool) -> bo args.push("--incremental"); } - let output = Command::new(ROJO_PATH) + let output = atlas_command() .args(args) .output() .expect("Couldn't spawn syncback process");