@@ -42,7 +42,8 @@ func testFormatCustomOptions(t *testing.T) {
4242}
4343
4444func testFormatEditions (t * testing.T ) {
45- testFormatNoDiff (t , "testdata/editions" )
45+ testFormatNoDiff (t , "testdata/editions/2023" )
46+ testFormatError (t , "testdata/editions/2024" , `edition "2024" not yet fully supported; latest supported edition "2023"` )
4647}
4748
4849func testFormatProto2 (t * testing.T ) {
@@ -78,40 +79,54 @@ func testFormatNoDiff(t *testing.T, path string) {
7879 ctx := context .Background ()
7980 bucket , err := storageos .NewProvider ().NewReadWriteBucket (path )
8081 require .NoError (t , err )
82+
8183 moduleSetBuilder := bufmodule .NewModuleSetBuilder (ctx , slogtestext .NewLogger (t ), bufmodule .NopModuleDataProvider , bufmodule .NopCommitProvider )
8284 moduleSetBuilder .AddLocalModule (bucket , path , true )
8385 moduleSet , err := moduleSetBuilder .Build ()
8486 require .NoError (t , err )
85- readBucket , err := FormatModuleSet (ctx , moduleSet )
87+ formatBucket , err := FormatModuleSet (ctx , moduleSet )
8688 require .NoError (t , err )
87- require .NoError (
88- t ,
89- storage .WalkReadObjects (
89+ assertGolden := func (formatBucket storage.ReadBucket ) {
90+ err := storage .WalkReadObjects (
9091 ctx ,
91- readBucket ,
92+ formatBucket ,
9293 "" ,
9394 func (formattedFile storage.ReadObject ) error {
94- expectedPath := formattedFile .Path ()
95- t .Run (expectedPath , func (t * testing.T ) {
96- // The expected format result is the golden file. If
97- // this file IS a golden file, it is expected to not
98- // change.
99- if ! strings .HasSuffix (expectedPath , ".golden.proto" ) {
100- expectedPath = strings .Replace (expectedPath , ".proto" , ".golden.proto" , 1 )
101- }
102- formattedData , err := io .ReadAll (formattedFile )
103- require .NoError (t , err )
104- expectedFile , err := bucket .Get (ctx , expectedPath )
105- require .NoError (t , err )
106- expectedData , err := io .ReadAll (expectedFile )
107- require .NoError (t , err )
108- fileDiff , err := diff .Diff (ctx , expectedData , formattedData , expectedPath , formattedFile .Path ()+ " (formatted)" )
109- require .NoError (t , err )
110- require .Empty (t , string (fileDiff ))
111- })
95+ formattedData , err := io .ReadAll (formattedFile )
96+ require .NoError (t , err )
97+ expectedPath := strings .Replace (formattedFile .Path (), ".proto" , ".golden" , 1 )
98+ expectedData , err := storage .ReadPath (ctx , bucket , expectedPath )
99+ require .NoError (t , err )
100+ fileDiff , err := diff .Diff (ctx , expectedData , formattedData , expectedPath , formattedFile .Path ()+ " (formatted)" )
101+ require .NoError (t , err )
102+ require .Empty (t , string (fileDiff ))
112103 return nil
113104 },
114- ),
115- )
105+ )
106+ require .NoError (t , err )
107+ }
108+ assertGolden (formatBucket )
109+
110+ moduleSetBuilder = bufmodule .NewModuleSetBuilder (ctx , slogtestext .NewLogger (t ), bufmodule .NopModuleDataProvider , bufmodule .NopCommitProvider )
111+ moduleSetBuilder .AddLocalModule (formatBucket , path , true )
112+ moduleSet , err = moduleSetBuilder .Build ()
113+ require .NoError (t , err )
114+ reformattedBucket , err := FormatModuleSet (ctx , moduleSet )
115+ require .NoError (t , err )
116+ assertGolden (reformattedBucket )
117+ })
118+ }
119+
120+ func testFormatError (t * testing.T , path string , errContains string ) {
121+ t .Run (path , func (t * testing.T ) {
122+ ctx := context .Background ()
123+ bucket , err := storageos .NewProvider ().NewReadWriteBucket (path )
124+ require .NoError (t , err )
125+ moduleSetBuilder := bufmodule .NewModuleSetBuilder (ctx , slogtestext .NewLogger (t ), bufmodule .NopModuleDataProvider , bufmodule .NopCommitProvider )
126+ moduleSetBuilder .AddLocalModule (bucket , path , true )
127+ moduleSet , err := moduleSetBuilder .Build ()
128+ require .NoError (t , err )
129+ _ , err = FormatModuleSet (ctx , moduleSet )
130+ require .ErrorContains (t , err , errContains )
116131 })
117132}
0 commit comments