@@ -749,6 +749,52 @@ test("revert preserves file that existed in snapshot when deleted then recreated
749749 } )
750750} )
751751
752+ test ( "diffFull sets status based on git change type" , async ( ) => {
753+ await using tmp = await bootstrap ( )
754+ await Instance . provide ( {
755+ directory : tmp . path ,
756+ fn : async ( ) => {
757+ await Bun . write ( `${ tmp . path } /grow.txt` , "one\n" )
758+ await Bun . write ( `${ tmp . path } /trim.txt` , "line1\nline2\n" )
759+ await Bun . write ( `${ tmp . path } /delete.txt` , "gone" )
760+
761+ const before = await Snapshot . track ( )
762+ expect ( before ) . toBeTruthy ( )
763+
764+ await Bun . write ( `${ tmp . path } /grow.txt` , "one\ntwo\n" )
765+ await Bun . write ( `${ tmp . path } /trim.txt` , "line1\n" )
766+ await $ `rm ${ tmp . path } /delete.txt` . quiet ( )
767+ await Bun . write ( `${ tmp . path } /added.txt` , "new" )
768+
769+ const after = await Snapshot . track ( )
770+ expect ( after ) . toBeTruthy ( )
771+
772+ const diffs = await Snapshot . diffFull ( before ! , after ! )
773+ expect ( diffs . length ) . toBe ( 4 )
774+
775+ const added = diffs . find ( ( d ) => d . file === "added.txt" )
776+ expect ( added ) . toBeDefined ( )
777+ expect ( added ! . status ) . toBe ( "added" )
778+
779+ const deleted = diffs . find ( ( d ) => d . file === "delete.txt" )
780+ expect ( deleted ) . toBeDefined ( )
781+ expect ( deleted ! . status ) . toBe ( "deleted" )
782+
783+ const grow = diffs . find ( ( d ) => d . file === "grow.txt" )
784+ expect ( grow ) . toBeDefined ( )
785+ expect ( grow ! . status ) . toBe ( "modified" )
786+ expect ( grow ! . additions ) . toBeGreaterThan ( 0 )
787+ expect ( grow ! . deletions ) . toBe ( 0 )
788+
789+ const trim = diffs . find ( ( d ) => d . file === "trim.txt" )
790+ expect ( trim ) . toBeDefined ( )
791+ expect ( trim ! . status ) . toBe ( "modified" )
792+ expect ( trim ! . additions ) . toBe ( 0 )
793+ expect ( trim ! . deletions ) . toBeGreaterThan ( 0 )
794+ } ,
795+ } )
796+ } )
797+
752798test ( "diffFull with new file additions" , async ( ) => {
753799 await using tmp = await bootstrap ( )
754800 await Instance . provide ( {
0 commit comments