Skip to content

Commit c442594

Browse files
committed
Add some basic tests for subgraph
1 parent 60363ee commit c442594

File tree

1 file changed

+51
-4
lines changed
  • crates/turborepo-lockfiles/src/bun

1 file changed

+51
-4
lines changed

crates/turborepo-lockfiles/src/bun/mod.rs

+51-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use biome_json_formatter::context::JsonFormatOptions;
44
use biome_json_parser::JsonParserOptions;
55
use id::PossibleKeyIter;
66
use itertools::Itertools as _;
7-
use serde::{Deserialize, Serialize};
7+
use serde::{ser::SerializeTuple, Deserialize, Serialize};
88
use serde_json::Value;
99
use turborepo_errors::ParseDiagnostic;
1010

@@ -101,8 +101,6 @@ struct RootInfo {
101101

102102
impl Serialize for PackageEntry {
103103
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
104-
use serde::ser::SerializeTuple;
105-
106104
let mut tuple = serializer.serialize_tuple(4)?;
107105
tuple.serialize_element(&self.ident)?;
108106

@@ -366,7 +364,6 @@ impl PackageInfo {
366364
#[cfg(test)]
367365
mod test {
368366
use pretty_assertions::assert_eq;
369-
use serde_json::json;
370367
use test_case::test_case;
371368

372369
use super::*;
@@ -387,6 +384,56 @@ mod test {
387384
assert_eq!(result.key, expected);
388385
}
389386

387+
#[test]
388+
fn test_subgraph() {
389+
let lockfile = BunLockfile::from_str(BASIC_LOCKFILE).unwrap();
390+
let subgraph = lockfile
391+
.subgraph(&["".into(), "apps/docs".into()], &["[email protected]".into()])
392+
.unwrap();
393+
let subgraph_data = subgraph.lockfile().unwrap();
394+
395+
assert!(subgraph_data
396+
.packages
397+
.get("is-odd")
398+
.is_some_and(|pkg| pkg.ident == "[email protected]"));
399+
assert_eq!(
400+
subgraph_data.workspaces.keys().collect::<Vec<_>>(),
401+
vec!["", "apps/docs"]
402+
);
403+
}
404+
405+
#[test]
406+
fn test_patch_subgraph() {
407+
let lockfile = BunLockfile::from_str(PATCH_LOCKFILE).unwrap();
408+
let subgraph_a = lockfile
409+
.subgraph(&["".into(), "apps/a".into()], &["[email protected]".into()])
410+
.unwrap();
411+
let subgraph_a_data = subgraph_a.lockfile().unwrap();
412+
413+
assert!(subgraph_a_data
414+
.packages
415+
.get("is-odd")
416+
.is_some_and(|pkg| pkg.ident == "[email protected]"));
417+
assert_eq!(
418+
subgraph_a_data.workspaces.keys().collect::<Vec<_>>(),
419+
vec!["", "apps/a"]
420+
);
421+
422+
let subgraph_b = lockfile
423+
.subgraph(&["".into(), "apps/b".into()], &["[email protected]".into()])
424+
.unwrap();
425+
let subgraph_b_data = subgraph_b.lockfile().unwrap();
426+
427+
assert!(subgraph_b_data
428+
.packages
429+
.get("b/is-odd")
430+
.is_some_and(|pkg| pkg.ident == "[email protected]"));
431+
assert_eq!(
432+
subgraph_b_data.workspaces.keys().collect::<Vec<_>>(),
433+
vec!["", "apps/b"]
434+
);
435+
}
436+
390437
const TURBO_GEN_DEPS: &[&str] = [
391438
"@turbo/gen/chalk",
392439
"@turbo/gen/minimatch",

0 commit comments

Comments
 (0)