Skip to content

Commit 584f1f4

Browse files
committed
Move forge config tests to integration
commit-id:76c69559
1 parent f6d177e commit 584f1f4

File tree

2 files changed

+369
-388
lines changed

2 files changed

+369
-388
lines changed

crates/forge/src/scarb.rs

Lines changed: 0 additions & 388 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)