@@ -187,17 +187,23 @@ fn compare_generated_header(
187
187
looked_at,
188
188
) ,
189
189
} ;
190
-
190
+ let do_formatting = builder . do_formatting ;
191
191
let ( builder, roundtrip_builder) = builder. into_builder ( check_roundtrip) ?;
192
192
193
193
// We skip the generate() error here so we get a full diff below
194
194
let actual = match builder. generate ( ) {
195
- Ok ( bindings) => format_code ( bindings. to_string ( ) ) . map_err ( |err| {
196
- Error :: new (
197
- ErrorKind :: Other ,
198
- format ! ( "Cannot parse the generated bindings: {err}" ) ,
199
- )
200
- } ) ?,
195
+ Ok ( bindings) => {
196
+ if do_formatting {
197
+ format_code ( bindings. to_string ( ) ) . map_err ( |err| {
198
+ Error :: new (
199
+ ErrorKind :: Other ,
200
+ format ! ( "Cannot parse the generated bindings: {err}" ) ,
201
+ )
202
+ } ) ?
203
+ } else {
204
+ bindings. to_string ( )
205
+ }
206
+ }
201
207
Err ( _) => "/* error generating bindings */\n " . into ( ) ,
202
208
} ;
203
209
@@ -237,6 +243,7 @@ fn builder() -> Builder {
237
243
struct BuilderState {
238
244
builder : Builder ,
239
245
parse_callbacks : Option < String > ,
246
+ do_formatting : bool ,
240
247
}
241
248
242
249
impl BuilderState {
@@ -255,6 +262,7 @@ impl BuilderState {
255
262
Some ( BuilderState {
256
263
builder,
257
264
parse_callbacks : self . parse_callbacks ,
265
+ do_formatting : self . do_formatting ,
258
266
} )
259
267
} else {
260
268
None
@@ -273,6 +281,7 @@ fn create_bindgen_builder(header: &Path) -> Result<BuilderState, Error> {
273
281
// Scoop up bindgen-flags from test header
274
282
let mut flags = Vec :: with_capacity ( 2 ) ;
275
283
let mut parse_callbacks = None ;
284
+ let mut do_formatting = true ;
276
285
277
286
for line in reader. lines ( ) {
278
287
let line = line?;
@@ -298,6 +307,8 @@ fn create_bindgen_builder(header: &Path) -> Result<BuilderState, Error> {
298
307
let parse_cb =
299
308
line. split ( "bindgen-parse-callbacks: " ) . last ( ) . unwrap ( ) ;
300
309
parse_callbacks = Some ( parse_cb. to_owned ( ) ) ;
310
+ } else if line. contains ( "bindgen-skip-formatting" ) {
311
+ do_formatting = false ;
301
312
}
302
313
}
303
314
@@ -345,6 +356,7 @@ fn create_bindgen_builder(header: &Path) -> Result<BuilderState, Error> {
345
356
Ok ( BuilderState {
346
357
builder,
347
358
parse_callbacks,
359
+ do_formatting,
348
360
} )
349
361
}
350
362
0 commit comments