@@ -4,7 +4,7 @@ use biome_json_formatter::context::JsonFormatOptions;
4
4
use biome_json_parser:: JsonParserOptions ;
5
5
use id:: PossibleKeyIter ;
6
6
use itertools:: Itertools as _;
7
- use serde:: { Deserialize , Serialize } ;
7
+ use serde:: { ser :: SerializeTuple , Deserialize , Serialize } ;
8
8
use serde_json:: Value ;
9
9
use turborepo_errors:: ParseDiagnostic ;
10
10
@@ -101,8 +101,6 @@ struct RootInfo {
101
101
102
102
impl Serialize for PackageEntry {
103
103
fn serialize < S : serde:: Serializer > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > {
104
- use serde:: ser:: SerializeTuple ;
105
-
106
104
let mut tuple = serializer. serialize_tuple ( 4 ) ?;
107
105
tuple. serialize_element ( & self . ident ) ?;
108
106
@@ -366,7 +364,6 @@ impl PackageInfo {
366
364
#[ cfg( test) ]
367
365
mod test {
368
366
use pretty_assertions:: assert_eq;
369
- use serde_json:: json;
370
367
use test_case:: test_case;
371
368
372
369
use super :: * ;
@@ -387,6 +384,56 @@ mod test {
387
384
assert_eq ! ( result. key, expected) ;
388
385
}
389
386
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
+
390
437
const TURBO_GEN_DEPS : & [ & str ] = [
391
438
"@turbo/gen/chalk" ,
392
439
"@turbo/gen/minimatch" ,
0 commit comments