1- using System . Text ;
1+ using System . Text ;
22using Devlooped ;
33
44namespace Tests ;
@@ -24,7 +24,8 @@ public void TryRead_parses_multiple_inputs_and_app()
2424
2525 Assert . True ( success ) ;
2626 Assert . NotNull ( state ) ;
27- Assert . Equal ( Path . GetFullPath ( app ) , Path . GetFullPath ( state . App ) ) ;
27+ Assert . Equal ( Path . GetFullPath ( app ) , Path . GetFullPath ( state . App ! ) ) ;
28+ Assert . Null ( state . Bin ) ;
2829 Assert . Equal ( 2 , state . Inputs . Count ) ;
2930 Assert . Contains ( state . Inputs , p => Path . GetFullPath ( p ) == Path . GetFullPath ( inputA ) ) ;
3031 Assert . Contains ( state . Inputs , p => Path . GetFullPath ( p ) == Path . GetFullPath ( inputB ) ) ;
@@ -48,7 +49,7 @@ public void TryRead_parses_stamp_written_with_utf8_bom()
4849
4950 Assert . True ( success ) ;
5051 Assert . NotNull ( state ) ;
51- Assert . Equal ( Path . GetFullPath ( app ) , Path . GetFullPath ( state ! . App ) ) ;
52+ Assert . Equal ( Path . GetFullPath ( app ) , Path . GetFullPath ( state ! . App ! ) ) ;
5253 }
5354
5455 [ Fact ]
@@ -68,16 +69,59 @@ public void TryRead_parses_windows_paths_written_with_forward_slashes()
6869
6970 Assert . True ( success ) ;
7071 Assert . NotNull ( state ) ;
71- Assert . Equal ( Path . GetFullPath ( app ) , Path . GetFullPath ( state ! . App ) ) ;
72+ Assert . Equal ( Path . GetFullPath ( app ) , Path . GetFullPath ( state ! . App ! ) ) ;
7273 }
7374
7475 [ Fact ]
75- public void TryRead_returns_false_when_app_is_missing ( )
76+ public void TryRead_parses_bin_and_uses_last_bin_when_duplicated ( )
77+ {
78+ var dir = CreateTempDir ( ) ;
79+ var input = WriteFile ( dir , "app.cs" , "app" ) ;
80+ var binOld = WriteFile ( dir , "old.dll" , "old" ) ;
81+ var binNew = WriteFile ( dir , "new.dll" , "new" ) ;
82+ var stampPath = Path . Combine ( dir , "app.stamp" ) ;
83+
84+ File . WriteAllText ( stampPath , $ """
85+ input = { ToStampPath ( input ) }
86+ bin = { ToStampPath ( binOld ) }
87+ bin = { ToStampPath ( binNew ) }
88+ """ ) ;
89+
90+ var success = BuildState . TryRead ( stampPath , out var state ) ;
91+
92+ Assert . True ( success ) ;
93+ Assert . NotNull ( state ) ;
94+ Assert . Equal ( Path . GetFullPath ( binNew ) , Path . GetFullPath ( state ! . Bin ! ) ) ;
95+ }
96+
97+ [ Fact ]
98+ public void TryRead_succeeds_with_bin_only_no_app ( )
99+ {
100+ var dir = CreateTempDir ( ) ;
101+ var input = WriteFile ( dir , "app.cs" , "app" ) ;
102+ var bin = WriteFile ( dir , "app.dll" , "bin" ) ;
103+ var stampPath = Path . Combine ( dir , "app.stamp" ) ;
104+
105+ File . WriteAllText ( stampPath , $ """
106+ input = { ToStampPath ( input ) }
107+ bin = { ToStampPath ( bin ) }
108+ """ ) ;
109+
110+ var success = BuildState . TryRead ( stampPath , out var state ) ;
111+
112+ Assert . True ( success ) ;
113+ Assert . NotNull ( state ) ;
114+ Assert . Null ( state . App ) ;
115+ Assert . Equal ( Path . GetFullPath ( bin ) , Path . GetFullPath ( state . Bin ! ) ) ;
116+ }
117+
118+ [ Fact ]
119+ public void TryRead_returns_false_when_no_inputs ( )
76120 {
77121 var dir = CreateTempDir ( ) ;
78122 var stampPath = Path . Combine ( dir , "app.stamp" ) ;
79123 File . WriteAllText ( stampPath , """
80- input = app.cs
124+ app = app.exe
81125 """ ) ;
82126
83127 var success = BuildState . TryRead ( stampPath , out var state ) ;
0 commit comments