@@ -220,7 +220,7 @@ class BuildTarget(T.Generic[_R]):
220
220
221
221
name : str
222
222
path : str
223
- crate_type : T .List [CRATE_TYPE ] = dataclasses . field ( default_factory = lambda : [ 'lib' ])
223
+ crate_type : T .List [CRATE_TYPE ]
224
224
225
225
# https://doc.rust-lang.org/cargo/reference/cargo-targets.html#the-test-field
226
226
# True for lib, bin, test
@@ -274,6 +274,13 @@ class Binary(BuildTarget['raw.BuildTarget']):
274
274
"""Representation of a Cargo Bin Entry."""
275
275
276
276
doc : bool = True
277
+ crate_type : T .List [CRATE_TYPE ] = dataclasses .field (default_factory = lambda : ['bin' ])
278
+
279
+ @classmethod
280
+ def from_raw (cls , raw : raw .BuildTarget ) -> Self :
281
+ if 'path' not in raw :
282
+ raw ['path' ] = os .path .join ('bin' , raw ['name' ] + '.rs' )
283
+ return super ().from_raw (raw )
277
284
278
285
279
286
@dataclasses .dataclass
@@ -282,20 +289,42 @@ class Test(BuildTarget['raw.BuildTarget']):
282
289
"""Representation of a Cargo Test Entry."""
283
290
284
291
bench : bool = True
292
+ crate_type : T .List [CRATE_TYPE ] = dataclasses .field (default_factory = lambda : ['bin' ])
293
+
294
+ @classmethod
295
+ def from_raw (cls , raw : raw .BuildTarget ) -> Self :
296
+ if 'path' not in raw :
297
+ raw ['path' ] = os .path .join ('tests' , raw ['name' ] + '.rs' )
298
+ return super ().from_raw (raw )
285
299
286
300
@dataclasses .dataclass
287
301
class Benchmark (BuildTarget ['raw.BuildTarget' ]):
288
302
289
303
"""Representation of a Cargo Benchmark Entry."""
290
304
291
305
test : bool = True
306
+ crate_type : T .List [CRATE_TYPE ] = dataclasses .field (default_factory = lambda : ['bin' ])
307
+
308
+ @classmethod
309
+ def from_raw (cls , raw : raw .BuildTarget ) -> Self :
310
+ if 'path' not in raw :
311
+ raw ['path' ] = os .path .join ('benches' , raw ['name' ] + '.rs' )
312
+ return super ().from_raw (raw )
292
313
293
314
294
315
@dataclasses .dataclass
295
316
class Example (BuildTarget ['raw.BuildTarget' ]):
296
317
297
318
"""Representation of a Cargo Example Entry."""
298
319
320
+ crate_type : T .List [CRATE_TYPE ] = dataclasses .field (default_factory = lambda : ['bin' ])
321
+
322
+ @classmethod
323
+ def from_raw (cls , raw : raw .BuildTarget ) -> Self :
324
+ if 'path' not in raw :
325
+ raw ['path' ] = os .path .join ('examples' , raw ['name' ] + '.rs' )
326
+ return super ().from_raw (raw )
327
+
299
328
300
329
@dataclasses .dataclass
301
330
class Manifest :
0 commit comments