diff --git a/CHANGELOG.md b/CHANGELOG.md index c437fce5a..8b9d75801 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Changelog +- **Added** `output` field for cached tasks: archives output files matching the configured globs after a successful run and restores them on cache hit. Patterns are relative to the package directory; supports negative patterns (e.g. `"!dist/cache/**"`) and `{pattern, base}` form for explicit base. ([#321](https://github.com/voidzero-dev/vite-task/pull/321)) - **Fixed** Windows cached tasks can now run package shims rewritten through PowerShell; default env passthrough now preserves `PATHEXT` ([#366](https://github.com/voidzero-dev/vite-task/pull/366)) - **Added** Platform support for targets without `input` auto-inference (e.g. Android). Tasks still run; those relying on auto-inference run uncached, with the summary noting that `input` must be configured manually to enable caching ([#352](https://github.com/voidzero-dev/vite-task/pull/352)) - **Fixed** `vp run` no longer aborts with `failed to prepare the command for injection: Invalid argument` when the user environment already has `LD_PRELOAD` (Linux) or `DYLD_INSERT_LIBRARIES` (macOS) set. The tracer shim is now appended to any existing value and placed last, so user preloads keep their symbol-interposition precedence ([#340](https://github.com/voidzero-dev/vite-task/issues/340)) diff --git a/Cargo.lock b/Cargo.lock index 324f0a6ad..179a9470e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -421,6 +421,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" dependencies = [ "find-msvc-tools", + "jobserver", + "libc", "shlex", ] @@ -1686,6 +1688,16 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + [[package]] name = "js-sys" version = "0.3.85" @@ -4098,12 +4110,14 @@ dependencies = [ "rustc-hash", "serde", "serde_json", + "tar", "tempfile", "thiserror 2.0.18", "tokio", "tokio-util", "tracing", "twox-hash", + "uuid", "vite_path", "vite_select", "vite_str", @@ -4113,6 +4127,7 @@ dependencies = [ "wax", "winapi", "wincode", + "zstd", ] [[package]] @@ -4876,3 +4891,31 @@ name = "zmij" version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4de98dfa5d5b7fef4ee834d0073d560c9ca7b6c46a71d058c48db7960f8cfaf7" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index 9e11f099b..5583f09b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -163,6 +163,7 @@ winsafe = { version = "0.0.27", features = ["kernel"] } xxhash-rust = { version = "0.8.15", features = ["const_xxh3"] } ntest = "0.9.5" terminal_size = "0.4" +zstd = "0.13" [workspace.metadata.cargo-shear] ignored = [ diff --git a/crates/vite_task/Cargo.toml b/crates/vite_task/Cargo.toml index 2286b9dc7..f5d77780b 100644 --- a/crates/vite_task/Cargo.toml +++ b/crates/vite_task/Cargo.toml @@ -29,6 +29,7 @@ rustc-hash = { workspace = true } serde = { workspace = true, features = ["derive", "rc"] } serde_json = { workspace = true } thiserror = { workspace = true } +tar = { workspace = true } tokio = { workspace = true, features = [ "rt-multi-thread", "io-std", @@ -40,6 +41,7 @@ tokio = { workspace = true, features = [ tokio-util = { workspace = true } tracing = { workspace = true } twox-hash = { workspace = true } +uuid = { workspace = true, features = ["v4"] } vite_path = { workspace = true } vite_select = { workspace = true } vite_str = { workspace = true } @@ -47,6 +49,7 @@ vite_task_graph = { workspace = true } vite_task_plan = { workspace = true } vite_workspace = { workspace = true } wax = { workspace = true } +zstd = { workspace = true } [dev-dependencies] tempfile = { workspace = true } diff --git a/crates/vite_task/src/session/cache/archive.rs b/crates/vite_task/src/session/cache/archive.rs new file mode 100644 index 000000000..9a4982ae2 --- /dev/null +++ b/crates/vite_task/src/session/cache/archive.rs @@ -0,0 +1,61 @@ +//! Output archive creation and extraction using tar + zstd compression. + +use std::fs::File; + +use vite_path::{AbsolutePath, RelativePathBuf}; + +/// Create a tar.zst archive from workspace-relative output file paths. +/// +/// Files that no longer exist are silently skipped (the task may delete +/// temporary files during execution). +/// +/// # Errors +/// +/// Returns an error if creating the archive file or adding entries fails. +pub fn create_output_archive( + workspace_root: &AbsolutePath, + output_files: &[RelativePathBuf], + archive_path: &AbsolutePath, +) -> anyhow::Result<()> { + let file = File::create(archive_path.as_path())?; + let encoder = zstd::Encoder::new(file, 0)?.auto_finish(); + let mut builder = tar::Builder::new(encoder); + + for rel_path in output_files { + let abs_path = workspace_root.join(rel_path); + // Skip files that no longer exist (task may delete temp files) + if !abs_path.as_path().exists() { + continue; + } + let metadata = std::fs::metadata(abs_path.as_path())?; + if metadata.is_file() { + let mut file = File::open(abs_path.as_path())?; + let mut header = tar::Header::new_gnu(); + header.set_metadata(&metadata); + header.set_cksum(); + builder.append_data(&mut header, rel_path.as_str(), &mut file)?; + } + } + + builder.finish()?; + Ok(()) +} + +/// Extract a tar.zst archive, restoring files relative to workspace root. +/// +/// Parent directories are created automatically. Existing files are overwritten. +/// +/// # Errors +/// +/// Returns an error if opening the archive or extracting entries fails. +pub fn extract_output_archive( + workspace_root: &AbsolutePath, + archive_path: &AbsolutePath, +) -> anyhow::Result<()> { + let file = File::open(archive_path.as_path())?; + let decoder = zstd::Decoder::new(file)?; + let mut archive = tar::Archive::new(decoder); + + archive.unpack(workspace_root.as_path())?; + Ok(()) +} diff --git a/crates/vite_task/src/session/cache/display.rs b/crates/vite_task/src/session/cache/display.rs index ec6bf3d3d..9dbcabd59 100644 --- a/crates/vite_task/src/session/cache/display.rs +++ b/crates/vite_task/src/session/cache/display.rs @@ -174,6 +174,7 @@ pub fn format_cache_status_inline(cache_status: &CacheStatus) -> Option { } } FingerprintMismatch::InputConfig => "input configuration changed", + FingerprintMismatch::OutputConfig => "output configuration changed", FingerprintMismatch::InputChanged { kind, path } => { let desc = format_input_change_str(*kind, path.as_str()); return Some(vite_str::format!("○ cache miss: {desc}, executing")); diff --git a/crates/vite_task/src/session/cache/mod.rs b/crates/vite_task/src/session/cache/mod.rs index 690d50d43..6d1ee6a9c 100644 --- a/crates/vite_task/src/session/cache/mod.rs +++ b/crates/vite_task/src/session/cache/mod.rs @@ -1,5 +1,6 @@ //! Execution cache for storing and retrieving cached command results. +pub mod archive; pub mod display; use std::{collections::BTreeMap, fmt::Display, fs::File, io::Write, sync::Arc, time::Duration}; @@ -14,7 +15,8 @@ use rusqlite::{Connection, OptionalExtension as _, config::DbConfig}; use serde::{Deserialize, Serialize}; use tokio::sync::Mutex; use vite_path::{AbsolutePath, RelativePathBuf}; -use vite_task_graph::config::ResolvedInputConfig; +use vite_str::Str; +use vite_task_graph::config::ResolvedGlobConfig; use vite_task_plan::cache_metadata::{CacheMetadata, ExecutionCacheKey, SpawnFingerprint}; use wincode::{ SchemaRead, SchemaReadOwned, SchemaWrite, @@ -43,7 +45,10 @@ pub struct CacheEntryKey { pub spawn_fingerprint: SpawnFingerprint, /// Resolved input configuration that affects cache behavior. /// Glob patterns are workspace-root-relative. - pub input_config: ResolvedInputConfig, + pub input_config: ResolvedGlobConfig, + /// Resolved output configuration that affects cache restoration. + /// Glob patterns are workspace-root-relative. + pub output_config: ResolvedGlobConfig, } impl CacheEntryKey { @@ -51,6 +56,7 @@ impl CacheEntryKey { Self { spawn_fingerprint: cache_metadata.spawn_fingerprint.clone(), input_config: cache_metadata.input_config.clone(), + output_config: cache_metadata.output_config.clone(), } } } @@ -103,6 +109,9 @@ pub struct CacheEntryValue { /// Path is relative to workspace root, value is `xxHash3_64` of file content. /// Stored in the value (not the key) so changes can be detected and reported. pub globbed_inputs: BTreeMap, + /// Filename of the output archive (e.g. `{uuid}.tar.zst`) stored alongside + /// `cache.db` in the cache directory. `None` if no output files were produced. + pub output_archive: Option, } #[derive(Debug)] @@ -142,6 +151,8 @@ pub enum FingerprintMismatch { }, /// Found a previous cache entry key for the same task, but `input_config` differs. InputConfig, + /// Found a previous cache entry key for the same task, but `output_config` differs. + OutputConfig, InputChanged { kind: InputChangeKind, @@ -158,6 +169,9 @@ impl Display for FingerprintMismatch { Self::InputConfig => { write!(f, "input configuration changed") } + Self::OutputConfig => { + write!(f, "output configuration changed") + } Self::InputChanged { kind, path } => { write!(f, "{}", display::format_input_change_str(*kind, path.as_str())) } @@ -201,16 +215,16 @@ impl ExecutionCache { "CREATE TABLE task_fingerprints (key BLOB PRIMARY KEY, value BLOB);", (), )?; - conn.execute("PRAGMA user_version = 11", ())?; + conn.execute("PRAGMA user_version = 12", ())?; } - 1..=10 => { + 1..=11 => { // old internal db version. reset conn.set_db_config(DbConfig::SQLITE_DBCONFIG_RESET_DATABASE, true)?; conn.execute("VACUUM", ())?; conn.set_db_config(DbConfig::SQLITE_DBCONFIG_RESET_DATABASE, false)?; } - 11 => break, // current version - 12.. => { + 12 => break, // current version + 13.. => { return Err(anyhow::anyhow!( "Unrecognized database version: {user_version}. \ The cache may have been created by a newer version of Vite Task. \ @@ -270,11 +284,20 @@ impl ExecutionCache { self.get_cache_key_by_execution_key(execution_cache_key).await? { // Destructure to ensure we handle all fields when new ones are added - let CacheEntryKey { spawn_fingerprint: old_spawn_fingerprint, input_config: _ } = - old_cache_key; + let CacheEntryKey { + spawn_fingerprint: old_spawn_fingerprint, + input_config: old_input_config, + output_config: old_output_config, + } = old_cache_key; let mismatch = if old_spawn_fingerprint == *spawn_fingerprint { - // spawn fingerprint is the same but input_config or glob_base changed - FingerprintMismatch::InputConfig + // spawn fingerprint is the same but input_config or output_config changed + if old_input_config != cache_metadata.input_config { + FingerprintMismatch::InputConfig + } else if old_output_config != cache_metadata.output_config { + FingerprintMismatch::OutputConfig + } else { + FingerprintMismatch::InputConfig + } } else { FingerprintMismatch::SpawnFingerprint { old: old_spawn_fingerprint, @@ -288,16 +311,33 @@ impl ExecutionCache { } /// Update cache after successful execution. + /// + /// If a previous entry exists for the same cache key with a different + /// `output_archive`, the stale archive file in `cache_dir` is removed + /// (best-effort) so it doesn't accumulate on disk. #[tracing::instrument(level = "debug", skip_all)] pub async fn update( &self, cache_metadata: &CacheMetadata, cache_value: CacheEntryValue, + cache_dir: &AbsolutePath, ) -> anyhow::Result<()> { let execution_cache_key = &cache_metadata.execution_cache_key; let cache_key = CacheEntryKey::from_metadata(cache_metadata); + // If a previous entry exists with a stale output archive, delete the + // old file so the cache directory doesn't accumulate orphaned archives. + if let Some(old_value) = self.get_by_cache_key(&cache_key).await? + && let Some(old_archive) = old_value.output_archive + && cache_value.output_archive.as_ref() != Some(&old_archive) + { + let old_archive_path = cache_dir.join(old_archive.as_str()); + // Best-effort cleanup: a missing file (e.g. after a crash or manual + // cache clear) is fine, so we ignore the error. + let _ = std::fs::remove_file(old_archive_path.as_path()); + } + self.upsert_cache_entry(&cache_key, &cache_value).await?; self.upsert_task_fingerprint(execution_cache_key, &cache_key).await?; Ok(()) diff --git a/crates/vite_task/src/session/execute/glob_inputs.rs b/crates/vite_task/src/session/execute/glob_inputs.rs index a9bb1b20d..a3d966e11 100644 --- a/crates/vite_task/src/session/execute/glob_inputs.rs +++ b/crates/vite_task/src/session/execute/glob_inputs.rs @@ -109,6 +109,58 @@ pub fn compute_globbed_inputs( Ok(result) } +/// Collect file paths matching positive globs, filtered by negative globs. +/// +/// Like [`compute_globbed_inputs`] but only collects paths (no hashing). +/// Used for determining which output files to archive. +pub fn collect_glob_paths( + workspace_root: &AbsolutePath, + positive_globs: &std::collections::BTreeSet, + negative_globs: &std::collections::BTreeSet, +) -> anyhow::Result> { + if positive_globs.is_empty() { + return Ok(Vec::new()); + } + + let negatives: Vec> = negative_globs + .iter() + .map(|p| Ok(Glob::new(p.as_str())?.into_owned())) + .collect::>()?; + let negation = wax::any(negatives)?; + + let mut result = Vec::new(); + + for pattern in positive_globs { + let glob = Glob::new(pattern.as_str())?.into_owned(); + let walk = glob.walk(workspace_root.as_path()); + for entry in walk.not(negation.clone())? { + let entry = match entry { + Ok(entry) => entry, + Err(err) => { + let io_err: io::Error = err.into(); + if io_err.kind() == io::ErrorKind::NotFound { + continue; + } + return Err(io_err.into()); + } + }; + if !entry.file_type().is_file() { + continue; + } + let path = entry.path(); + let Some(stripped) = path.strip_prefix(workspace_root.as_path()).ok() else { + continue; + }; + let relative = RelativePathBuf::new(stripped)?; + result.push(relative); + } + } + + result.sort(); + result.dedup(); + Ok(result) +} + #[expect(clippy::disallowed_types, reason = "receives std::path::Path from wax glob walker")] fn hash_file_content(path: &std::path::Path) -> io::Result { super::hash::hash_content(io::BufReader::new(File::open(path)?)) diff --git a/crates/vite_task/src/session/execute/mod.rs b/crates/vite_task/src/session/execute/mod.rs index 812de5f65..29719a74f 100644 --- a/crates/vite_task/src/session/execute/mod.rs +++ b/crates/vite_task/src/session/execute/mod.rs @@ -16,6 +16,7 @@ use rustc_hash::FxHashMap; use tokio::sync::Semaphore; use tokio_util::sync::CancellationToken; use vite_path::{AbsolutePath, RelativePathBuf}; +use vite_str::Str; use vite_task_plan::{ ExecutionGraph, ExecutionItemDisplay, ExecutionItemKind, LeafExecutionKind, SpawnExecution, cache_metadata::CacheMetadata, execution_graph::ExecutionNodeIndex, @@ -30,7 +31,7 @@ use self::{ spawn::{SpawnStdio, spawn}, }; use super::{ - cache::{CacheEntryValue, ExecutionCache}, + cache::{CacheEntryValue, ExecutionCache, archive}, event::{ CacheDisabledReason, CacheErrorKind, CacheNotUpdatedReason, CacheStatus, CacheUpdateStatus, ExecutionError, @@ -75,6 +76,8 @@ struct ExecutionContext<'a> { /// Base path for resolving relative paths in cache entries. /// Typically the workspace root. cache_base_path: &'a Arc, + /// Directory where cache files (db, archives) are stored. + cache_dir: &'a AbsolutePath, /// Token cancelled when a task fails. Kills in-flight child processes /// (via `start_kill` in spawn.rs), prevents scheduling new tasks, and /// prevents caching results of concurrently-running tasks. @@ -236,6 +239,7 @@ impl ExecutionContext<'_> { spawn_execution, self.cache, self.cache_base_path, + self.cache_dir, self.fast_fail_token.clone(), self.interrupt_token.clone(), ) @@ -328,6 +332,7 @@ pub async fn execute_spawn( spawn_execution: &SpawnExecution, cache: &ExecutionCache, cache_base_path: &Arc, + cache_dir: &AbsolutePath, fast_fail_token: CancellationToken, interrupt_token: CancellationToken, ) -> SpawnOutcome { @@ -400,6 +405,18 @@ pub async fn execute_spawn( let _ = writer.write_all(&output.content); let _ = writer.flush(); } + // Restore output files from the cached archive + if let Some(ref archive_name) = cached.output_archive { + let archive_path = cache_dir.join(archive_name.as_str()); + if let Err(err) = archive::extract_output_archive(cache_base_path, &archive_path) { + leaf_reporter.finish( + None, + CacheUpdateStatus::NotUpdated(CacheNotUpdatedReason::CacheHit), + Some(ExecutionError::Cache { kind: CacheErrorKind::Lookup, source: err }), + ); + return SpawnOutcome::Failed; + } + } leaf_reporter.finish( None, CacheUpdateStatus::NotUpdated(CacheNotUpdatedReason::CacheHit), @@ -605,13 +622,38 @@ pub async fn execute_spawn( let path_reads = tracking.as_ref().map_or(&empty_path_reads, |t| &t.path_reads); match PostRunFingerprint::create(path_reads, cache_base_path, &globbed_inputs) { Ok(post_run_fingerprint) => { + // Collect output files and create archive + let output_archive = + match collect_and_archive_outputs(metadata, cache_base_path, cache_dir) + { + Ok(archive) => archive, + Err(err) => { + let result = ( + CacheUpdateStatus::NotUpdated( + CacheNotUpdatedReason::CacheDisabled, + ), + Some(ExecutionError::Cache { + kind: CacheErrorKind::Update, + source: err, + }), + ); + leaf_reporter.finish( + Some(outcome.exit_status), + result.0, + result.1, + ); + return SpawnOutcome::Spawned(outcome.exit_status); + } + }; + let new_cache_value = CacheEntryValue { post_run_fingerprint, std_outputs: std_outputs.into(), duration, globbed_inputs, + output_archive, }; - match cache.update(metadata, new_cache_value).await { + match cache.update(metadata, new_cache_value, cache_dir).await { Ok(()) => (CacheUpdateStatus::Updated, None), Err(err) => ( CacheUpdateStatus::NotUpdated(CacheNotUpdatedReason::CacheDisabled), @@ -645,6 +687,40 @@ pub async fn execute_spawn( SpawnOutcome::Spawned(outcome.exit_status) } +/// Collect output files matching the configured globs and create a tar.zst +/// archive in the cache directory. +/// +/// Returns `Some(archive_filename)` if files were archived, `None` if the +/// output config has no positive globs or no files matched. +fn collect_and_archive_outputs( + cache_metadata: &CacheMetadata, + workspace_root: &AbsolutePath, + cache_dir: &AbsolutePath, +) -> anyhow::Result> { + let output_config = &cache_metadata.output_config; + + if output_config.positive_globs.is_empty() { + return Ok(None); + } + + let output_files = glob_inputs::collect_glob_paths( + workspace_root, + &output_config.positive_globs, + &output_config.negative_globs, + )?; + + if output_files.is_empty() { + return Ok(None); + } + + let archive_name: Str = vite_str::format!("{}.tar.zst", uuid::Uuid::new_v4()); + let archive_path = cache_dir.join(archive_name.as_str()); + + archive::create_output_archive(workspace_root, &output_files, &archive_path)?; + + Ok(Some(archive_name)) +} + impl Session<'_> { /// Execute an execution graph, reporting events through the provided reporter builder. /// @@ -679,6 +755,7 @@ impl Session<'_> { reporter: &reporter, cache, cache_base_path: &self.workspace_path, + cache_dir: &self.cache_path, fast_fail_token: CancellationToken::new(), interrupt_token, }; diff --git a/crates/vite_task/src/session/mod.rs b/crates/vite_task/src/session/mod.rs index eb9ca6411..8edef289f 100644 --- a/crates/vite_task/src/session/mod.rs +++ b/crates/vite_task/src/session/mod.rs @@ -677,6 +677,7 @@ impl<'a> Session<'a> { &spawn_execution, cache, &self.workspace_path, + &self.cache_path, tokio_util::sync::CancellationToken::new(), tokio_util::sync::CancellationToken::new(), ) diff --git a/crates/vite_task/src/session/reporter/summary.rs b/crates/vite_task/src/session/reporter/summary.rs index 4eeceb684..f1a01168f 100644 --- a/crates/vite_task/src/session/reporter/summary.rs +++ b/crates/vite_task/src/session/reporter/summary.rs @@ -259,7 +259,9 @@ impl SavedCacheMissReason { FingerprintMismatch::SpawnFingerprint { old, new } => { Self::SpawnFingerprintChanged(detect_spawn_fingerprint_changes(old, new)) } - FingerprintMismatch::InputConfig => Self::ConfigChanged, + FingerprintMismatch::InputConfig | FingerprintMismatch::OutputConfig => { + Self::ConfigChanged + } FingerprintMismatch::InputChanged { kind, path } => { Self::InputChanged { kind: *kind, path: Str::from(path.as_str()) } } diff --git a/crates/vite_task_bin/src/lib.rs b/crates/vite_task_bin/src/lib.rs index 87a402a2a..43ccd08d1 100644 --- a/crates/vite_task_bin/src/lib.rs +++ b/crates/vite_task_bin/src/lib.rs @@ -98,6 +98,7 @@ impl vite_task::CommandHandler for CommandHandler { env: None, untracked_env: None, input: None, + output: None, }), envs: Arc::clone(&command.envs), })) diff --git a/crates/vite_task_bin/src/vtt/write_file.rs b/crates/vite_task_bin/src/vtt/write_file.rs index f5539146b..b1562bd79 100644 --- a/crates/vite_task_bin/src/vtt/write_file.rs +++ b/crates/vite_task_bin/src/vtt/write_file.rs @@ -2,6 +2,10 @@ pub fn run(args: &[String]) -> Result<(), Box> { if args.len() < 2 { return Err("Usage: vtt write-file ".into()); } - std::fs::write(&args[0], &args[1])?; + let path = std::path::Path::new(&args[0]); + if let Some(parent) = path.parent() { + std::fs::create_dir_all(parent)?; + } + std::fs::write(path, &args[1])?; Ok(()) } diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/package.json b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/package.json new file mode 100644 index 000000000..60b87e87f --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/package.json @@ -0,0 +1,4 @@ +{ + "name": "output-cache-test", + "private": true +} diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots.toml b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots.toml new file mode 100644 index 000000000..d554d79b4 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots.toml @@ -0,0 +1,38 @@ +[[e2e]] +name = "output_globs___files_restored_on_cache_hit" +comment = """ +With explicit output globs (`dist/**`), the first run writes a file to +`dist/`. After deleting `dist/`, a second run with no input changes is a +cache hit and the archived output file is restored. +""" +steps = [ + # First run - cache miss, writes dist/output.txt + ["vt", "run", "build"], + # Verify file was written + ["vtt", "print-file", "dist/output.txt"], + # Delete dist/ to prove restoration is real + ["vtt", "rm", "-rf", "dist"], + # Second run - cache hit, restores dist/output.txt from archive + ["vt", "run", "build"], + # File should be restored + ["vtt", "print-file", "dist/output.txt"], +] + +[[e2e]] +name = "output_globs___negative_excludes_files_from_archive" +comment = """ +A file matched by a negative output glob is not archived, so it is not +restored on cache hit. +""" +steps = [ + # First run - writes both dist/keep.txt and dist/skip.txt + ["vt", "run", "build-with-negative"], + # Both files exist after the run + ["vtt", "print-file", "dist/keep.txt"], + ["vtt", "print-file", "dist/skip.txt"], + # Delete dist/ to prove restoration is real + ["vtt", "rm", "-rf", "dist"], + # Second run - cache hit, only dist/keep.txt is restored + ["vt", "run", "build-with-negative"], + ["vtt", "print-file", "dist/keep.txt"], +] diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots/output_globs___files_restored_on_cache_hit.md b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots/output_globs___files_restored_on_cache_hit.md new file mode 100644 index 000000000..f10e226f1 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots/output_globs___files_restored_on_cache_hit.md @@ -0,0 +1,37 @@ +# output_globs___files_restored_on_cache_hit + +With explicit output globs (`dist/**`), the first run writes a file to +`dist/`. After deleting `dist/`, a second run with no input changes is a +cache hit and the archived output file is restored. + +## `vt run build` + +``` +$ vtt write-file dist/output.txt built +``` + +## `vtt print-file dist/output.txt` + +``` +built +``` + +## `vtt rm -rf dist` + +``` +``` + +## `vt run build` + +``` +$ vtt write-file dist/output.txt built ◉ cache hit, replaying + +--- +vt run: cache hit. +``` + +## `vtt print-file dist/output.txt` + +``` +built +``` diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots/output_globs___negative_excludes_files_from_archive.md b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots/output_globs___negative_excludes_files_from_archive.md new file mode 100644 index 000000000..2cb049158 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/snapshots/output_globs___negative_excludes_files_from_archive.md @@ -0,0 +1,49 @@ +# output_globs___negative_excludes_files_from_archive + +A file matched by a negative output glob is not archived, so it is not +restored on cache hit. + +## `vt run build-with-negative` + +``` +$ vtt write-file dist/keep.txt keep + +$ vtt write-file dist/skip.txt skip + +--- +vt run: 0/2 cache hit (0%). (Run `vt run --last-details` for full details) +``` + +## `vtt print-file dist/keep.txt` + +``` +keep +``` + +## `vtt print-file dist/skip.txt` + +``` +skip +``` + +## `vtt rm -rf dist` + +``` +``` + +## `vt run build-with-negative` + +``` +$ vtt write-file dist/keep.txt keep ◉ cache hit, replaying + +$ vtt write-file dist/skip.txt skip ◉ cache hit, replaying + +--- +vt run: 2/2 cache hit (100%). (Run `vt run --last-details` for full details) +``` + +## `vtt print-file dist/keep.txt` + +``` +keep +``` diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/src/main.ts b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/src/main.ts new file mode 100644 index 000000000..38e000a1c --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/src/main.ts @@ -0,0 +1 @@ +export const main = 'initial'; diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/vite-task.json b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/vite-task.json new file mode 100644 index 000000000..6bd35a604 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/output_cache_test/vite-task.json @@ -0,0 +1,16 @@ +{ + "tasks": { + "build": { + "command": "vtt write-file dist/output.txt built", + "input": ["src/**"], + "output": ["dist/**"], + "cache": true + }, + "build-with-negative": { + "command": "vtt write-file dist/keep.txt keep && vtt write-file dist/skip.txt skip", + "input": ["src/**"], + "output": ["dist/**", "!dist/skip.txt"], + "cache": true + } + } +} diff --git a/crates/vite_task_graph/run-config.ts b/crates/vite_task_graph/run-config.ts index 026664c39..1fa4ee868 100644 --- a/crates/vite_task_graph/run-config.ts +++ b/crates/vite_task_graph/run-config.ts @@ -53,7 +53,16 @@ untrackedEnv?: Array, * - `{auto: true}` enables automatic file tracking * - Negative patterns (e.g. `"!dist/**"`) exclude matched files */ -input?: Array, } | { +input?: Array, +/** + * Output files to archive after a successful run and restore on cache hit. + * + * - Omitted or `[]` (empty): no output archiving (default) + * - Glob patterns (e.g. `"dist/**"`) select specific output files, relative to the package directory + * - `{pattern: "...", base: "workspace" | "package"}` specifies a glob with an explicit base directory + * - Negative patterns (e.g. `"!dist/cache/**"`) exclude matched files + */ +output?: Array, } | { /** * Whether to cache the task */ diff --git a/crates/vite_task_graph/src/config/mod.rs b/crates/vite_task_graph/src/config/mod.rs index 916bc62a1..0e8c28f87 100644 --- a/crates/vite_task_graph/src/config/mod.rs +++ b/crates/vite_task_graph/src/config/mod.rs @@ -7,8 +7,8 @@ use rustc_hash::FxHashSet; use serde::Serialize; pub use user::{ AutoInput, EnabledCacheConfig, GlobWithBase, InputBase, ResolvedGlobalCacheConfig, - UserCacheConfig, UserGlobalCacheConfig, UserInputEntry, UserInputsConfig, UserRunConfig, - UserTaskConfig, + UserCacheConfig, UserGlobalCacheConfig, UserInputEntry, UserInputsConfig, UserOutputEntry, + UserRunConfig, UserTaskConfig, }; use vite_path::AbsolutePath; use vite_str::Str; @@ -69,12 +69,18 @@ impl ResolvedTaskOptions { enabled_cache_config.untracked_env.unwrap_or_default().into_iter().collect(); untracked_env.extend(DEFAULT_UNTRACKED_ENV.iter().copied().map(Str::from)); - let input_config = ResolvedInputConfig::from_user_config( + let input_config = ResolvedGlobConfig::from_user_config( enabled_cache_config.input.as_ref(), dir, workspace_root, )?; + let output_config = ResolvedGlobConfig::from_user_output_config( + enabled_cache_config.output.as_ref(), + dir, + workspace_root, + )?; + Some(CacheConfig { env_config: EnvConfig { fingerprinted_envs: enabled_cache_config @@ -84,6 +90,7 @@ impl ResolvedTaskOptions { untracked_env, }, input_config, + output_config, }) } }; @@ -92,9 +99,14 @@ impl ResolvedTaskOptions { } #[derive(Debug, Clone, Serialize)] +#[expect( + clippy::struct_field_names, + reason = "env_config, input_config, output_config are distinct config categories, not a naming smell" +)] pub struct CacheConfig { pub env_config: EnvConfig, - pub input_config: ResolvedInputConfig, + pub input_config: ResolvedGlobConfig, + pub output_config: ResolvedGlobConfig, } /// Resolved input configuration for cache fingerprinting. @@ -104,7 +116,7 @@ pub struct CacheConfig { /// - `positive_globs`: Glob patterns for files to include (without `!` prefix) /// - `negative_globs`: Glob patterns for files to exclude (without `!` prefix) #[derive(Debug, Clone, PartialEq, Eq, Serialize, SchemaWrite, SchemaRead)] -pub struct ResolvedInputConfig { +pub struct ResolvedGlobConfig { /// Whether automatic file tracking is enabled pub includes_auto: bool, @@ -117,7 +129,7 @@ pub struct ResolvedInputConfig { pub negative_globs: BTreeSet, } -impl ResolvedInputConfig { +impl ResolvedGlobConfig { /// Default configuration: auto-inference enabled, no explicit patterns #[must_use] pub const fn default_auto() -> Self { @@ -184,6 +196,57 @@ impl ResolvedInputConfig { Ok(Self { includes_auto, positive_globs, negative_globs }) } + /// Resolve from user output configuration, making glob patterns workspace-root-relative. + /// + /// Unlike [`Self::from_user_config`], `None` and `Some([])` both produce an empty config + /// with `includes_auto = false` (no output archiving). + /// + /// # Errors + /// + /// Returns [`ResolveTaskConfigError`] if a glob pattern is invalid or resolves + /// outside the workspace root. + pub fn from_user_output_config( + user_outputs: Option<&Vec>, + package_dir: &AbsolutePath, + workspace_root: &AbsolutePath, + ) -> Result { + let mut positive_globs = BTreeSet::new(); + let mut negative_globs = BTreeSet::new(); + + let Some(entries) = user_outputs else { + return Ok(Self { includes_auto: false, positive_globs, negative_globs }); + }; + + for entry in entries { + match entry { + UserOutputEntry::Glob(pattern) => { + Self::insert_glob( + pattern.as_str(), + package_dir, + workspace_root, + &mut positive_globs, + &mut negative_globs, + )?; + } + UserOutputEntry::GlobWithBase(GlobWithBase { pattern, base }) => { + let base_dir = match base { + InputBase::Package => package_dir, + InputBase::Workspace => workspace_root, + }; + Self::insert_glob( + pattern.as_str(), + base_dir, + workspace_root, + &mut positive_globs, + &mut negative_globs, + )?; + } + } + } + + Ok(Self { includes_auto: false, positive_globs, negative_globs }) + } + /// Insert a glob pattern into the appropriate set (positive or negative), /// resolving it relative to the given base directory. fn insert_glob( @@ -426,7 +489,7 @@ mod tests { #[test] fn test_resolved_input_config_default_auto() { - let config = ResolvedInputConfig::default_auto(); + let config = ResolvedGlobConfig::default_auto(); assert!(config.includes_auto); assert!(config.positive_globs.is_empty()); assert!(config.negative_globs.is_empty()); @@ -436,7 +499,7 @@ mod tests { fn test_resolved_input_config_from_none() { let (pkg, ws) = test_paths(); // None means default to auto-inference - let config = ResolvedInputConfig::from_user_config(None, &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(None, &pkg, &ws).unwrap(); assert!(config.includes_auto); assert!(config.positive_globs.is_empty()); assert!(config.negative_globs.is_empty()); @@ -447,7 +510,7 @@ mod tests { let (pkg, ws) = test_paths(); // Empty array means no inputs, inference disabled let user_inputs = vec![]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(!config.includes_auto); assert!(config.positive_globs.is_empty()); assert!(config.negative_globs.is_empty()); @@ -457,7 +520,7 @@ mod tests { fn test_resolved_input_config_auto_only() { let (pkg, ws) = test_paths(); let user_inputs = vec![UserInputEntry::Auto(AutoInput { auto: true })]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(config.includes_auto); assert!(config.positive_globs.is_empty()); assert!(config.negative_globs.is_empty()); @@ -467,7 +530,7 @@ mod tests { fn test_resolved_input_config_auto_false_ignored() { let (pkg, ws) = test_paths(); let user_inputs = vec![UserInputEntry::Auto(AutoInput { auto: false })]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(!config.includes_auto); assert!(config.positive_globs.is_empty()); assert!(config.negative_globs.is_empty()); @@ -481,7 +544,7 @@ mod tests { UserInputEntry::Glob("src/**/*.ts".into()), UserInputEntry::Glob("package.json".into()), ]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(!config.includes_auto); assert_eq!(config.positive_globs.len(), 2); // Globs should now be workspace-root-relative @@ -497,7 +560,7 @@ mod tests { UserInputEntry::Glob("src/**".into()), UserInputEntry::Glob("!src/**/*.test.ts".into()), ]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(!config.includes_auto); assert_eq!(config.positive_globs.len(), 1); assert!(config.positive_globs.contains("packages/my-pkg/src/**")); @@ -513,7 +576,7 @@ mod tests { UserInputEntry::Auto(AutoInput { auto: true }), UserInputEntry::Glob("!node_modules/**".into()), ]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(config.includes_auto); assert_eq!(config.positive_globs.len(), 1); assert!(config.positive_globs.contains("packages/my-pkg/package.json")); @@ -529,7 +592,7 @@ mod tests { UserInputEntry::Glob("src/**/*.ts".into()), UserInputEntry::Auto(AutoInput { auto: true }), ]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(config.includes_auto); } @@ -537,7 +600,7 @@ mod tests { fn test_resolved_input_config_dotdot_resolution() { let (pkg, ws) = test_paths(); let user_inputs = vec![UserInputEntry::Glob("../shared/src/**".into())]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert_eq!(config.positive_globs.len(), 1); assert!( config.positive_globs.contains("packages/shared/src/**"), @@ -550,7 +613,7 @@ mod tests { fn test_resolved_input_config_outside_workspace_error() { let (pkg, ws) = test_paths(); let user_inputs = vec![UserInputEntry::Glob("../../../outside/**".into())]; - let result = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws); + let result = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws); assert!(result.is_err()); assert!(matches!(result.unwrap_err(), ResolveTaskConfigError::GlobOutsideWorkspace { .. })); } @@ -562,7 +625,7 @@ mod tests { pattern: "configs/tsconfig.json".into(), base: InputBase::Workspace, })]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(!config.includes_auto); assert_eq!(config.positive_globs.len(), 1); // Workspace-base: should NOT have the package prefix @@ -580,7 +643,7 @@ mod tests { pattern: "!dist/**".into(), base: InputBase::Workspace, })]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert_eq!(config.negative_globs.len(), 1); assert!( config.negative_globs.contains("dist/**"), @@ -597,7 +660,7 @@ mod tests { pattern: "src/**/*.ts".into(), base: InputBase::Package, })]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert_eq!(config.positive_globs.len(), 1); assert!( config.positive_globs.contains("packages/my-pkg/src/**/*.ts"), @@ -621,7 +684,7 @@ mod tests { base: InputBase::Workspace, }), ]; - let config = ResolvedInputConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); + let config = ResolvedGlobConfig::from_user_config(Some(&user_inputs), &pkg, &ws).unwrap(); assert!(config.includes_auto); assert_eq!(config.positive_globs.len(), 2); assert!(config.positive_globs.contains("packages/my-pkg/src/**")); diff --git a/crates/vite_task_graph/src/config/user.rs b/crates/vite_task_graph/src/config/user.rs index 79255ad63..aeee38608 100644 --- a/crates/vite_task_graph/src/config/user.rs +++ b/crates/vite_task_graph/src/config/user.rs @@ -65,6 +65,22 @@ pub enum UserInputEntry { /// Default (when field omitted): `[{auto: true}]` - infer from file accesses. pub type UserInputsConfig = Vec; +/// A single output entry in the `output` array. +/// +/// Outputs can be: +/// - Glob patterns as strings (resolved relative to the package directory) +/// - Object form with explicit base: `{ "pattern": "...", "base": "workspace" | "package" }` +#[derive(Debug, Deserialize, PartialEq, Eq, Clone)] +// TS derive macro generates code using std types that clippy disallows; skip derive during linting +#[cfg_attr(all(test, not(clippy)), derive(TS))] +#[serde(untagged)] +pub enum UserOutputEntry { + /// Glob pattern (positive or negative starting with `!`), resolved relative to package dir + Glob(Str), + /// Glob pattern with explicit base directory + GlobWithBase(GlobWithBase), +} + /// Cache-related fields of a task defined by user in `vite.config.*` #[derive(Debug, Deserialize, PartialEq, Eq)] // TS derive macro generates code using std types that clippy disallows; skip derive during linting @@ -125,6 +141,16 @@ pub struct EnabledCacheConfig { #[serde(default)] #[cfg_attr(all(test, not(clippy)), ts(inline))] pub input: Option, + + /// Output files to archive after a successful run and restore on cache hit. + /// + /// - Omitted or `[]` (empty): no output archiving (default) + /// - Glob patterns (e.g. `"dist/**"`) select specific output files, relative to the package directory + /// - `{pattern: "...", base: "workspace" | "package"}` specifies a glob with an explicit base directory + /// - Negative patterns (e.g. `"!dist/cache/**"`) exclude matched files + #[serde(default)] + #[cfg_attr(all(test, not(clippy)), ts(inline))] + pub output: Option>, } /// Options for user-defined tasks in `vite.config.*`, excluding the command. @@ -160,6 +186,7 @@ impl Default for UserTaskOptions { env: None, untracked_env: None, input: None, + output: None, }, }, } @@ -428,6 +455,7 @@ mod tests { env: Some(std::iter::once("NODE_ENV".into()).collect()), untracked_env: Some(std::iter::once("FOO".into()).collect()), input: None, + output: None, } }, ); diff --git a/crates/vite_task_plan/src/cache_metadata.rs b/crates/vite_task_plan/src/cache_metadata.rs index c3435c345..11a1d957e 100644 --- a/crates/vite_task_plan/src/cache_metadata.rs +++ b/crates/vite_task_plan/src/cache_metadata.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use serde::{Deserialize, Serialize}; use vite_path::RelativePathBuf; use vite_str::{self, Str}; -use vite_task_graph::config::ResolvedInputConfig; +use vite_task_graph::config::ResolvedGlobConfig; use wincode::{SchemaRead, SchemaWrite}; use crate::envs::EnvFingerprints; @@ -45,7 +45,11 @@ pub struct CacheMetadata { /// Resolved input configuration for cache fingerprinting. /// Used at execution time to determine what files to track. - pub input_config: ResolvedInputConfig, + pub input_config: ResolvedGlobConfig, + + /// Resolved output configuration for cache restoration. + /// Used at execution time to determine what output files to archive. + pub output_config: ResolvedGlobConfig, } /// Fingerprint for spawn execution that affects caching. diff --git a/crates/vite_task_plan/src/plan.rs b/crates/vite_task_plan/src/plan.rs index 1a91d9165..89e892b48 100644 --- a/crates/vite_task_plan/src/plan.rs +++ b/crates/vite_task_plan/src/plan.rs @@ -20,7 +20,7 @@ use vite_str::Str; use vite_task_graph::{ TaskNodeIndex, TaskSource, config::{ - CacheConfig, EnabledCacheConfig, ResolvedGlobalCacheConfig, ResolvedInputConfig, + CacheConfig, EnabledCacheConfig, ResolvedGlobConfig, ResolvedGlobalCacheConfig, ResolvedTaskOptions, user::{UserCacheConfig, UserTaskOptions}, }, @@ -466,7 +466,8 @@ fn resolve_synthetic_cache_config( Ok(match synthetic_cache_config { UserCacheConfig::Disabled { .. } => Option::None, UserCacheConfig::Enabled { enabled_cache_config, .. } => { - let EnabledCacheConfig { env, untracked_env, input } = enabled_cache_config; + let EnabledCacheConfig { env, untracked_env, input, output } = + enabled_cache_config; parent_config.env_config.fingerprinted_envs.extend(env.unwrap_or_default()); parent_config .env_config @@ -474,7 +475,7 @@ fn resolve_synthetic_cache_config( .extend(untracked_env.unwrap_or_default()); if let Some(input) = input { - let synthetic_input = ResolvedInputConfig::from_user_config( + let synthetic_input = ResolvedGlobConfig::from_user_config( Some(&input), package_dir, workspace_path, @@ -493,6 +494,23 @@ fn resolve_synthetic_cache_config( .extend(synthetic_input.negative_globs); } + if let Some(output) = output { + let synthetic_output = ResolvedGlobConfig::from_user_output_config( + Some(&output), + package_dir, + workspace_path, + ) + .map_err(Error::ResolveTaskConfig)?; + parent_config + .output_config + .positive_globs + .extend(synthetic_output.positive_globs); + parent_config + .output_config + .negative_globs + .extend(synthetic_output.negative_globs); + } + Some(parent_config) } }) @@ -628,6 +646,7 @@ fn plan_spawn_execution( spawn_fingerprint, execution_cache_key, input_config: cache_config.input_config.clone(), + output_config: cache_config.output_config.clone(), }); } } @@ -853,7 +872,7 @@ mod tests { use vite_path::AbsolutePathBuf; use vite_str::Str; use vite_task_graph::config::{ - CacheConfig, EnabledCacheConfig, EnvConfig, ResolvedInputConfig, + CacheConfig, EnabledCacheConfig, EnvConfig, ResolvedGlobConfig, user::{UserCacheConfig, UserInputEntry}, }; @@ -879,11 +898,16 @@ mod tests { fingerprinted_envs: FxHashSet::default(), untracked_env: FxHashSet::default(), }, - input_config: ResolvedInputConfig { + input_config: ResolvedGlobConfig { includes_auto, positive_globs: positive_globs.iter().map(|s| Str::from(*s)).collect(), negative_globs: BTreeSet::new(), }, + output_config: ResolvedGlobConfig { + includes_auto: false, + positive_globs: BTreeSet::new(), + negative_globs: BTreeSet::new(), + }, } } @@ -901,6 +925,7 @@ mod tests { env: None, untracked_env: None, input: None, + output: None, }), &pkg, &ws, @@ -922,6 +947,7 @@ mod tests { env: None, untracked_env: None, input: Some(vec![UserInputEntry::Glob("config/**".into())]), + output: None, }), &pkg, &ws, @@ -943,6 +969,7 @@ mod tests { env: None, untracked_env: None, input: Some(vec![UserInputEntry::Glob("config/**".into())]), + output: None, }), &pkg, &ws, @@ -970,6 +997,7 @@ mod tests { UserInputEntry::Glob("config/**".into()), UserInputEntry::Auto(vite_task_graph::config::user::AutoInput { auto: true }), ]), + output: None, }), &pkg, &ws, @@ -995,6 +1023,7 @@ mod tests { env: None, untracked_env: None, input: Some(vec![UserInputEntry::Glob("config/**".into())]), + output: None, }), &pkg, &ws, @@ -1018,6 +1047,7 @@ mod tests { env: None, untracked_env: None, input: Some(vec![UserInputEntry::Glob("config/**".into())]), + output: None, }), &pkg, &ws, @@ -1050,6 +1080,7 @@ mod tests { env: None, untracked_env: None, input: Some(vec![UserInputEntry::Glob("!dist/**".into())]), + output: None, }), &pkg, &ws, diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/additional_env/snapshots/query_tool_synthetic_task_in_user_task.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/additional_env/snapshots/query_tool_synthetic_task_in_user_task.jsonc index 9f64c0760..63bad854a 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/additional_env/snapshots/query_tool_synthetic_task_in_user_task.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/additional_env/snapshots/query_tool_synthetic_task_in_user_task.jsonc @@ -60,6 +60,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/additional_env/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/additional_env/snapshots/task_graph.jsonc index 253fae9f5..da3f2d593 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/additional_env/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/additional_env/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_enables_script_caching.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_enables_script_caching.jsonc index 67b1ae1c5..63272b8d8 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_enables_script_caching.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_enables_script_caching.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_enables_task_caching_even_when_cache_tasks_is_false.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_enables_task_caching_even_when_cache_tasks_is_false.jsonc index 4ceddbc22..af84a0ef1 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_enables_task_caching_even_when_cache_tasks_is_false.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_enables_task_caching_even_when_cache_tasks_is_false.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_on_task_with_per_task_cache_true_enables_caching.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_on_task_with_per_task_cache_true_enables_caching.jsonc index cf1e3a1ea..44c82a701 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_on_task_with_per_task_cache_true_enables_caching.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/query___cache_on_task_with_per_task_cache_true_enables_caching.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/task_graph.jsonc index feb1a3c63..d98768c05 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_cli_override/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -116,6 +126,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -150,6 +165,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_echo_and_lint_with_extra_args.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_echo_and_lint_with_extra_args.jsonc index 6bcfb7bc0..f589579d4 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_echo_and_lint_with_extra_args.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_echo_and_lint_with_extra_args.jsonc @@ -87,6 +87,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_lint_and_echo_with_extra_args.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_lint_and_echo_with_extra_args.jsonc index e1997caff..586844bfc 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_lint_and_echo_with_extra_args.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_lint_and_echo_with_extra_args.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_normal_task_with_extra_args.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_normal_task_with_extra_args.jsonc index e273f579d..07660f771 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_normal_task_with_extra_args.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_normal_task_with_extra_args.jsonc @@ -60,6 +60,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_in_user_task.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_in_user_task.jsonc index 10fcc3e07..a75b9dfc1 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_in_user_task.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_in_user_task.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_in_user_task_with_cwd.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_in_user_task_with_cwd.jsonc index 10fcc3e07..a75b9dfc1 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_in_user_task_with_cwd.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_in_user_task_with_cwd.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_with_extra_args_in_user_task.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_with_extra_args_in_user_task.jsonc index 364b3e976..71683ee96 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_with_extra_args_in_user_task.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/query_synthetic_task_with_extra_args_in_user_task.jsonc @@ -61,6 +61,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/task_graph.jsonc index 2ca6de9ad..13b2802fd 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_keys/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_default/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_default/snapshots/task_graph.jsonc index 876930785..5129800c3 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_default/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_default/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_enabled/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_enabled/snapshots/task_graph.jsonc index bc7667e73..8f084f7de 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_enabled/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_enabled/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/query_another_task_cached_by_default.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/query_another_task_cached_by_default.jsonc index 901475f0c..b344b082b 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/query_another_task_cached_by_default.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/query_another_task_cached_by_default.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/query_task_cached_by_default.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/query_task_cached_by_default.jsonc index d34e6f5ce..78a406fa1 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/query_task_cached_by_default.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/query_task_cached_by_default.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/task_graph.jsonc index a5632de79..cb6afda93 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_scripts_task_override/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_sharing/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_sharing/snapshots/task_graph.jsonc index 4688df733..ebfa2e8b3 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_sharing/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_sharing/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_subcommand/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_subcommand/snapshots/task_graph.jsonc index b8b926650..fb069d24d 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_subcommand/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_subcommand/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_tasks_disabled/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_tasks_disabled/snapshots/task_graph.jsonc index 1d5d0edf9..55ebae45d 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_tasks_disabled/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_tasks_disabled/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/query_script_cached_when_global_cache_true.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/query_script_cached_when_global_cache_true.jsonc index 7d74b65d7..a82d5e2f9 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/query_script_cached_when_global_cache_true.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/query_script_cached_when_global_cache_true.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/query_task_cached_when_global_cache_true.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/query_task_cached_when_global_cache_true.jsonc index dbcb6a68e..a16181471 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/query_task_cached_when_global_cache_true.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/query_task_cached_when_global_cache_true.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/task_graph.jsonc index b19be3704..fff2e8ef4 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cache_true_no_force_enable/snapshots/task_graph.jsonc @@ -48,6 +48,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -82,6 +87,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/query_cd_before_vt_lint_should_put_synthetic_task_under_cwd.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/query_cd_before_vt_lint_should_put_synthetic_task_under_cwd.jsonc index 1f4636675..d226a413b 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/query_cd_before_vt_lint_should_put_synthetic_task_under_cwd.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/query_cd_before_vt_lint_should_put_synthetic_task_under_cwd.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/query_cd_before_vt_run_should_not_affect_expanded_task_cwd.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/query_cd_before_vt_run_should_not_affect_expanded_task_cwd.jsonc index 93c1d00ef..4142b0960 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/query_cd_before_vt_run_should_not_affect_expanded_task_cwd.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/query_cd_before_vt_run_should_not_affect_expanded_task_cwd.jsonc @@ -84,6 +84,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/task_graph.jsonc index 4fc7ccaad..a0ea080a3 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cd_in_scripts/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/comprehensive_task_graph/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/comprehensive_task_graph/snapshots/task_graph.jsonc index c02cdb6ed..9597c4b3a 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/comprehensive_task_graph/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/comprehensive_task_graph/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -162,6 +182,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -196,6 +221,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -230,6 +260,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -264,6 +299,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -298,6 +338,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -332,6 +377,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -366,6 +416,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -400,6 +455,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -434,6 +494,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -468,6 +533,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -502,6 +572,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -536,6 +611,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -570,6 +650,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -604,6 +689,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -638,6 +728,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -672,6 +767,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -706,6 +806,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -740,6 +845,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -774,6 +884,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/conflict_test/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/conflict_test/snapshots/task_graph.jsonc index 9b82411d5..e246a1db3 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/conflict_test/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/conflict_test/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cycle_dependency/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cycle_dependency/snapshots/task_graph.jsonc index 6336fe8ae..2c07f9bd1 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/cycle_dependency/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/cycle_dependency/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -65,6 +70,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/dependency_both_topo_and_explicit/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/dependency_both_topo_and_explicit/snapshots/task_graph.jsonc index ae1236726..9b4779c26 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/dependency_both_topo_and_explicit/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/dependency_both_topo_and_explicit/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -65,6 +70,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/duplicate_package_names/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/duplicate_package_names/snapshots/task_graph.jsonc index 2b1c82e45..b3d46d315 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/duplicate_package_names/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/duplicate_package_names/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/empty_package_test/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/empty_package_test/snapshots/task_graph.jsonc index 726f29388..0a88447df 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/empty_package_test/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/empty_package_test/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -100,6 +105,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -134,6 +144,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -168,6 +183,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -207,6 +227,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -241,6 +266,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -275,6 +305,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -309,6 +344,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/explicit_deps_workspace/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/explicit_deps_workspace/snapshots/task_graph.jsonc index 3d0fc4335..4c6c21e3b 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/explicit_deps_workspace/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/explicit_deps_workspace/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -95,6 +100,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -129,6 +139,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -163,6 +178,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -197,6 +217,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -231,6 +256,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -270,6 +300,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -304,6 +339,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -338,6 +378,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -381,6 +426,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/extra_args_not_forwarded_to_depends_on/snapshots/query_extra_args_only_reach_requested_task.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/extra_args_not_forwarded_to_depends_on/snapshots/query_extra_args_only_reach_requested_task.jsonc index a6b86de0d..da9501116 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/extra_args_not_forwarded_to_depends_on/snapshots/query_extra_args_only_reach_requested_task.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/extra_args_not_forwarded_to_depends_on/snapshots/query_extra_args_only_reach_requested_task.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { @@ -140,6 +145,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/extra_args_not_forwarded_to_depends_on/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/extra_args_not_forwarded_to_depends_on/snapshots/task_graph.jsonc index a110c9d85..e483d70c4 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/extra_args_not_forwarded_to_depends_on/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/extra_args_not_forwarded_to_depends_on/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/filter_workspace/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/filter_workspace/snapshots/task_graph.jsonc index 13011495a..27c09ea17 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/filter_workspace/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/filter_workspace/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -162,6 +182,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -196,6 +221,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -230,6 +260,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -264,6 +299,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -298,6 +338,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -332,6 +377,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -366,6 +416,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -400,6 +455,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -434,6 +494,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/input_trailing_slash/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/input_trailing_slash/snapshots/task_graph.jsonc index a793212e7..11c015377 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/input_trailing_slash/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/input_trailing_slash/snapshots/task_graph.jsonc @@ -30,6 +30,11 @@ "negative_globs": [ "dist/**" ] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/input_workspace_base/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/input_workspace_base/snapshots/task_graph.jsonc index 03b8005dc..b82a6e8da 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/input_workspace_base/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/input_workspace_base/snapshots/task_graph.jsonc @@ -31,6 +31,11 @@ "negative_globs": [ "dist/**" ] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_nested___cache_enables_inner_task_caching.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_nested___cache_enables_inner_task_caching.jsonc index e1b6e4bb9..759b8f84e 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_nested___cache_enables_inner_task_caching.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_nested___cache_enables_inner_task_caching.jsonc @@ -84,6 +84,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_outer___cache_propagates_to_nested_run_without_flags.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_outer___cache_propagates_to_nested_run_without_flags.jsonc index d3ba94f6a..a4f58176f 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_outer___cache_propagates_to_nested_run_without_flags.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_outer___cache_propagates_to_nested_run_without_flags.jsonc @@ -84,6 +84,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_outer___no_cache_does_not_propagate_into_nested___cache.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_outer___no_cache_does_not_propagate_into_nested___cache.jsonc index bfd033588..6e384f70a 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_outer___no_cache_does_not_propagate_into_nested___cache.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/query_outer___no_cache_does_not_propagate_into_nested___cache.jsonc @@ -84,6 +84,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/task_graph.jsonc index 269edec05..1200a2faa 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_cache_override/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_tasks/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_tasks/snapshots/task_graph.jsonc index 8492756ac..eef8a1a13 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_tasks/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/nested_tasks/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/package_self_dependency/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/package_self_dependency/snapshots/task_graph.jsonc index 837fc00b2..599e3b086 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/package_self_dependency/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/package_self_dependency/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/parallel_and_concurrency/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/parallel_and_concurrency/snapshots/task_graph.jsonc index 5c4ce9ebd..9c50b6a60 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/parallel_and_concurrency/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/parallel_and_concurrency/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -162,6 +182,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/pnpm_workspace_packages_optional/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/pnpm_workspace_packages_optional/snapshots/task_graph.jsonc index 8c09f9552..aef412250 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/pnpm_workspace_packages_optional/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/pnpm_workspace_packages_optional/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/recursive_topological_workspace/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/recursive_topological_workspace/snapshots/task_graph.jsonc index 49781abe1..a902fcadd 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/recursive_topological_workspace/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/recursive_topological_workspace/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -162,6 +182,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -196,6 +221,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -230,6 +260,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -264,6 +299,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks/snapshots/task_graph.jsonc index bb5913bb4..e5271222f 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -162,6 +182,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -196,6 +221,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_disabled/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_disabled/snapshots/task_graph.jsonc index 43f2ac980..2961d7313 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_disabled/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_disabled/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_nested_run/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_nested_run/snapshots/task_graph.jsonc index b7db12108..36a3f67d0 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_nested_run/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_nested_run/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_task_no_hook/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_task_no_hook/snapshots/task_graph.jsonc index a70ddee47..005d03240 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_task_no_hook/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/script_hooks_task_no_hook/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/shell_fallback/snapshots/query_shell_fallback_for_pipe_command.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/shell_fallback/snapshots/query_shell_fallback_for_pipe_command.jsonc index 738582f79..b3da6fda6 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/shell_fallback/snapshots/query_shell_fallback_for_pipe_command.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/shell_fallback/snapshots/query_shell_fallback_for_pipe_command.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/shell_fallback/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/shell_fallback/snapshots/task_graph.jsonc index c0d1aba3d..51fd7c317 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/shell_fallback/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/shell_fallback/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_parent_cache_false_does_not_affect_expanded_query_tasks.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_parent_cache_false_does_not_affect_expanded_query_tasks.jsonc index 06e4fc593..2df26b1a1 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_parent_cache_false_does_not_affect_expanded_query_tasks.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_parent_cache_false_does_not_affect_expanded_query_tasks.jsonc @@ -84,6 +84,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_script_cache_false_does_not_affect_expanded_synthetic_cache.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_script_cache_false_does_not_affect_expanded_synthetic_cache.jsonc index a6bbadeaf..d5e183324 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_script_cache_false_does_not_affect_expanded_synthetic_cache.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_script_cache_false_does_not_affect_expanded_synthetic_cache.jsonc @@ -84,6 +84,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_task_untrackedEnv_inherited_by_synthetic.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_task_untrackedEnv_inherited_by_synthetic.jsonc index b36b29e28..812734076 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_task_untrackedEnv_inherited_by_synthetic.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_task_untrackedEnv_inherited_by_synthetic.jsonc @@ -59,6 +59,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_task_with_cache_true_enables_synthetic_cache.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_task_with_cache_true_enables_synthetic_cache.jsonc index c3e7c5ffb..9ccca7a11 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_task_with_cache_true_enables_synthetic_cache.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/query_task_with_cache_true_enables_synthetic_cache.jsonc @@ -58,6 +58,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/task_graph.jsonc index b1cfddc17..b550e3faf 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_cache_disabled/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -116,6 +126,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -151,6 +166,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -185,6 +205,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_in_subpackage/snapshots/query_synthetic_in_subpackage.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_in_subpackage/snapshots/query_synthetic_in_subpackage.jsonc index 2c60292b6..5a40fe048 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_in_subpackage/snapshots/query_synthetic_in_subpackage.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_in_subpackage/snapshots/query_synthetic_in_subpackage.jsonc @@ -84,6 +84,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_in_subpackage/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_in_subpackage/snapshots/task_graph.jsonc index 554d3ab06..f45c1001a 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_in_subpackage/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/synthetic_in_subpackage/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/transitive_skip_intermediate/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/transitive_skip_intermediate/snapshots/task_graph.jsonc index 23a84412a..40ea1a092 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/transitive_skip_intermediate/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/transitive_skip_intermediate/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/vpr_shorthand/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/vpr_shorthand/snapshots/task_graph.jsonc index 0ae0ad7d5..00be69c6c 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/vpr_shorthand/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/vpr_shorthand/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/query_dev_filter_from_root.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/query_dev_filter_from_root.jsonc index e235a1f01..ba1f67e9e 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/query_dev_filter_from_root.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/query_dev_filter_from_root.jsonc @@ -64,6 +64,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/query_dev_in_subpackage.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/query_dev_in_subpackage.jsonc index a7e87dd0e..dc5f9a939 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/query_dev_in_subpackage.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/query_dev_in_subpackage.jsonc @@ -64,6 +64,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } }, "spawn_command": { diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/task_graph.jsonc index 9eb638925..d8a3142d4 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/windows_cmd_shim_rewrite/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_cd_no_skip/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_cd_no_skip/snapshots/task_graph.jsonc index 5a9820d52..f7ee35330 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_cd_no_skip/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_cd_no_skip/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_depends_on_passthrough/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_depends_on_passthrough/snapshots/task_graph.jsonc index 683023848..2a23ddc71 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_depends_on_passthrough/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_depends_on_passthrough/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -65,6 +70,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -99,6 +109,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -133,6 +148,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_multi_command/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_multi_command/snapshots/task_graph.jsonc index 1cd3ba456..f031c893d 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_multi_command/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_multi_command/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_mutual_recursion/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_mutual_recursion/snapshots/task_graph.jsonc index 1e0d1452d..5e3cee720 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_mutual_recursion/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_mutual_recursion/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -128,6 +143,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_no_package_json/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_no_package_json/snapshots/task_graph.jsonc index 56576d866..5a64e4c3a 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_no_package_json/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_no_package_json/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } diff --git a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_self_reference/snapshots/task_graph.jsonc b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_self_reference/snapshots/task_graph.jsonc index 0b4cbfe81..76f667459 100644 --- a/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_self_reference/snapshots/task_graph.jsonc +++ b/crates/vite_task_plan/tests/plan_snapshots/fixtures/workspace_root_self_reference/snapshots/task_graph.jsonc @@ -26,6 +26,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -60,6 +65,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } } @@ -94,6 +104,11 @@ "includes_auto": true, "positive_globs": [], "negative_globs": [] + }, + "output_config": { + "includes_auto": false, + "positive_globs": [], + "negative_globs": [] } } }