diff --git a/Cargo.lock b/Cargo.lock index 52898d734f..98bbc22fde 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -112,6 +112,15 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -823,12 +832,6 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" - [[package]] name = "h2" version = "0.3.11" @@ -960,30 +963,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "include_dir" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b56e147e6187d61e9d0f039f10e070d0c0a887e24fe0bb9ca3f29bfde62cab" -dependencies = [ - "glob", - "include_dir_impl", - "proc-macro-hack", -] - -[[package]] -name = "include_dir_impl" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a0c890c85da4bab7bce4204c707396bbd3c6c8a681716a51c8814cfc2b682df" -dependencies = [ - "anyhow", - "proc-macro-hack", - "proc-macro2 1.0.36", - "quote 1.0.15", - "syn 1.0.86", -] - [[package]] name = "indenter" version = "0.3.3" @@ -1142,17 +1121,6 @@ dependencies = [ "tendril", ] -[[package]] -name = "leo-ast-passes" -version = "1.5.3" -dependencies = [ - "indexmap", - "leo-ast", - "leo-errors", - "leo-parser", - "leo-stdlib", -] - [[package]] name = "leo-compiler" version = "1.5.3" @@ -1219,6 +1187,7 @@ dependencies = [ "self_update", "serde", "serde_json", + "snarkvm-utilities", "structopt", "test_dir", "toml", @@ -1273,17 +1242,6 @@ dependencies = [ "tendril", ] -[[package]] -name = "leo-stdlib" -version = "1.5.3" -dependencies = [ - "include_dir", - "indexmap", - "leo-ast", - "leo-errors", - "leo-parser", -] - [[package]] name = "leo-test-framework" version = "1.5.3" @@ -1526,6 +1484,27 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.14" @@ -1761,6 +1740,15 @@ dependencies = [ "termtree", ] +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -1785,12 +1773,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - [[package]] name = "proc-macro2" version = "0.4.30" @@ -2281,6 +2263,33 @@ dependencies = [ "serde", ] +[[package]] +name = "snarkvm-derives" +version = "0.7.5" +source = "git+https://github.com/AleoHQ/snarkVM.git?rev=51633e2#51633e2fac247bc829bd316a93f59b6ba0759661" +dependencies = [ + "proc-macro-crate", + "proc-macro-error", + "proc-macro2 1.0.36", + "quote 1.0.15", + "syn 1.0.86", +] + +[[package]] +name = "snarkvm-utilities" +version = "0.7.5" +source = "git+https://github.com/AleoHQ/snarkVM.git?rev=51633e2#51633e2fac247bc829bd316a93f59b6ba0759661" +dependencies = [ + "anyhow", + "bincode", + "itertools 0.10.3", + "num-bigint", + "rand 0.8.4", + "serde", + "snarkvm-derives", + "thiserror", +] + [[package]] name = "socket2" version = "0.4.4" diff --git a/Cargo.toml b/Cargo.toml index ee9d9276c7..37b9bc78b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ members = [ # "asg", # "asg-passes", "ast", - "ast-passes", +# "ast-passes", "compiler", "errors", "grammar", @@ -102,9 +102,9 @@ version = "1.5.3" #rev = "51633e2" #default-features = false # -#[dependencies.snarkvm-utilities] -#git = "https://github.com/AleoHQ/snarkVM.git" -#rev = "51633e2" +[dependencies.snarkvm-utilities] +git = "https://github.com/AleoHQ/snarkVM.git" +rev = "51633e2" [dependencies.clap] version = "3.0.10" diff --git a/ast-passes/Cargo.toml b/ast-passes/Cargo.toml index 58b74f1610..0a63c84dbb 100644 --- a/ast-passes/Cargo.toml +++ b/ast-passes/Cargo.toml @@ -36,6 +36,6 @@ version = "1.5.3" path = "../parser" version = "1.5.3" -[dependencies.leo-stdlib] -path = "../stdlib" -version = "1.5.3" \ No newline at end of file +#[dependencies.leo-stdlib] +#path = "../stdlib" +#version = "1.5.3" \ No newline at end of file diff --git a/errors/src/package/package_errors.rs b/errors/src/package/package_errors.rs index 2413b5fda8..9fdadda845 100644 --- a/errors/src/package/package_errors.rs +++ b/errors/src/package/package_errors.rs @@ -21,6 +21,8 @@ use std::{ fmt::{Debug, Display}, }; +// todo (collin): redo these after Mazdak finishes error indexing. + create_errors!( /// PackageError enum that represents all the errors for the `leo-package` crate. PackageError, diff --git a/leo/main.rs b/leo/main.rs index 494e920c85..b5645605d9 100644 --- a/leo/main.rs +++ b/leo/main.rs @@ -29,6 +29,7 @@ use commands::{ // Deploy, Init, Lint, New, Prove, Run, Setup, Test, Update, Watch, }; use leo_errors::Result; +use snarkvm_utilities::Write; use std::{path::PathBuf, process::exit}; use structopt::{clap::AppSettings, StructOpt}; diff --git a/leo/tests/mod.rs b/leo/tests/mod.rs index b6fc61a953..6380d903a6 100644 --- a/leo/tests/mod.rs +++ b/leo/tests/mod.rs @@ -19,8 +19,10 @@ use std::path::PathBuf; use crate::{ commands::{ - package::{Login, Logout}, - Build, Command, Prove, Run, Setup, Test, + // package::{Login, Logout}, + Build, + Command, + // Prove, Run, Setup, Test, }, context::{create_context, Context}, }; @@ -51,170 +53,171 @@ pub fn build_pedersen_hash() -> Result<()> { Ok(()) } -#[test] -pub fn setup_pedersen_hash() -> Result<()> { - let build = (Build { - compiler_options: Default::default(), - }) - .apply(context()?, ())?; - (Setup { - skip_key_check: false, - compiler_options: Default::default(), - }) - .apply(context()?, build.clone())?; - (Setup { - skip_key_check: true, - compiler_options: Default::default(), - }) - .apply(context()?, build)?; - Ok(()) -} - -#[test] -pub fn prove_pedersen_hash() -> Result<()> { - let build = (Build { - compiler_options: Default::default(), - }) - .apply(context()?, ())?; - let setup = (Setup { - skip_key_check: false, - compiler_options: Default::default(), - }) - .apply(context()?, build)?; - (Prove { - skip_key_check: false, - compiler_options: Default::default(), - }) - .apply(context()?, setup.clone())?; - (Prove { - skip_key_check: true, - compiler_options: Default::default(), - }) - .apply(context()?, setup)?; - Ok(()) -} - -#[test] -pub fn run_pedersen_hash() -> Result<()> { - let build = (Build { - compiler_options: Default::default(), - }) - .apply(context()?, ())?; - let setup = (Setup { - skip_key_check: false, - compiler_options: Default::default(), - }) - .apply(context()?, build)?; - let prove = (Prove { - skip_key_check: false, - compiler_options: Default::default(), - }) - .apply(context()?, setup)?; - (Run { - skip_key_check: false, - compiler_options: Default::default(), - }) - .apply(context()?, prove.clone())?; - (Run { - skip_key_check: true, - compiler_options: Default::default(), - }) - .apply(context()?, prove)?; - Ok(()) -} - -#[test] -pub fn test_pedersen_hash() -> Result<()> { - let mut main_file = PathBuf::from(PEDERSEN_HASH_PATH); - main_file.push("src/main.leo"); - - (Test { - files: vec![], - compiler_options: Default::default(), - }) - .apply(context()?, ())?; - (Test { - files: vec![main_file], - compiler_options: Default::default(), - }) - .apply(context()?, ())?; - Ok(()) -} - -#[test] -pub fn test_logout() -> Result<()> { - let logout = (Logout {}).apply(context()?, ()); - assert!(logout.is_err()); - Ok(()) -} - -// Decided to not go all-in on error messages since they might change in the future -// So this test only tells that error cases are errors -#[test] -pub fn login_incorrect_credentials_or_token() -> Result<()> { - test_logout()?; - - // no credentials passed - let login = Login::new(None, None, None).apply(context()?, ()); - assert!(login.is_err()); - - // incorrect token - let login = Login::new(Some("none".to_string()), None, None).apply(context()?, ()); - assert!(login.is_err()); - - // only user, no pass - let login = Login::new(None, Some("user".to_string()), None).apply(context()?, ()); - assert!(login.is_err()); - - // no user, only pass - let login = Login::new(None, None, Some("pass".to_string())).apply(context()?, ()); - assert!(login.is_err()); - - Ok(()) -} - -#[cfg(not(target_os = "macos"))] -#[test] -pub fn leo_update_and_update_automatic() -> Result<()> { - use crate::commands::{Update, UpdateAutomatic}; - - let update = Update { - list: true, - studio: true, - automatic: None, - }; - update.apply(context()?, ())?; - - let update = Update { - list: false, - studio: true, - automatic: None, - }; - update.apply(context()?, ())?; - - let update = Update { - list: false, - studio: false, - automatic: None, - }; - update.apply(context()?, ())?; - - let update = Update { - list: false, - studio: false, - automatic: Some(UpdateAutomatic::Automatic { value: true }), - }; - update.apply(context()?, ())?; - - let update = Update { - list: false, - studio: false, - automatic: Some(UpdateAutomatic::Automatic { value: false }), - }; - update.apply(context()?, ())?; - - Ok(()) -} +// todo (collin): uncomment after refactor +// #[test] +// pub fn setup_pedersen_hash() -> Result<()> { +// let build = (Build { +// compiler_options: Default::default(), +// }) +// .apply(context()?, ())?; +// (Setup { +// skip_key_check: false, +// compiler_options: Default::default(), +// }) +// .apply(context()?, build.clone())?; +// (Setup { +// skip_key_check: true, +// compiler_options: Default::default(), +// }) +// .apply(context()?, build)?; +// Ok(()) +// } +// +// #[test] +// pub fn prove_pedersen_hash() -> Result<()> { +// let build = (Build { +// compiler_options: Default::default(), +// }) +// .apply(context()?, ())?; +// let setup = (Setup { +// skip_key_check: false, +// compiler_options: Default::default(), +// }) +// .apply(context()?, build)?; +// (Prove { +// skip_key_check: false, +// compiler_options: Default::default(), +// }) +// .apply(context()?, setup.clone())?; +// (Prove { +// skip_key_check: true, +// compiler_options: Default::default(), +// }) +// .apply(context()?, setup)?; +// Ok(()) +// } +// +// #[test] +// pub fn run_pedersen_hash() -> Result<()> { +// let build = (Build { +// compiler_options: Default::default(), +// }) +// .apply(context()?, ())?; +// let setup = (Setup { +// skip_key_check: false, +// compiler_options: Default::default(), +// }) +// .apply(context()?, build)?; +// let prove = (Prove { +// skip_key_check: false, +// compiler_options: Default::default(), +// }) +// .apply(context()?, setup)?; +// (Run { +// skip_key_check: false, +// compiler_options: Default::default(), +// }) +// .apply(context()?, prove.clone())?; +// (Run { +// skip_key_check: true, +// compiler_options: Default::default(), +// }) +// .apply(context()?, prove)?; +// Ok(()) +// } +// +// #[test] +// pub fn test_pedersen_hash() -> Result<()> { +// let mut main_file = PathBuf::from(PEDERSEN_HASH_PATH); +// main_file.push("src/main.leo"); +// +// (Test { +// files: vec![], +// compiler_options: Default::default(), +// }) +// .apply(context()?, ())?; +// (Test { +// files: vec![main_file], +// compiler_options: Default::default(), +// }) +// .apply(context()?, ())?; +// Ok(()) +// } +// +// #[test] +// pub fn test_logout() -> Result<()> { +// let logout = (Logout {}).apply(context()?, ()); +// assert!(logout.is_err()); +// Ok(()) +// } +// +// // Decided to not go all-in on error messages since they might change in the future +// // So this test only tells that error cases are errors +// #[test] +// pub fn login_incorrect_credentials_or_token() -> Result<()> { +// test_logout()?; +// +// // no credentials passed +// let login = Login::new(None, None, None).apply(context()?, ()); +// assert!(login.is_err()); +// +// // incorrect token +// let login = Login::new(Some("none".to_string()), None, None).apply(context()?, ()); +// assert!(login.is_err()); +// +// // only user, no pass +// let login = Login::new(None, Some("user".to_string()), None).apply(context()?, ()); +// assert!(login.is_err()); +// +// // no user, only pass +// let login = Login::new(None, None, Some("pass".to_string())).apply(context()?, ()); +// assert!(login.is_err()); +// +// Ok(()) +// } +// +// #[cfg(not(target_os = "macos"))] +// #[test] +// pub fn leo_update_and_update_automatic() -> Result<()> { +// use crate::commands::{Update, UpdateAutomatic}; +// +// let update = Update { +// list: true, +// studio: true, +// automatic: None, +// }; +// update.apply(context()?, ())?; +// +// let update = Update { +// list: false, +// studio: true, +// automatic: None, +// }; +// update.apply(context()?, ())?; +// +// let update = Update { +// list: false, +// studio: false, +// automatic: None, +// }; +// update.apply(context()?, ())?; +// +// let update = Update { +// list: false, +// studio: false, +// automatic: Some(UpdateAutomatic::Automatic { value: true }), +// }; +// update.apply(context()?, ())?; +// +// let update = Update { +// list: false, +// studio: false, +// automatic: Some(UpdateAutomatic::Automatic { value: false }), +// }; +// update.apply(context()?, ())?; +// +// Ok(()) +// } /// Create context for Pedersen Hash example fn context() -> Result { diff --git a/test-framework/src/bin/tgc.rs b/test-framework/src/unused/tgc.rs similarity index 100% rename from test-framework/src/bin/tgc.rs rename to test-framework/src/unused/tgc.rs