@@ -147,391 +147,3 @@ pub fn load_test_artifacts(
147147
148148 Ok ( targets)
149149}
150-
151- #[ cfg( test) ]
152- mod tests {
153- use super :: * ;
154- use crate :: scarb:: config:: ForkTarget ;
155- use assert_fs:: TempDir ;
156- use assert_fs:: fixture:: { FileWriteStr , PathChild , PathCopy } ;
157- use cheatnet:: runtime_extensions:: forge_config_extension:: config:: BlockId ;
158- use configuration:: load_package_config;
159- use forge_runner:: forge_config:: ForgeTrackedResource ;
160- use indoc:: { formatdoc, indoc} ;
161- use scarb_api:: metadata:: MetadataCommandExt ;
162- use scarb_metadata:: PackageId ;
163- use std:: env;
164- use test_utils:: { get_snforge_std_entry, tempdir_with_tool_versions} ;
165-
166- fn setup_package ( package_name : & str ) -> TempDir {
167- let temp = tempdir_with_tool_versions ( ) . unwrap ( ) ;
168- temp. copy_from (
169- format ! ( "tests/data/{package_name}" ) ,
170- & [ "**/*.cairo" , "**/*.toml" ] ,
171- )
172- . unwrap ( ) ;
173-
174- let snforge_std_entry = get_snforge_std_entry ( ) . unwrap ( ) ;
175-
176- let manifest_path = temp. child ( "Scarb.toml" ) ;
177- manifest_path
178- . write_str ( & formatdoc ! (
179- r#"
180- [package]
181- name = "{}"
182- version = "0.1.0"
183-
184- [dependencies]
185- starknet = "2.4.0"
186- {}
187-
188- [[tool.snforge.fork]]
189- name = "FIRST_FORK_NAME"
190- url = "http://some.rpc.url"
191- block_id.number = "1"
192-
193- [[tool.snforge.fork]]
194- name = "SECOND_FORK_NAME"
195- url = "http://some.rpc.url"
196- block_id.hash = "0xa"
197-
198- [[tool.snforge.fork]]
199- name = "THIRD_FORK_NAME"
200- url = "http://some.rpc.url"
201- block_id.hash = "10"
202-
203- [[tool.snforge.fork]]
204- name = "FOURTH_FORK_NAME"
205- url = "http://some.rpc.url"
206- block_id.tag = "latest"
207- "# ,
208- package_name,
209- snforge_std_entry
210- ) )
211- . unwrap ( ) ;
212-
213- temp
214- }
215-
216- #[ test]
217- fn get_forge_config_for_package ( ) {
218- let temp = setup_package ( "simple_package" ) ;
219- let scarb_metadata = ScarbCommand :: metadata ( )
220- . inherit_stderr ( )
221- . current_dir ( temp. path ( ) )
222- . run ( )
223- . unwrap ( ) ;
224-
225- let config = load_package_config :: < ForgeConfigFromScarb > (
226- & scarb_metadata,
227- & scarb_metadata. workspace . members [ 0 ] ,
228- )
229- . unwrap ( ) ;
230-
231- assert_eq ! (
232- config,
233- ForgeConfigFromScarb {
234- exit_first: false ,
235- fork: vec![
236- ForkTarget {
237- name: "FIRST_FORK_NAME" . to_string( ) ,
238- url: "http://some.rpc.url" . parse( ) . expect( "Should be valid url" ) ,
239- block_id: BlockId :: BlockNumber ( 1 ) ,
240- } ,
241- ForkTarget {
242- name: "SECOND_FORK_NAME" . to_string( ) ,
243- url: "http://some.rpc.url" . parse( ) . expect( "Should be valid url" ) ,
244- block_id: BlockId :: BlockHash ( 0xa . into( ) ) ,
245- } ,
246- ForkTarget {
247- name: "THIRD_FORK_NAME" . to_string( ) ,
248- url: "http://some.rpc.url" . parse( ) . expect( "Should be valid url" ) ,
249- block_id: BlockId :: BlockHash ( 10 . into( ) ) ,
250- } ,
251- ForkTarget {
252- name: "FOURTH_FORK_NAME" . to_string( ) ,
253- url: "http://some.rpc.url" . parse( ) . expect( "Should be valid url" ) ,
254- block_id: BlockId :: BlockTag ,
255- } ,
256- ] ,
257- fuzzer_runs: None ,
258- fuzzer_seed: None ,
259- max_n_steps: None ,
260- tracked_resource: ForgeTrackedResource :: SierraGas ,
261- detailed_resources: false ,
262- save_trace_data: false ,
263- build_profile: false ,
264- coverage: false ,
265- }
266- ) ;
267- }
268-
269- #[ test]
270- fn get_forge_config_for_package_err_on_invalid_package ( ) {
271- let temp = setup_package ( "simple_package" ) ;
272- let scarb_metadata = ScarbCommand :: metadata ( )
273- . inherit_stderr ( )
274- . current_dir ( temp. path ( ) )
275- . run ( )
276- . unwrap ( ) ;
277-
278- let result = load_package_config :: < ForgeConfigFromScarb > (
279- & scarb_metadata,
280- & PackageId :: from ( String :: from ( "12345679" ) ) ,
281- ) ;
282- let err = result. unwrap_err ( ) ;
283-
284- assert ! (
285- err. to_string( )
286- . contains( "Failed to find metadata for package" )
287- ) ;
288- }
289-
290- #[ test]
291- fn get_forge_config_for_package_default_on_missing_config ( ) {
292- let temp = setup_package ( "simple_package" ) ;
293- let content = indoc ! (
294- r#"
295- [package]
296- name = "simple_package"
297- version = "0.1.0"
298- "#
299- ) ;
300- temp. child ( "Scarb.toml" ) . write_str ( content) . unwrap ( ) ;
301-
302- let scarb_metadata = ScarbCommand :: metadata ( )
303- . inherit_stderr ( )
304- . current_dir ( temp. path ( ) )
305- . run ( )
306- . unwrap ( ) ;
307-
308- let config = load_package_config :: < ForgeConfigFromScarb > (
309- & scarb_metadata,
310- & scarb_metadata. workspace . members [ 0 ] ,
311- )
312- . unwrap ( ) ;
313-
314- assert_eq ! ( config, ForgeConfigFromScarb :: default ( ) ) ;
315- }
316-
317- #[ test]
318- fn get_forge_config_for_package_fails_on_same_fork_name ( ) {
319- let temp = setup_package ( "simple_package" ) ;
320- let content = indoc ! (
321- r#"
322- [package]
323- name = "simple_package"
324- version = "0.1.0"
325-
326- [[tool.snforge.fork]]
327- name = "SAME_NAME"
328- url = "http://some.rpc.url"
329- block_id.number = "1"
330-
331- [[tool.snforge.fork]]
332- name = "SAME_NAME"
333- url = "http://some.rpc.url"
334- block_id.hash = "1"
335- "#
336- ) ;
337- temp. child ( "Scarb.toml" ) . write_str ( content) . unwrap ( ) ;
338-
339- let scarb_metadata = ScarbCommand :: metadata ( )
340- . inherit_stderr ( )
341- . current_dir ( temp. path ( ) )
342- . run ( )
343- . unwrap ( ) ;
344- let err = load_package_config :: < ForgeConfigFromScarb > (
345- & scarb_metadata,
346- & scarb_metadata. workspace . members [ 0 ] ,
347- )
348- . unwrap_err ( ) ;
349- assert ! ( format!( "{err:?}" ) . contains( "Some fork names are duplicated" ) ) ;
350- }
351-
352- #[ test]
353- fn get_forge_config_for_package_fails_on_multiple_block_id ( ) {
354- let temp = setup_package ( "simple_package" ) ;
355- let content = indoc ! (
356- r#"
357- [package]
358- name = "simple_package"
359- version = "0.1.0"
360-
361- [[tool.snforge.fork]]
362- name = "SAME_NAME"
363- url = "http://some.rpc.url"
364- block_id.number = "1"
365- block_id.hash = "2"
366- "#
367- ) ;
368- temp. child ( "Scarb.toml" ) . write_str ( content) . unwrap ( ) ;
369-
370- let scarb_metadata = ScarbCommand :: metadata ( )
371- . inherit_stderr ( )
372- . current_dir ( temp. path ( ) )
373- . run ( )
374- . unwrap ( ) ;
375- let err = load_package_config :: < ForgeConfigFromScarb > (
376- & scarb_metadata,
377- & scarb_metadata. workspace . members [ 0 ] ,
378- )
379- . unwrap_err ( ) ;
380- assert ! (
381- format!( "{err:?}" )
382- . contains( "block_id must contain exactly one key: 'tag', 'hash', or 'number'" )
383- ) ;
384- }
385-
386- #[ test]
387- fn get_forge_config_for_package_fails_on_wrong_block_id ( ) {
388- let temp = setup_package ( "simple_package" ) ;
389- let content = indoc ! (
390- r#"
391- [package]
392- name = "simple_package"
393- version = "0.1.0"
394-
395- [[tool.snforge.fork]]
396- name = "SAME_NAME"
397- url = "http://some.rpc.url"
398- block_id.wrong_variant = "1"
399- "#
400- ) ;
401- temp. child ( "Scarb.toml" ) . write_str ( content) . unwrap ( ) ;
402-
403- let scarb_metadata = ScarbCommand :: metadata ( )
404- . inherit_stderr ( )
405- . current_dir ( temp. path ( ) )
406- . run ( )
407- . unwrap ( ) ;
408-
409- let err = load_package_config :: < ForgeConfigFromScarb > (
410- & scarb_metadata,
411- & scarb_metadata. workspace . members [ 0 ] ,
412- )
413- . unwrap_err ( ) ;
414- assert ! (
415- format!( "{err:?}" )
416- . contains( "unknown field `wrong_variant`, expected one of `tag`, `hash`, `number`" )
417- ) ;
418- }
419-
420- #[ test]
421- fn get_forge_config_for_package_fails_on_wrong_block_tag ( ) {
422- let temp = setup_package ( "simple_package" ) ;
423- let content = indoc ! (
424- r#"
425- [package]
426- name = "simple_package"
427- version = "0.1.0"
428-
429- [[tool.snforge.fork]]
430- name = "SAME_NAME"
431- url = "http://some.rpc.url"
432- block_id.tag = "Preconfirmed"
433- "#
434- ) ;
435- temp. child ( "Scarb.toml" ) . write_str ( content) . unwrap ( ) ;
436-
437- let scarb_metadata = ScarbCommand :: metadata ( )
438- . inherit_stderr ( )
439- . current_dir ( temp. path ( ) )
440- . run ( )
441- . unwrap ( ) ;
442-
443- let err = load_package_config :: < ForgeConfigFromScarb > (
444- & scarb_metadata,
445- & scarb_metadata. workspace . members [ 0 ] ,
446- )
447- . unwrap_err ( ) ;
448- assert ! ( format!( "{err:?}" ) . contains( "block_id.tag can only be equal to latest" ) ) ;
449- }
450-
451- #[ test]
452- fn get_forge_config_for_package_with_block_tag ( ) {
453- let temp = setup_package ( "simple_package" ) ;
454- let content = indoc ! (
455- r#"
456- [package]
457- name = "simple_package"
458- version = "0.1.0"
459-
460- [[tool.snforge.fork]]
461- name = "SAME_NAME"
462- url = "http://some.rpc.url"
463- block_id.tag = "latest"
464- "#
465- ) ;
466- temp. child ( "Scarb.toml" ) . write_str ( content) . unwrap ( ) ;
467-
468- let scarb_metadata = ScarbCommand :: metadata ( )
469- . inherit_stderr ( )
470- . current_dir ( temp. path ( ) )
471- . run ( )
472- . unwrap ( ) ;
473-
474- let forge_config = load_package_config :: < ForgeConfigFromScarb > (
475- & scarb_metadata,
476- & scarb_metadata. workspace . members [ 0 ] ,
477- )
478- . unwrap ( ) ;
479- assert_eq ! ( forge_config. fork[ 0 ] . block_id, BlockId :: BlockTag ) ;
480- }
481-
482- #[ test]
483- fn get_forge_config_resolves_env_variables ( ) {
484- let temp = setup_package ( "simple_package" ) ;
485- let content = indoc ! (
486- r#"
487- [package]
488- name = "simple_package"
489- version = "0.1.0"
490-
491- [[tool.snforge.fork]]
492- name = "ENV_URL_FORK"
493- url = "$ENV_URL_FORK234980670176"
494- block_id.number = "1"
495- "#
496- ) ;
497- temp. child ( "Scarb.toml" ) . write_str ( content) . unwrap ( ) ;
498-
499- let scarb_metadata = ScarbCommand :: metadata ( )
500- . inherit_stderr ( )
501- . current_dir ( temp. path ( ) )
502- . run ( )
503- . unwrap ( ) ;
504-
505- // SAFETY: This value is only read here and is not modified by other tests.
506- unsafe {
507- env:: set_var ( "ENV_URL_FORK234980670176" , "http://some.rpc.url_from_env" ) ;
508- }
509- let config = load_package_config :: < ForgeConfigFromScarb > (
510- & scarb_metadata,
511- & scarb_metadata. workspace . members [ 0 ] ,
512- )
513- . unwrap ( ) ;
514-
515- assert_eq ! (
516- config,
517- ForgeConfigFromScarb {
518- exit_first: false ,
519- fork: vec![ ForkTarget {
520- name: "ENV_URL_FORK" . to_string( ) ,
521- url: "http://some.rpc.url_from_env"
522- . parse( )
523- . expect( "Should be valid url" ) ,
524- block_id: BlockId :: BlockNumber ( 1 ) ,
525- } ] ,
526- fuzzer_runs: None ,
527- fuzzer_seed: None ,
528- max_n_steps: None ,
529- tracked_resource: ForgeTrackedResource :: SierraGas ,
530- detailed_resources: false ,
531- save_trace_data: false ,
532- build_profile: false ,
533- coverage: false ,
534- }
535- ) ;
536- }
537- }
0 commit comments