diff --git a/SECURITY.md b/SECURITY.md index f4f73bf5..18fc2c07 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -8,8 +8,8 @@ This repository is a component of [genvm-manager]; the canonical security policy ## Reporting a vulnerability **Do not open a public issue.** Report privately via GitHub's -[private vulnerability reporting](https://github.com/genlayerlabs/genvm-executor/security/advisories/new), -or email kira@yeager.ai +[private vulnerability reporting](https://github.com/genlayerlabs/genvm-manager/security/advisories/new), +or email kira@genlayerlabs.com Include a description, affected component/version, and a reproduction (a contract, calldata, or test case) where possible. We aim to acknowledge within a few business days. diff --git a/executor/crates/common/src/expr/evaluator.rs b/executor/crates/common/src/expr/evaluator.rs index 2909317b..8055dff8 100644 --- a/executor/crates/common/src/expr/evaluator.rs +++ b/executor/crates/common/src/expr/evaluator.rs @@ -9,9 +9,11 @@ use super::value::{BinOp, EvalError, Expr, StrSeg, Thunk, Value}; // It is only used for trusted, operator-supplied fee config expressions, // never for contract-supplied or user-supplied input. +type GetVarFn = dyn Fn(&str) -> Result + Send + Sync; + #[derive(Clone)] struct EvalContext { - get_var: Arc Result + Send + Sync>, + get_var: Arc, let_bindings: rpds::RedBlackTreeMap, } diff --git a/executor/crates/common/src/expr/value.rs b/executor/crates/common/src/expr/value.rs index 680f7bc1..c6f7daab 100644 --- a/executor/crates/common/src/expr/value.rs +++ b/executor/crates/common/src/expr/value.rs @@ -39,6 +39,8 @@ pub enum EvalError { got: &'static str, }, Custom(String), + /// A lazy value whose first evaluation already failed, carrying that failure's message + AlreadyFailed(String), Dyn(Box), } @@ -51,6 +53,9 @@ impl fmt::Display for EvalError { write!(f, "type error: expected {expected}, got {got}") } EvalError::Custom(msg) => write!(f, "{msg}"), + EvalError::AlreadyFailed(msg) => { + write!(f, "lazy value already failed to evaluate: {msg}") + } EvalError::Dyn(e) => write!(f, "{e}"), } } @@ -175,6 +180,7 @@ pub struct Thunk(Arc>); enum ThunkState { Forced(Value), + Failed(String), Deferred(Box Result + Send>), InProgress, } @@ -196,6 +202,11 @@ impl Thunk { *state = ThunkState::Forced(v.clone()); return Ok(v); } + ThunkState::Failed(msg) => { + let err = EvalError::AlreadyFailed(msg.clone()); + *state = ThunkState::Failed(msg); + return Err(err); + } ThunkState::InProgress => { return Err(EvalError::Custom( "infinite recursion while forcing a lazy value".to_owned(), @@ -210,12 +221,12 @@ impl Thunk { let result = deferred(); let mut state = self.0.lock().expect("thunk mutex poisoned"); - match &result { - Ok(v) => *state = ThunkState::Forced(v.clone()), - // Leave it `InProgress`: a failed computation is not retried, and - // any later force surfaces the recursion/error path consistently. - Err(_) => {} - } + // A failed computation is not retried either: later forces report that failure + *state = match &result { + Ok(v) => ThunkState::Forced(v.clone()), + Err(e) => ThunkState::Failed(e.to_string()), + }; + result } } @@ -366,3 +377,62 @@ impl fmt::Display for Value { } } } + +#[cfg(test)] +mod tests { + use super::*; + + use std::sync::atomic::{AtomicUsize, Ordering}; + + fn assert_replays(err: EvalError, expected: &str) { + match err { + EvalError::AlreadyFailed(msg) => { + assert!(msg.contains(expected), "unexpected replayed failure: {msg}") + } + other => panic!("expected a replayed failure, got: {other}"), + } + } + + #[test] + fn failed_thunk_is_not_retried() { + let runs = Arc::new(AtomicUsize::new(0)); + let thunk = { + let runs = runs.clone(); + Thunk::deferred(move || { + runs.fetch_add(1, Ordering::Relaxed); + Err(EvalError::DivisionByZero) + }) + }; + + assert!(matches!(thunk.force(), Err(EvalError::DivisionByZero))); + assert_replays(thunk.force().unwrap_err(), "division by zero"); + assert_replays(thunk.force().unwrap_err(), "division by zero"); + assert_eq!(runs.load(Ordering::Relaxed), 1); + } + + #[test] + fn failed_thunk_does_not_report_infinite_recursion() { + let cases = [ + (EvalError::UndefinedVariable("x".to_owned()), "`x`"), + ( + EvalError::TypeError { + expected: "number", + got: "string", + }, + "expected number", + ), + ( + EvalError::Dyn(Box::new(std::io::Error::other("boom"))), + "boom", + ), + ]; + + for (err, expected) in cases { + let err = Mutex::new(Some(err)); + let thunk = Thunk::deferred(move || Err(err.lock().unwrap().take().unwrap())); + + assert!(thunk.force().is_err()); + assert_replays(thunk.force().unwrap_err(), expected); + } + } +} diff --git a/executor/crates/common/src/io.rs b/executor/crates/common/src/io.rs index b486df16..8779cc5a 100644 --- a/executor/crates/common/src/io.rs +++ b/executor/crates/common/src/io.rs @@ -113,6 +113,9 @@ impl AsyncCustomFD { /// Create a new AsyncCustomFD from a raw fd, taking ownership /// Sets the fd to non-blocking mode automatically + /// + /// # Safety + /// `fd` must be a valid open file descriptor that no one else closes or owns pub unsafe fn from_raw_fd(fd: std::os::fd::RawFd) -> std::io::Result { set_fd_nonblocking(fd)?; let owned = std::os::fd::OwnedFd::from_raw_fd(fd); @@ -218,10 +221,20 @@ impl FdPairStream { /// Create a new FdPairStream from raw file descriptors /// source_fd is used for reading, sink_fd is used for writing /// Takes ownership and sets both to non-blocking mode + /// + /// # Safety + /// Both fds must be valid open file descriptors that no one else closes or owns, + /// and they must be distinct: each one is closed independently pub unsafe fn from_raw_fds( source_fd: std::os::fd::RawFd, sink_fd: std::os::fd::RawFd, ) -> std::io::Result { + if source_fd == sink_fd { + return Err(std::io::Error::new( + std::io::ErrorKind::InvalidInput, + "source and sink file descriptors must be distinct", + )); + } set_fd_nonblocking(source_fd)?; set_fd_nonblocking(sink_fd)?; let source = std::os::fd::OwnedFd::from_raw_fd(source_fd); diff --git a/executor/crates/common/tests/io.rs b/executor/crates/common/tests/io.rs new file mode 100644 index 00000000..d57e48c0 --- /dev/null +++ b/executor/crates/common/tests/io.rs @@ -0,0 +1,23 @@ +use std::os::fd::AsRawFd; + +use genvm_common::io::FdPairStream; + +#[test] +fn fd_pair_stream_rejects_the_same_fd_twice() { + // owned by the `File`, so a regression cannot double-close a fd the harness needs + let file = std::fs::File::open("/dev/null").unwrap(); + let fd = file.as_raw_fd(); + + let err = match unsafe { FdPairStream::from_raw_fds(fd, fd) } { + Ok(_) => panic!("the same fd was accepted for both directions"), + Err(e) => e, + }; + assert_eq!( + err.kind(), + std::io::ErrorKind::InvalidInput, + "unexpected error: {err}" + ); + + // ownership was not taken: the fd is still usable + assert!(file.metadata().is_ok()); +} diff --git a/executor/crates/modules-interfaces/Cargo.lock b/executor/crates/modules-interfaces/Cargo.lock index bf3b3251..dedcbe0a 100644 --- a/executor/crates/modules-interfaces/Cargo.lock +++ b/executor/crates/modules-interfaces/Cargo.lock @@ -26,12 +26,6 @@ version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" - [[package]] name = "arrayvec" version = "0.7.8" @@ -276,7 +270,6 @@ name = "genvm_modules_interfaces" version = "0.1.0" dependencies = [ "anyhow", - "arbitrary", "bytes", "chrono", "genlayer_calldata", diff --git a/executor/crates/modules-interfaces/Cargo.toml b/executor/crates/modules-interfaces/Cargo.toml index 1a3a7c49..abd166a3 100644 --- a/executor/crates/modules-interfaces/Cargo.toml +++ b/executor/crates/modules-interfaces/Cargo.toml @@ -7,12 +7,10 @@ edition = "2021" path = "../../../../../crates/modules-interfaces/src/lib.rs" [features] -arbitrary = ["dep:arbitrary"] default = [] [dependencies] anyhow = "1.0.97" -arbitrary = { version = "1.0", optional = true } bytes = { version = "1.11.0", features = ["serde"] } chrono = "0.4.45" genlayer_calldata = { path = "../calldata" } diff --git a/executor/crates/sdk-rs/fuzz/gvm-gl-call-roundtrip.rs b/executor/crates/sdk-rs/fuzz/gvm-gl-call-roundtrip.rs index c2c468f2..4db6e5df 100644 --- a/executor/crates/sdk-rs/fuzz/gvm-gl-call-roundtrip.rs +++ b/executor/crates/sdk-rs/fuzz/gvm-gl-call-roundtrip.rs @@ -34,9 +34,30 @@ fn main() { let msg_decoded_from_binary: Message = codec::Decode::decode(codec::BinaryDeserializer::new(&buf)).unwrap(); + // A byte-backed source defers every `Maybe` field as raw bytes, while + // `msg` holds them materialized, and `Maybe` compares the two + // representations unequal. Re-encoding must therefore be the first + // comparison: it is the one that holds whatever each side deferred. + let mut reencoded_from_binary = Vec::new(); + codec::Encode::encode( + &msg_decoded_from_binary, + &mut Encoder::new(&mut reencoded_from_binary), + ) + .unwrap(); + assert_eq!( - msg, msg_decoded_from_binary, - "Message roundtrip mismatch: binary" + buf, reencoded_from_binary, + "Message roundtrip mismatch: binary bytes" ); + + // Decoding those bytes through a `Value` -- which has nothing to defer -- + // materializes every deferred field at once, so the messages can be + // compared without naming the fields that happen to be deferrable today. + let msg_materialized: Message = codec::Decode::decode(codec::ValueDeserializer( + genlayer_calldata::decode(&reencoded_from_binary).unwrap(), + )) + .unwrap(); + + assert_eq!(msg, msg_materialized, "Message roundtrip mismatch: binary"); }); } diff --git a/executor/crates/sdk-rs/src/abi/consts.rs b/executor/crates/sdk-rs/src/abi/consts.rs index 5a274528..7fe94d50 100644 --- a/executor/crates/sdk-rs/src/abi/consts.rs +++ b/executor/crates/sdk-rs/src/abi/consts.rs @@ -1,6 +1,6 @@ // This file is auto-generated. Do not edit! -#![allow(dead_code, clippy::redundant_static_lifetimes)] +#![allow(dead_code, clippy::all)] use serde::{Deserialize, Serialize}; diff --git a/executor/default.nix b/executor/default.nix index 1bbf0bd9..3390ba05 100644 --- a/executor/default.nix +++ b/executor/default.nix @@ -16,6 +16,11 @@ ... }@args: let + release-src = get-root-subtree [ + "${exec-prefix}/executor/install" + "${exec-prefix}/executor/registry" + ]; + # v0.2.x is a frozen legacy line, so its runner registry never changes: rather # than run it through the umbrella's accumulate-and-filter machinery (which is # built for forward-rolling lines and whose `latest` would pick the wrong hash @@ -26,8 +31,8 @@ let # consulted to accept a requested runner hash; `latest.json` resolves an id to # its newest runner in debug mode (used by e.g. `Depends: py-genlayer:test`). manifests-data = { - all = ./registry/all.json; - latest = ./registry/latest.json; + all = release-src + "/${exec-prefix}/executor/registry/all.json"; + latest = release-src + "/${exec-prefix}/executor/registry/latest.json"; }; lib = pkgs.lib; @@ -66,7 +71,7 @@ let srcs = [ exe - ./install + (release-src + "/${exec-prefix}/executor/install") ]; dontUnpack = true; diff --git a/executor/src/domain/fees.rs b/executor/src/domain/fees.rs index 2c54c974..7bc2cae1 100644 --- a/executor/src/domain/fees.rs +++ b/executor/src/domain/fees.rs @@ -101,6 +101,7 @@ impl MessageAllocationNode { abi::encode(roots) } + #[allow(clippy::if_same_then_else)] pub fn matches_internal( &self, on: On, @@ -121,6 +122,7 @@ impl MessageAllocationNode { } } + #[allow(clippy::if_same_then_else)] pub fn matches_external( &self, recipient: genlayer_sdk::calldata::Address, diff --git a/executor/src/rt/mod.rs b/executor/src/rt/mod.rs index 733c8577..7b8f1db1 100644 --- a/executor/src/rt/mod.rs +++ b/executor/src/rt/mod.rs @@ -7,7 +7,7 @@ pub mod vm; use std::sync::Arc; enum SpawnErrorState { - Spawned(vm::VMBase), + Spawned(Box), Unspawned(Box), } diff --git a/executor/src/rt/supervisor/actions.rs b/executor/src/rt/supervisor/actions.rs index dbaa2312..55c82127 100644 --- a/executor/src/rt/supervisor/actions.rs +++ b/executor/src/rt/supervisor/actions.rs @@ -76,8 +76,8 @@ impl From for Resolved { fn from(id: runners::Id) -> Self { let kind = match &id { runners::Id::Builtin { name, hash } => ResolvedKind::Disk { - name: name.clone(), - hash: hash.clone(), + name: *name, + hash: *hash, }, runners::Id::Chain { address, on, slot } => ResolvedKind::Chain { address: *address, @@ -644,7 +644,7 @@ impl Ctx<'_, '_> { return Ok(None); } - let uid = resolved.id.clone(); + let uid = resolved.id; log_trace!(uid = uid; "adding dependency"); let (uid, new_arch) = self diff --git a/executor/src/rt/supervisor/mod.rs b/executor/src/rt/supervisor/mod.rs index c928f98e..96439096 100644 --- a/executor/src/rt/supervisor/mod.rs +++ b/executor/src/rt/supervisor/mod.rs @@ -409,7 +409,7 @@ pub async fn spawn( ) { return Err(rt::SpawnError { error: e, - state: Box::new(rt::SpawnErrorState::Spawned(vm_base)), + state: Box::new(rt::SpawnErrorState::Spawned(Box::new(vm_base))), }); } @@ -431,7 +431,7 @@ pub async fn apply_contract_actions( }), Err(e) => Err(rt::SpawnError { error: e, - state: Box::new(rt::SpawnErrorState::Spawned(vm.vm_base)), + state: Box::new(rt::SpawnErrorState::Spawned(Box::new(vm.vm_base))), }), } } diff --git a/executor/src/rt/vm/mod.rs b/executor/src/rt/vm/mod.rs index 49f4a2be..354c1c7c 100644 --- a/executor/src/rt/vm/mod.rs +++ b/executor/src/rt/vm/mod.rs @@ -246,7 +246,7 @@ impl VM { } Err(e) => Err(rt::SpawnError { error: e, - state: Box::new(rt::SpawnErrorState::Spawned(self.vm_base)), + state: Box::new(rt::SpawnErrorState::Spawned(Box::new(self.vm_base))), }), } } diff --git a/executor/src/wasi/genlayer_sdk.rs b/executor/src/wasi/genlayer_sdk.rs index f2b7aa30..7344c217 100644 --- a/executor/src/wasi/genlayer_sdk.rs +++ b/executor/src/wasi/genlayer_sdk.rs @@ -77,6 +77,14 @@ fn nested_run_ok( genvm_modules_interfaces::ResultCode::InternalError => { anyhow::bail!("nested executor returned an internal error"); } + // This line has no fatal VM error to raise, and handing the caller an + // ordinary one would let it swallow an outcome the callee marked as not + // catchable. Refuse the reply instead. + genvm_modules_interfaces::ResultCode::FatalVmError => { + anyhow::bail!( + "nested executor returned a fatal VM error, which this line cannot raise" + ); + } }; Ok((run_ok, reply.small_hash)) diff --git a/support/nix/py-test/flake.nix b/support/nix/py-test/flake.nix index 56f57d3b..10818d0c 100644 --- a/support/nix/py-test/flake.nix +++ b/support/nix/py-test/flake.nix @@ -43,9 +43,9 @@ # caches the CPU (unfree-free) torch for stable, so this is a plain # fetch — no multi-hour source compile, no unfree CUDA wheel. ps.torch - # NB: python-afl (the old `py_fuzz` plugin's `py-afl-fuzz`) is not - # packaged in this nixpkgs and the fuzz collector is disabled, so it - # is intentionally omitted. Add it back here if fuzzing is revived. + # NB: python-afl is intentionally omitted — this line carries no fuzz + # targets. The v0.3.x flake packages it (from PyPI, it is not in + # nixpkgs) next to AFL++; copy that if a target lands here. ]); in { diff --git a/tests/integration/prompt/json_random/json_random.jsonnet b/tests/integration/prompt/json_random/json_random.jsonnet index e1c132dc..4319d19f 100644 --- a/tests/integration/prompt/json_random/json_random.jsonnet +++ b/tests/integration/prompt/json_random/json_random.jsonnet @@ -1,7 +1,7 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; { - tags: util.features([['prompt', 'json'], ['nondet']], 'unstable'), + tags: util.features([['prompt', 'json'], ['nondet']], 'unstable') + ['needs-llm', 'needs-web', 'python'], entry: util.addPaths([ simple_deploy.run('${jsonnetDir}/${fileBaseName}.py') { stable_hash: false }, ]), diff --git a/tests/integration/stable/agentic/wasi/environ_args/environ_args.jsonnet b/tests/integration/stable/agentic/wasi/environ_args/environ_args.jsonnet index ce4deba4..1f13252b 100644 --- a/tests/integration/stable/agentic/wasi/environ_args/environ_args.jsonnet +++ b/tests/integration/stable/agentic/wasi/environ_args/environ_args.jsonnet @@ -3,7 +3,7 @@ local util = import 'templates/util.jsonnet'; local simple_deploy = import 'templates/simple_deploy.jsonnet'; { - tags: ['fuzz'], + tags: ['fuzz', 'python', 'feature-wasi-environment', 'feature-nasty-determinism-id'], entry: util.addPaths([ simple_deploy.run('${jsonnetDir}/contract.py') { expected_semantics_components: [], diff --git a/tests/integration/stable/agentic/wasi/hash_random/hash_random.jsonnet b/tests/integration/stable/agentic/wasi/hash_random/hash_random.jsonnet index ce4deba4..556772d6 100644 --- a/tests/integration/stable/agentic/wasi/hash_random/hash_random.jsonnet +++ b/tests/integration/stable/agentic/wasi/hash_random/hash_random.jsonnet @@ -3,7 +3,7 @@ local util = import 'templates/util.jsonnet'; local simple_deploy = import 'templates/simple_deploy.jsonnet'; { - tags: ['fuzz'], + tags: ['fuzz', 'python', 'feature-nasty-determinism-hash'], entry: util.addPaths([ simple_deploy.run('${jsonnetDir}/contract.py') { expected_semantics_components: [], diff --git a/tests/integration/stable/agentic/wasi/id_repr/id_repr.jsonnet b/tests/integration/stable/agentic/wasi/id_repr/id_repr.jsonnet index ce4deba4..6ca91aac 100644 --- a/tests/integration/stable/agentic/wasi/id_repr/id_repr.jsonnet +++ b/tests/integration/stable/agentic/wasi/id_repr/id_repr.jsonnet @@ -3,7 +3,7 @@ local util = import 'templates/util.jsonnet'; local simple_deploy = import 'templates/simple_deploy.jsonnet'; { - tags: ['fuzz'], + tags: ['fuzz', 'python', 'feature-nasty-determinism-id', 'feature-nasty-determinism-hash'], entry: util.addPaths([ simple_deploy.run('${jsonnetDir}/contract.py') { expected_semantics_components: [], diff --git a/tests/integration/stable/agentic/wasi/set_order/set_order.jsonnet b/tests/integration/stable/agentic/wasi/set_order/set_order.jsonnet index ce4deba4..a4996916 100644 --- a/tests/integration/stable/agentic/wasi/set_order/set_order.jsonnet +++ b/tests/integration/stable/agentic/wasi/set_order/set_order.jsonnet @@ -3,7 +3,7 @@ local util = import 'templates/util.jsonnet'; local simple_deploy = import 'templates/simple_deploy.jsonnet'; { - tags: ['fuzz'], + tags: ['fuzz', 'python', 'feature-nasty-determinism-order', 'feature-nasty-determinism-hash'], entry: util.addPaths([ simple_deploy.run('${jsonnetDir}/contract.py') { expected_semantics_components: [], diff --git a/tests/integration/stable/agentic/wasi/wasi_clock/wasi_clock.jsonnet b/tests/integration/stable/agentic/wasi/wasi_clock/wasi_clock.jsonnet index ce4deba4..ec86fb27 100644 --- a/tests/integration/stable/agentic/wasi/wasi_clock/wasi_clock.jsonnet +++ b/tests/integration/stable/agentic/wasi/wasi_clock/wasi_clock.jsonnet @@ -3,7 +3,7 @@ local util = import 'templates/util.jsonnet'; local simple_deploy = import 'templates/simple_deploy.jsonnet'; { - tags: ['fuzz'], + tags: ['fuzz', 'python', 'feature-wasi-clock'], entry: util.addPaths([ simple_deploy.run('${jsonnetDir}/contract.py') { expected_semantics_components: [], diff --git a/tests/integration/stable/agentic/wasi/wasi_random/wasi_random.jsonnet b/tests/integration/stable/agentic/wasi/wasi_random/wasi_random.jsonnet index 2578c3a7..9036ef81 100644 --- a/tests/integration/stable/agentic/wasi/wasi_random/wasi_random.jsonnet +++ b/tests/integration/stable/agentic/wasi/wasi_random/wasi_random.jsonnet @@ -3,7 +3,7 @@ local util = import 'templates/util.jsonnet'; local simple_deploy = import 'templates/simple_deploy.jsonnet'; { - tags: ['fuzz', 'feature-nasty-determinism', 'stable'], + tags: ['fuzz', 'feature-nasty-determinism-random', 'feature-wasi-random', 'python', 'stable'], entry: util.addPaths([ simple_deploy.run('${jsonnetDir}/contract.py') { expected_semantics_components: [], diff --git a/tests/integration/stable/bench/read_tree_map.jsonnet b/tests/integration/stable/bench/read_tree_map.jsonnet index 3c9fc6c6..b58d7fd1 100644 --- a/tests/integration/stable/bench/read_tree_map.jsonnet +++ b/tests/integration/stable/bench/read_tree_map.jsonnet @@ -1,7 +1,7 @@ local simple_deploy_then_write = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; local r = simple_deploy_then_write.run('${jsonnetDir}/${fileBaseName}.py', 'bench'); -{tags: ["bench"], entry: util.addPaths([ +{tags: ["bench", "feature-storage-tree-map", "feature-storage-dynamic-array", "python", "slow"], entry: util.addPaths([ util.updateField(r, 'next', function(next) util.updateArrayElement(next, 0, function(s) s + {benchmark: true, modes: 'l'}) ) diff --git a/tests/integration/stable/exploits/call_wasi_extra.jsonnet b/tests/integration/stable/exploits/call_wasi_extra.jsonnet index 5d52bf70..7fde1bd0 100644 --- a/tests/integration/stable/exploits/call_wasi_extra.jsonnet +++ b/tests/integration/stable/exploits/call_wasi_extra.jsonnet @@ -1,5 +1,5 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/call_wasi_extra.py') + { +{tags: ['python', 'feature-exploit-wasi-extra'], entry: util.addPaths([simple.run('${jsonnetDir}/call_wasi_extra.py') + { "calldata": '{}', }])} diff --git a/tests/integration/stable/exploits/disagree_in_sandbox.jsonnet b/tests/integration/stable/exploits/disagree_in_sandbox.jsonnet index 4239229c..6df51239 100644 --- a/tests/integration/stable/exploits/disagree_in_sandbox.jsonnet +++ b/tests/integration/stable/exploits/disagree_in_sandbox.jsonnet @@ -1,6 +1,6 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/disagree_in_sandbox.py') { +{tags: util.features([['exploit'], ['sandbox', 'det']], 'stable') + ['python'], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/disagree_in_sandbox.py') { leader_nondet: [ { "kind": "return", diff --git a/tests/integration/stable/exploits/flt.jsonnet b/tests/integration/stable/exploits/flt.jsonnet index 49306607..7a4f3306 100644 --- a/tests/integration/stable/exploits/flt.jsonnet +++ b/tests/integration/stable/exploits/flt.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} +{tags: ['wasm', 'feature-exploit'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} diff --git a/tests/integration/stable/exploits/fork_bomb.jsonnet b/tests/integration/stable/exploits/fork_bomb.jsonnet index 8b79650f..59e2db15 100644 --- a/tests/integration/stable/exploits/fork_bomb.jsonnet +++ b/tests/integration/stable/exploits/fork_bomb.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/fork_bomb.py')])} +{tags: ['python', 'feature-exploit-fork-bomb', 'feature-sandbox-det', 'slow'], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/fork_bomb.py')])} diff --git a/tests/integration/stable/exploits/inf-loop.jsonnet b/tests/integration/stable/exploits/inf-loop.jsonnet index 260efd24..b35a8c84 100644 --- a/tests/integration/stable/exploits/inf-loop.jsonnet +++ b/tests/integration/stable/exploits/inf-loop.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/inf-loop.wat') + { +{tags: ['wasm', 'feature-exploit', 'needs-time', 'slow'], entry: util.addPaths([simple.run('${jsonnetDir}/inf-loop.wat') + { "calldata": "{}", // v0.2.16 carried a per-message `gas` budget; the v0.3 manager moved gas to // the run-request `gas_data`, so the message no longer accepts it. The diff --git a/tests/integration/stable/exploits/method_init.jsonnet b/tests/integration/stable/exploits/method_init.jsonnet index a1e9cfcc..d422356b 100644 --- a/tests/integration/stable/exploits/method_init.jsonnet +++ b/tests/integration/stable/exploits/method_init.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../py/other/meth/methods.py', '__init__')])} +{tags: ['python', 'feature-permission-method'], entry: util.addPaths([simple.run('${jsonnetDir}/../py/other/meth/methods.py', '__init__')])} diff --git a/tests/integration/stable/exploits/method_private.jsonnet b/tests/integration/stable/exploits/method_private.jsonnet index be542766..147dad73 100644 --- a/tests/integration/stable/exploits/method_private.jsonnet +++ b/tests/integration/stable/exploits/method_private.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../py/other/meth/methods.py', 'priv')])} +{tags: ['python', 'feature-permission-method'], entry: util.addPaths([simple.run('${jsonnetDir}/../py/other/meth/methods.py', 'priv')])} diff --git a/tests/integration/stable/exploits/oom.jsonnet b/tests/integration/stable/exploits/oom.jsonnet index 63d5bb28..321ec532 100644 --- a/tests/integration/stable/exploits/oom.jsonnet +++ b/tests/integration/stable/exploits/oom.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py') { +{tags: ['python', 'feature-exploit-oom', 'slow'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py') { "calldata": ||| { } diff --git a/tests/integration/stable/exploits/rec.jsonnet b/tests/integration/stable/exploits/rec.jsonnet index 49306607..16f7c191 100644 --- a/tests/integration/stable/exploits/rec.jsonnet +++ b/tests/integration/stable/exploits/rec.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} +{tags: ['wasm', 'feature-exploit-recursion'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} diff --git a/tests/integration/stable/exploits/rec_1023.jsonnet b/tests/integration/stable/exploits/rec_1023.jsonnet index 49306607..16f7c191 100644 --- a/tests/integration/stable/exploits/rec_1023.jsonnet +++ b/tests/integration/stable/exploits/rec_1023.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} +{tags: ['wasm', 'feature-exploit-recursion'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} diff --git a/tests/integration/stable/exploits/rec_1024.jsonnet b/tests/integration/stable/exploits/rec_1024.jsonnet index 49306607..16f7c191 100644 --- a/tests/integration/stable/exploits/rec_1024.jsonnet +++ b/tests/integration/stable/exploits/rec_1024.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} +{tags: ['wasm', 'feature-exploit-recursion'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} diff --git a/tests/integration/stable/exploits/rec_tail.jsonnet b/tests/integration/stable/exploits/rec_tail.jsonnet index 631352b6..c2aa0504 100644 --- a/tests/integration/stable/exploits/rec_tail.jsonnet +++ b/tests/integration/stable/exploits/rec_tail.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat') { +{tags: ['wasm', 'feature-exploit-recursion', 'needs-time', 'slow'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat') { deadline: 4, stable_hash: false, modes: "l", diff --git a/tests/integration/stable/exploits/storage_rw_long.jsonnet b/tests/integration/stable/exploits/storage_rw_long.jsonnet index b0c7317f..de7d09ac 100644 --- a/tests/integration/stable/exploits/storage_rw_long.jsonnet +++ b/tests/integration/stable/exploits/storage_rw_long.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ['python', 'feature-exploit-storage-limit', 'feature-storage'], entry: util.addPaths([util.chain([ simple.run('${jsonnetDir}/storage_r_long.py') { "calldata": "{}", }, diff --git a/tests/integration/stable/exploits/unreachable.jsonnet b/tests/integration/stable/exploits/unreachable.jsonnet index 49306607..7a4f3306 100644 --- a/tests/integration/stable/exploits/unreachable.jsonnet +++ b/tests/integration/stable/exploits/unreachable.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} +{tags: ['wasm', 'feature-exploit'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.wat')])} diff --git a/tests/integration/stable/nondet/leader_errors/leader_no_nondet.jsonnet b/tests/integration/stable/nondet/leader_errors/leader_no_nondet.jsonnet index 51f11aa8..b9771dd3 100644 --- a/tests/integration/stable/nondet/leader_errors/leader_no_nondet.jsonnet +++ b/tests/integration/stable/nondet/leader_errors/leader_no_nondet.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'bar') { +{tags: ['python', 'feature-nondet-consensus-leader-malicious'], entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'bar') { next: [super.next[0] { modes: 'vs', leader_nondet: [], diff --git a/tests/integration/stable/nondet/leader_errors/simple_leader.jsonnet b/tests/integration/stable/nondet/leader_errors/simple_leader.jsonnet index 22257ad4..112be82f 100644 --- a/tests/integration/stable/nondet/leader_errors/simple_leader.jsonnet +++ b/tests/integration/stable/nondet/leader_errors/simple_leader.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'foo')])} +{tags: ['python', 'feature-nondet-consensus-leader-error'], entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'foo')])} diff --git a/tests/integration/stable/nondet/leader_errors/simple_valid_err_err.jsonnet b/tests/integration/stable/nondet/leader_errors/simple_valid_err_err.jsonnet index afd18916..3d57cbeb 100644 --- a/tests/integration/stable/nondet/leader_errors/simple_valid_err_err.jsonnet +++ b/tests/integration/stable/nondet/leader_errors/simple_valid_err_err.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'foo') { +{tags: ['python', 'feature-nondet-consensus-validator'], entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'foo') { next: [super.next[0] { leader_nondet: [ { diff --git a/tests/integration/stable/nondet/leader_errors/simple_valid_err_exit.jsonnet b/tests/integration/stable/nondet/leader_errors/simple_valid_err_exit.jsonnet index 8d5c2410..a73507b1 100644 --- a/tests/integration/stable/nondet/leader_errors/simple_valid_err_exit.jsonnet +++ b/tests/integration/stable/nondet/leader_errors/simple_valid_err_exit.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'ex') { +{tags: ['python', 'feature-nondet-consensus-validator'], entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'ex') { next: [super.next[0] { leader_nondet: [ { diff --git a/tests/integration/stable/nondet/leader_errors/simple_valid_err_exit_wrong_err.jsonnet b/tests/integration/stable/nondet/leader_errors/simple_valid_err_exit_wrong_err.jsonnet index 109e37f4..e58e04ca 100644 --- a/tests/integration/stable/nondet/leader_errors/simple_valid_err_exit_wrong_err.jsonnet +++ b/tests/integration/stable/nondet/leader_errors/simple_valid_err_exit_wrong_err.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'ex') { +{tags: ['python', 'feature-nondet-consensus-leader-malicious'], entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'ex') { next: [super.next[0] { leader_nondet: [ { diff --git a/tests/integration/stable/nondet/leader_errors/simple_valid_err_nerr.jsonnet b/tests/integration/stable/nondet/leader_errors/simple_valid_err_nerr.jsonnet index 69d616f2..2a10cb6c 100644 --- a/tests/integration/stable/nondet/leader_errors/simple_valid_err_nerr.jsonnet +++ b/tests/integration/stable/nondet/leader_errors/simple_valid_err_nerr.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'bar') { +{tags: ['python', 'feature-nondet-consensus-leader-malicious'], entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'bar') { next: [super.next[0] { leader_nondet: [ { diff --git a/tests/integration/stable/nondet/metod_det_get_webpage.jsonnet b/tests/integration/stable/nondet/metod_det_get_webpage.jsonnet index c3bc23c3..97e6ad5b 100644 --- a/tests/integration/stable/nondet/metod_det_get_webpage.jsonnet +++ b/tests/integration/stable/nondet/metod_det_get_webpage.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../py/other/meth/methods.py', 'det_viol')])} +{tags: ['python', 'needs-web', 'feature-nondet', 'feature-web-render', 'feature-permission-module'], entry: util.addPaths([simple.run('${jsonnetDir}/../py/other/meth/methods.py', 'det_viol')])} diff --git a/tests/integration/stable/nondet/trivial.jsonnet b/tests/integration/stable/nondet/trivial.jsonnet index bffafbf9..b2a5221d 100644 --- a/tests/integration/stable/nondet/trivial.jsonnet +++ b/tests/integration/stable/nondet/trivial.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', 'init')])} +{tags: ['python', 'feature-nondet-consensus'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', 'init')])} diff --git a/tests/integration/stable/nondet/validator/rollback_agree.jsonnet b/tests/integration/stable/nondet/validator/rollback_agree.jsonnet index 3543028a..429e8149 100644 --- a/tests/integration/stable/nondet/validator/rollback_agree.jsonnet +++ b/tests/integration/stable/nondet/validator/rollback_agree.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/rollback.py', 'main') { +{tags: ['python', 'feature-nondet-consensus-validator-rollback', 'feature-user-error'], entry: util.addPaths([simple.run('${jsonnetDir}/rollback.py', 'main') { next: [super.next[0] { leader_nondet: [ { diff --git a/tests/integration/stable/nondet/validator/rollback_disagree.jsonnet b/tests/integration/stable/nondet/validator/rollback_disagree.jsonnet index 0f45b45e..2f4689dd 100644 --- a/tests/integration/stable/nondet/validator/rollback_disagree.jsonnet +++ b/tests/integration/stable/nondet/validator/rollback_disagree.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/rollback.py', 'main') { +{tags: ['python', 'feature-nondet-consensus-validator-rollback', 'feature-user-error'], entry: util.addPaths([simple.run('${jsonnetDir}/rollback.py', 'main') { next: [super.next[0] { modes: 'vs', leader_nondet: [ diff --git a/tests/integration/stable/nondet/validator/rollback_imm.jsonnet b/tests/integration/stable/nondet/validator/rollback_imm.jsonnet index c5b2d168..b6fa7b59 100644 --- a/tests/integration/stable/nondet/validator/rollback_imm.jsonnet +++ b/tests/integration/stable/nondet/validator/rollback_imm.jsonnet @@ -1,7 +1,7 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local s = simple.run('${jsonnetDir}/rollback_imm.py', 'main'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([ +{tags: ['python', 'feature-nondet-consensus-validator-rollback', 'feature-user-error'], entry: util.addPaths([ s { next: [super.next[0] { modes: 'v', diff --git a/tests/integration/stable/nondet/validator/sync.jsonnet b/tests/integration/stable/nondet/validator/sync.jsonnet index 12e330bd..1722a430 100644 --- a/tests/integration/stable/nondet/validator/sync.jsonnet +++ b/tests/integration/stable/nondet/validator/sync.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', 'main') { +{tags: ['python', 'feature-nondet-consensus-validator-sync'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', 'main') { next: [super.next[0] { modes: 's', leader_nondet: [ diff --git a/tests/integration/stable/nondet/validator/sync_err.jsonnet b/tests/integration/stable/nondet/validator/sync_err.jsonnet index e26d9459..071e15c5 100644 --- a/tests/integration/stable/nondet/validator/sync_err.jsonnet +++ b/tests/integration/stable/nondet/validator/sync_err.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/sync.py', 'main') { +{tags: ['python', 'feature-nondet-consensus-validator-sync'], entry: util.addPaths([simple.run('${jsonnetDir}/sync.py', 'main') { next: [super.next[0] { modes: 's', leader_nondet: [ diff --git a/tests/integration/stable/py/balances/balance.jsonnet b/tests/integration/stable/py/balances/balance.jsonnet index b07b7467..c9de9059 100644 --- a/tests/integration/stable/py/balances/balance.jsonnet +++ b/tests/integration/stable/py/balances/balance.jsonnet @@ -1,6 +1,6 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py') { +{tags: ["feature-balance", "feature-message-external-view", "feature-message-send", "feature-message-view", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py') { "balances": { "AQAAAAAAAAAAAAAAAAAAAAAAAAA=": 10, }, diff --git a/tests/integration/stable/py/balances/balance_eth.jsonnet b/tests/integration/stable/py/balances/balance_eth.jsonnet index 78bab86a..8287f936 100644 --- a/tests/integration/stable/py/balances/balance_eth.jsonnet +++ b/tests/integration/stable/py/balances/balance_eth.jsonnet @@ -1,6 +1,6 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/balance_eth.py') { +{tags: ["feature-balance", "feature-message-eth", "feature-message-external-view", "feature-message-send-eth", "feature-message-view", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/balance_eth.py') { "balances": { "AQAAAAAAAAAAAAAAAAAAAAAAAAA=": 10, }, diff --git a/tests/integration/stable/py/balances/sandbox_overspend.jsonnet b/tests/integration/stable/py/balances/sandbox_overspend.jsonnet index 0c130def..5695ac16 100644 --- a/tests/integration/stable/py/balances/sandbox_overspend.jsonnet +++ b/tests/integration/stable/py/balances/sandbox_overspend.jsonnet @@ -1,7 +1,7 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; { - tags: ["octane"], + tags: ["feature-balance", "feature-message-send", "feature-sandbox-det", "octane", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py') { //expected_semantics_components: [], modes: 'lvs', diff --git a/tests/integration/stable/py/balances/sandbox_overspend_2.jsonnet b/tests/integration/stable/py/balances/sandbox_overspend_2.jsonnet index 0c130def..5695ac16 100644 --- a/tests/integration/stable/py/balances/sandbox_overspend_2.jsonnet +++ b/tests/integration/stable/py/balances/sandbox_overspend_2.jsonnet @@ -1,7 +1,7 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; { - tags: ["octane"], + tags: ["feature-balance", "feature-message-send", "feature-sandbox-det", "octane", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py') { //expected_semantics_components: [], modes: 'lvs', diff --git a/tests/integration/stable/py/balances/undefined_all.jsonnet b/tests/integration/stable/py/balances/undefined_all.jsonnet index 0b863f4a..ddd739b6 100644 --- a/tests/integration/stable/py/balances/undefined_all.jsonnet +++ b/tests/integration/stable/py/balances/undefined_all.jsonnet @@ -2,7 +2,7 @@ local simple = import 'templates/simple_deploy.jsonnet'; local msg = import 'templates/message.json'; local s = simple.run('${jsonnetDir}/undefined_all.py'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ["feature-balance", "feature-message-external", "feature-message-payable", "python"], entry: util.addPaths([util.chain([ s { "calldata": ||| { diff --git a/tests/integration/stable/py/balances/undefined_method.jsonnet b/tests/integration/stable/py/balances/undefined_method.jsonnet index 202f3066..3aa6c53a 100644 --- a/tests/integration/stable/py/balances/undefined_method.jsonnet +++ b/tests/integration/stable/py/balances/undefined_method.jsonnet @@ -2,7 +2,7 @@ local simple = import 'templates/simple_deploy.jsonnet'; local msg = import 'templates/message.json'; local s = simple.run('${jsonnetDir}/undefined_method.py'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ["feature-balance", "feature-message-external", "feature-message-payable", "python"], entry: util.addPaths([util.chain([ s { "calldata": ||| { diff --git a/tests/integration/stable/py/balances/undefined_method_payable.jsonnet b/tests/integration/stable/py/balances/undefined_method_payable.jsonnet index b71c354e..0e42b898 100644 --- a/tests/integration/stable/py/balances/undefined_method_payable.jsonnet +++ b/tests/integration/stable/py/balances/undefined_method_payable.jsonnet @@ -2,7 +2,7 @@ local simple = import 'templates/simple_deploy.jsonnet'; local msg = import 'templates/message.json'; local s = simple.run('${jsonnetDir}/undefined_method_payable.py'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ["feature-balance", "feature-message-external", "feature-message-payable", "python"], entry: util.addPaths([util.chain([ s { "calldata": ||| { diff --git a/tests/integration/stable/py/balances/undefined_receive.jsonnet b/tests/integration/stable/py/balances/undefined_receive.jsonnet index 7dddf3d1..88f6e2dc 100644 --- a/tests/integration/stable/py/balances/undefined_receive.jsonnet +++ b/tests/integration/stable/py/balances/undefined_receive.jsonnet @@ -2,7 +2,7 @@ local simple = import 'templates/simple_deploy.jsonnet'; local msg = import 'templates/message.json'; local s = simple.run('${jsonnetDir}/undefined_receive.py'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ["feature-balance", "feature-message-external", "feature-message-payable", "python"], entry: util.addPaths([util.chain([ s { "calldata": ||| { diff --git a/tests/integration/stable/py/embeddings/simple.jsonnet b/tests/integration/stable/py/embeddings/simple.jsonnet index 50f905b4..2c84b206 100644 --- a/tests/integration/stable/py/embeddings/simple.jsonnet +++ b/tests/integration/stable/py/embeddings/simple.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', 'main', [false])])} +{tags: ["feature-nasty-determinism-float", "feature-nondet", "feature-prompt-embedding", "python", "slow"], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', 'main', [false])])} diff --git a/tests/integration/stable/py/embeddings/simple_det.jsonnet b/tests/integration/stable/py/embeddings/simple_det.jsonnet index 61bba4eb..f5f77469 100644 --- a/tests/integration/stable/py/embeddings/simple_det.jsonnet +++ b/tests/integration/stable/py/embeddings/simple_det.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'main', [true])])} +{tags: ["feature-nasty-determinism-float", "feature-prompt-embedding", "python", "slow"], entry: util.addPaths([simple.run('${jsonnetDir}/simple.py', 'main', [true])])} diff --git a/tests/integration/stable/py/embeddings/simple_tokenizer.jsonnet b/tests/integration/stable/py/embeddings/simple_tokenizer.jsonnet index 3afe829e..9c4210a5 100644 --- a/tests/integration/stable/py/embeddings/simple_tokenizer.jsonnet +++ b/tests/integration/stable/py/embeddings/simple_tokenizer.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', 'main', [true])])} +{tags: ["feature-prompt-tokenizer", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', 'main', [true])])} diff --git a/tests/integration/stable/py/embeddings/vecdb.jsonnet b/tests/integration/stable/py/embeddings/vecdb.jsonnet index 0e1c4ba5..718f0e85 100644 --- a/tests/integration/stable/py/embeddings/vecdb.jsonnet +++ b/tests/integration/stable/py/embeddings/vecdb.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ["feature-storage-vector-db", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/py/events/post_event.jsonnet b/tests/integration/stable/py/events/post_event.jsonnet index fbde6229..cc86e2c4 100644 --- a/tests/integration/stable/py/events/post_event.jsonnet +++ b/tests/integration/stable/py/events/post_event.jsonnet @@ -1,6 +1,6 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/post_event.py') { +{tags: ["feature-event", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/post_event.py') { "message"+: { "datetime": "2025-07-11T00:00:00Z" } diff --git a/tests/integration/stable/py/intercontract/call_view.jsonnet b/tests/integration/stable/py/intercontract/call_view.jsonnet index e0590695..2307e4a1 100644 --- a/tests/integration/stable/py/intercontract/call_view.jsonnet +++ b/tests/integration/stable/py/intercontract/call_view.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/two.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/call_view_from.py', '${jsonnetDir}/call_view_to.py', +{tags: ["feature-message-external-view", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/call_view_from.py', '${jsonnetDir}/call_view_to.py', ||| { "": "main", diff --git a/tests/integration/stable/py/intercontract/call_view_iface.jsonnet b/tests/integration/stable/py/intercontract/call_view_iface.jsonnet index 4024d6c1..24bc8588 100644 --- a/tests/integration/stable/py/intercontract/call_view_iface.jsonnet +++ b/tests/integration/stable/py/intercontract/call_view_iface.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/two.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/call_view_from_iface.py', '${jsonnetDir}/call_view_to.py', +{tags: ["feature-message-external-view", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/call_view_from_iface.py', '${jsonnetDir}/call_view_to.py', ||| { "": "main", diff --git a/tests/integration/stable/py/intercontract/deploy.jsonnet b/tests/integration/stable/py/intercontract/deploy.jsonnet index 0e1c4ba5..60a75f32 100644 --- a/tests/integration/stable/py/intercontract/deploy.jsonnet +++ b/tests/integration/stable/py/intercontract/deploy.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ["feature-message-deploy", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/py/intercontract/deploy_salt.jsonnet b/tests/integration/stable/py/intercontract/deploy_salt.jsonnet index 658e78ff..f4820e93 100644 --- a/tests/integration/stable/py/intercontract/deploy_salt.jsonnet +++ b/tests/integration/stable/py/intercontract/deploy_salt.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/deploy_salt.py')])} +{tags: ["feature-message-deploy-salt", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/deploy_salt.py')])} diff --git a/tests/integration/stable/py/intercontract/send_message.jsonnet b/tests/integration/stable/py/intercontract/send_message.jsonnet index 208dc442..69040f97 100644 --- a/tests/integration/stable/py/intercontract/send_message.jsonnet +++ b/tests/integration/stable/py/intercontract/send_message.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/send_message.py')])} +{tags: ["feature-message-send", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/send_message.py')])} diff --git a/tests/integration/stable/py/intercontract/send_message_eth.jsonnet b/tests/integration/stable/py/intercontract/send_message_eth.jsonnet index 77781707..4f52a860 100644 --- a/tests/integration/stable/py/intercontract/send_message_eth.jsonnet +++ b/tests/integration/stable/py/intercontract/send_message_eth.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/send_message_eth.py')])} +{tags: ["feature-message-send-eth", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/send_message_eth.py')])} diff --git a/tests/integration/stable/py/intercontract/send_message_on.jsonnet b/tests/integration/stable/py/intercontract/send_message_on.jsonnet index 58bc6eb9..c8a09dfc 100644 --- a/tests/integration/stable/py/intercontract/send_message_on.jsonnet +++ b/tests/integration/stable/py/intercontract/send_message_on.jsonnet @@ -2,7 +2,7 @@ local simple = import 'templates/simple_deploy.jsonnet'; local msg = import 'templates/message.json'; local s = simple.run('${jsonnetDir}/send_message_on.py'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ["feature-message-send", "python"], entry: util.addPaths([util.chain([ s { "calldata": ||| { diff --git a/tests/integration/stable/py/other/meth/method_init.jsonnet b/tests/integration/stable/py/other/meth/method_init.jsonnet index 6d4a898b..a666e81c 100644 --- a/tests/integration/stable/py/other/meth/method_init.jsonnet +++ b/tests/integration/stable/py/other/meth/method_init.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/methods.py')])} +{tags: ["python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/methods.py')])} diff --git a/tests/integration/stable/py/other/meth/method_init_wrong_name.jsonnet b/tests/integration/stable/py/other/meth/method_init_wrong_name.jsonnet index 2f24f389..e7e617d3 100644 --- a/tests/integration/stable/py/other/meth/method_init_wrong_name.jsonnet +++ b/tests/integration/stable/py/other/meth/method_init_wrong_name.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/methods.py') { +{tags: ["feature-message-external", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/methods.py') { "calldata": ||| { "": "pub", diff --git a/tests/integration/stable/py/other/meth/method_public.jsonnet b/tests/integration/stable/py/other/meth/method_public.jsonnet index 61df6bdc..a7b9a54c 100644 --- a/tests/integration/stable/py/other/meth/method_public.jsonnet +++ b/tests/integration/stable/py/other/meth/method_public.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/methods.py', 'pub')])} +{tags: ["feature-message-external", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/methods.py', 'pub')])} diff --git a/tests/integration/stable/py/other/meth/method_retn.jsonnet b/tests/integration/stable/py/other/meth/method_retn.jsonnet index 3033d07b..4726b462 100644 --- a/tests/integration/stable/py/other/meth/method_retn.jsonnet +++ b/tests/integration/stable/py/other/meth/method_retn.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/methods.py', 'retn')])} +{tags: ["feature-message-external", "feature-schema-complex", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/methods.py', 'retn')])} diff --git a/tests/integration/stable/py/other/meth/method_retn_view.jsonnet b/tests/integration/stable/py/other/meth/method_retn_view.jsonnet index 8a4c4a27..a54e377d 100644 --- a/tests/integration/stable/py/other/meth/method_retn_view.jsonnet +++ b/tests/integration/stable/py/other/meth/method_retn_view.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/methods.py', 'retn_view')])} +{tags: ["feature-message-external-view", "feature-message-view", "feature-schema-complex", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/methods.py', 'retn_view')])} diff --git a/tests/integration/stable/py/other/meth/method_rollback.jsonnet b/tests/integration/stable/py/other/meth/method_rollback.jsonnet index 9b834901..5add876b 100644 --- a/tests/integration/stable/py/other/meth/method_rollback.jsonnet +++ b/tests/integration/stable/py/other/meth/method_rollback.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/methods.py', 'rback')])} +{tags: ["feature-message-external", "feature-user-error", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/methods.py', 'rback')])} diff --git a/tests/integration/stable/py/other/ret/returns.jsonnet b/tests/integration/stable/py/other/ret/returns.jsonnet index 8b61184e..85dfed6c 100644 --- a/tests/integration/stable/py/other/ret/returns.jsonnet +++ b/tests/integration/stable/py/other/ret/returns.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([ +{tags: ["feature-schema-complex", "feature-schema-primitive", "python"], entry: util.addPaths([ simple.run('${jsonnetDir}/${fileBaseName}.py', 'main', [idx]) for idx in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ])} diff --git a/tests/integration/stable/py/pitfalls/error_msg.jsonnet b/tests/integration/stable/py/pitfalls/error_msg.jsonnet index 5b1a481f..71b9368c 100644 --- a/tests/integration/stable/py/pitfalls/error_msg.jsonnet +++ b/tests/integration/stable/py/pitfalls/error_msg.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/error_msg.py', '#error')])} +{tags: ["feature-user-error", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/error_msg.py', '#error')])} diff --git a/tests/integration/stable/py/pitfalls/error_msg_overridden.jsonnet b/tests/integration/stable/py/pitfalls/error_msg_overridden.jsonnet index 5e64724f..c1f70b66 100644 --- a/tests/integration/stable/py/pitfalls/error_msg_overridden.jsonnet +++ b/tests/integration/stable/py/pitfalls/error_msg_overridden.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/error_msg_overridden.py', '#error') { +{tags: ["feature-message-payable", "feature-user-error", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/error_msg_overridden.py', '#error') { next: [super.next[0] { message+: { value: 100 diff --git a/tests/integration/stable/py/pitfalls/multi_contract.jsonnet b/tests/integration/stable/py/pitfalls/multi_contract.jsonnet index 69df4d00..76c1be24 100644 --- a/tests/integration/stable/py/pitfalls/multi_contract.jsonnet +++ b/tests/integration/stable/py/pitfalls/multi_contract.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/multi_contract.py')])} +{tags: ["feature-user-error", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/multi_contract.py')])} diff --git a/tests/integration/stable/py/pitfalls/pub_ctor.jsonnet b/tests/integration/stable/py/pitfalls/pub_ctor.jsonnet index 3476156c..956f050e 100644 --- a/tests/integration/stable/py/pitfalls/pub_ctor.jsonnet +++ b/tests/integration/stable/py/pitfalls/pub_ctor.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/pub_ctor.py')])} +{tags: ["feature-schema", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/pub_ctor.py')])} diff --git a/tests/integration/stable/py/pitfalls/store_proxy.jsonnet b/tests/integration/stable/py/pitfalls/store_proxy.jsonnet index dc63d183..7d0960c7 100644 --- a/tests/integration/stable/py/pitfalls/store_proxy.jsonnet +++ b/tests/integration/stable/py/pitfalls/store_proxy.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/store_proxy.py')])} +{tags: ["feature-storage-dynamic-array", "feature-storage-nested", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/store_proxy.py')])} diff --git a/tests/integration/stable/py/rollbacks/call_view.jsonnet b/tests/integration/stable/py/rollbacks/call_view.jsonnet index 21d52f5f..bef1db07 100644 --- a/tests/integration/stable/py/rollbacks/call_view.jsonnet +++ b/tests/integration/stable/py/rollbacks/call_view.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/two.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/call_view_from.py', '${jsonnetDir}/call_view_to.py', ||| +{tags: ["feature-message-external-view", "feature-user-error", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/call_view_from.py', '${jsonnetDir}/call_view_to.py', ||| { "": "main", "args": [Address(toAddr)] diff --git a/tests/integration/stable/py/rollbacks/nondet.jsonnet b/tests/integration/stable/py/rollbacks/nondet.jsonnet index 0e1c4ba5..6aee670f 100644 --- a/tests/integration/stable/py/rollbacks/nondet.jsonnet +++ b/tests/integration/stable/py/rollbacks/nondet.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ["feature-nondet", "feature-user-error", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/py/rollbacks/simple.jsonnet b/tests/integration/stable/py/rollbacks/simple.jsonnet index 7591bc7d..821e9969 100644 --- a/tests/integration/stable/py/rollbacks/simple.jsonnet +++ b/tests/integration/stable/py/rollbacks/simple.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/simple.py')])} +{tags: ["feature-user-error", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/simple.py')])} diff --git a/tests/integration/stable/py/sandbox/det/s/assign-json.jsonnet b/tests/integration/stable/py/sandbox/det/s/assign-json.jsonnet index e466d6d2..d0ffdb9d 100644 --- a/tests/integration/stable/py/sandbox/det/s/assign-json.jsonnet +++ b/tests/integration/stable/py/sandbox/det/s/assign-json.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["exec(\"json.loads.__name__ = 'haha'\")"])])} +{tags: ["feature-sandbox-det", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["exec(\"json.loads.__name__ = 'haha'\")"])])} diff --git a/tests/integration/stable/py/sandbox/det/s/exit.jsonnet b/tests/integration/stable/py/sandbox/det/s/exit.jsonnet index 01e07a4c..428d9ac1 100644 --- a/tests/integration/stable/py/sandbox/det/s/exit.jsonnet +++ b/tests/integration/stable/py/sandbox/det/s/exit.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["exit(1)"])])} +{tags: ["feature-sandbox-det", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["exit(1)"])])} diff --git a/tests/integration/stable/py/sandbox/det/s/print.jsonnet b/tests/integration/stable/py/sandbox/det/s/print.jsonnet index 13d6f36b..5a33460b 100644 --- a/tests/integration/stable/py/sandbox/det/s/print.jsonnet +++ b/tests/integration/stable/py/sandbox/det/s/print.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["print('1')"])])} +{tags: ["feature-sandbox-det", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["print('1')"])])} diff --git a/tests/integration/stable/py/sandbox/det/s/rollback.jsonnet b/tests/integration/stable/py/sandbox/det/s/rollback.jsonnet index 92e2beca..4f19232b 100644 --- a/tests/integration/stable/py/sandbox/det/s/rollback.jsonnet +++ b/tests/integration/stable/py/sandbox/det/s/rollback.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["gl.advanced.user_error_immediate('RB')"])])} +{tags: ["feature-sandbox-det", "feature-user-error", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["gl.advanced.user_error_immediate('RB')"])])} diff --git a/tests/integration/stable/py/sandbox/det/s/sandbox.jsonnet b/tests/integration/stable/py/sandbox/det/s/sandbox.jsonnet index 915c00a7..d58ede04 100644 --- a/tests/integration/stable/py/sandbox/det/s/sandbox.jsonnet +++ b/tests/integration/stable/py/sandbox/det/s/sandbox.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["gl.nondet.web.render('https://test-server.genlayer.com/static/genvm/hello.html', mode='text')"])])} +{tags: ["feature-nondet", "feature-sandbox-non-det", "feature-web-render", "needs-web", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["gl.nondet.web.render('https://test-server.genlayer.com/static/genvm/hello.html', mode='text')"])])} diff --git a/tests/integration/stable/py/sandbox/det/sandbox_write.jsonnet b/tests/integration/stable/py/sandbox/det/sandbox_write.jsonnet index 0e1c4ba5..996c2891 100644 --- a/tests/integration/stable/py/sandbox/det/sandbox_write.jsonnet +++ b/tests/integration/stable/py/sandbox/det/sandbox_write.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ["feature-sandbox-det", "feature-storage", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/py/sandbox/non-det/s/assign-json.jsonnet b/tests/integration/stable/py/sandbox/non-det/s/assign-json.jsonnet index e466d6d2..520ef2e3 100644 --- a/tests/integration/stable/py/sandbox/non-det/s/assign-json.jsonnet +++ b/tests/integration/stable/py/sandbox/non-det/s/assign-json.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["exec(\"json.loads.__name__ = 'haha'\")"])])} +{tags: ["feature-sandbox-non-det", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["exec(\"json.loads.__name__ = 'haha'\")"])])} diff --git a/tests/integration/stable/py/sandbox/non-det/s/exit.jsonnet b/tests/integration/stable/py/sandbox/non-det/s/exit.jsonnet index 01e07a4c..e70a26b7 100644 --- a/tests/integration/stable/py/sandbox/non-det/s/exit.jsonnet +++ b/tests/integration/stable/py/sandbox/non-det/s/exit.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["exit(1)"])])} +{tags: ["feature-sandbox-non-det", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["exit(1)"])])} diff --git a/tests/integration/stable/py/sandbox/non-det/s/print.jsonnet b/tests/integration/stable/py/sandbox/non-det/s/print.jsonnet index 13d6f36b..ac3f912f 100644 --- a/tests/integration/stable/py/sandbox/non-det/s/print.jsonnet +++ b/tests/integration/stable/py/sandbox/non-det/s/print.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["print('1')"])])} +{tags: ["feature-sandbox-non-det", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["print('1')"])])} diff --git a/tests/integration/stable/py/sandbox/non-det/s/rollback.jsonnet b/tests/integration/stable/py/sandbox/non-det/s/rollback.jsonnet index 92e2beca..7ec25279 100644 --- a/tests/integration/stable/py/sandbox/non-det/s/rollback.jsonnet +++ b/tests/integration/stable/py/sandbox/non-det/s/rollback.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["gl.advanced.user_error_immediate('RB')"])])} +{tags: ["feature-sandbox-non-det", "feature-user-error", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/../code.py', 'main', ["gl.advanced.user_error_immediate('RB')"])])} diff --git a/tests/integration/stable/py/schemas/complex_types.jsonnet b/tests/integration/stable/py/schemas/complex_types.jsonnet index 6b80cfc8..d2fa6ca5 100644 --- a/tests/integration/stable/py/schemas/complex_types.jsonnet +++ b/tests/integration/stable/py/schemas/complex_types.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/complex_types.py', '#get-schema')])} +{tags: ["feature-schema-complex", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/complex_types.py', '#get-schema')])} diff --git a/tests/integration/stable/py/schemas/prim_types.jsonnet b/tests/integration/stable/py/schemas/prim_types.jsonnet index 5f6cb7ad..25bec5d4 100644 --- a/tests/integration/stable/py/schemas/prim_types.jsonnet +++ b/tests/integration/stable/py/schemas/prim_types.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/prim_types.py', '#get-schema')])} +{tags: ["feature-schema-primitive", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/prim_types.py', '#get-schema')])} diff --git a/tests/integration/stable/py/schemas/ret-float.jsonnet b/tests/integration/stable/py/schemas/ret-float.jsonnet index 2b180663..f26974cd 100644 --- a/tests/integration/stable/py/schemas/ret-float.jsonnet +++ b/tests/integration/stable/py/schemas/ret-float.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/ret-float.py', '#get-schema')])} +{tags: ["feature-schema-float", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/ret-float.py', '#get-schema')])} diff --git a/tests/integration/stable/py/schemas/ret-tuple.jsonnet b/tests/integration/stable/py/schemas/ret-tuple.jsonnet index 73ba0c5e..feb42fac 100644 --- a/tests/integration/stable/py/schemas/ret-tuple.jsonnet +++ b/tests/integration/stable/py/schemas/ret-tuple.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/ret-tuple.py', '#get-schema')])} +{tags: ["feature-schema-tuple", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/ret-tuple.py', '#get-schema')])} diff --git a/tests/integration/stable/py/schemas/ret.jsonnet b/tests/integration/stable/py/schemas/ret.jsonnet index 436ecb74..9eada5d7 100644 --- a/tests/integration/stable/py/schemas/ret.jsonnet +++ b/tests/integration/stable/py/schemas/ret.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/trivial.py', '#get-schema')])} +{tags: ["feature-message-payable", "feature-schema-primitive", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/trivial.py', '#get-schema')])} diff --git a/tests/integration/stable/py/schemas/trivial.jsonnet b/tests/integration/stable/py/schemas/trivial.jsonnet index c9dfc440..68a676a0 100644 --- a/tests/integration/stable/py/schemas/trivial.jsonnet +++ b/tests/integration/stable/py/schemas/trivial.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', '#get-schema')])} +{tags: ["feature-message-payable", "feature-schema-primitive", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py', '#get-schema')])} diff --git a/tests/integration/stable/runners/dup-dependency.jsonnet b/tests/integration/stable/runners/dup-dependency.jsonnet index b098fde6..b2c6c250 100644 --- a/tests/integration/stable/runners/dup-dependency.jsonnet +++ b/tests/integration/stable/runners/dup-dependency.jsonnet @@ -1,6 +1,7 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; { + tags: ['python', 'feature-runner-dependency'], prepare: '${jsonnetDir}/dup-dependency-prepare.py', entry: util.addPaths([simple.run('${jsonnetDir}/dup-dependency.py')]) } diff --git a/tests/integration/stable/runners/env-template.jsonnet b/tests/integration/stable/runners/env-template.jsonnet index bf49c935..b1bfd4c7 100644 --- a/tests/integration/stable/runners/env-template.jsonnet +++ b/tests/integration/stable/runners/env-template.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/env-template.py')])} +{tags: util.features([['runner'], ['wasi', 'environment']], 'stable') + ['python'], entry: util.addPaths([simple.run('${jsonnetDir}/env-template.py')])} diff --git a/tests/integration/stable/runners/lock/lock.jsonnet b/tests/integration/stable/runners/lock/lock.jsonnet index dcc2c350..9c206f69 100644 --- a/tests/integration/stable/runners/lock/lock.jsonnet +++ b/tests/integration/stable/runners/lock/lock.jsonnet @@ -1,6 +1,7 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; { + tags: ['python', 'feature-runner-lock'], prepare: '${jsonnetDir}/prepare.py', entry: util.addPaths([simple.run('${jsonnetDir}/contract.zip') {stable_hash: false}]) } diff --git a/tests/integration/stable/runners/malformed_runner.jsonnet b/tests/integration/stable/runners/malformed_runner.jsonnet index e67a5f0c..f5265d4b 100644 --- a/tests/integration/stable/runners/malformed_runner.jsonnet +++ b/tests/integration/stable/runners/malformed_runner.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/malformed_runner.py') { +{tags: ['python', 'feature-runner-malformed'], entry: util.addPaths([simple.run('${jsonnetDir}/malformed_runner.py') { "calldata": ||| { } diff --git a/tests/integration/stable/runners/multi-file/contract/multi-file.jsonnet b/tests/integration/stable/runners/multi-file/contract/multi-file.jsonnet index c9f59544..f417bdbb 100644 --- a/tests/integration/stable/runners/multi-file/contract/multi-file.jsonnet +++ b/tests/integration/stable/runners/multi-file/contract/multi-file.jsonnet @@ -1,6 +1,7 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; { + tags: ['python', 'feature-runner-multi-file', 'feature-runner-zip'], prepare: '${jsonnetDir}/prepare.py', entry: util.addPaths([simple_deploy.run('${jsonnetDir}/contract.zip') {stable_hash: false}]) } diff --git a/tests/integration/stable/runners/no_runner.jsonnet b/tests/integration/stable/runners/no_runner.jsonnet index 6ae5a7fb..0ddf48a5 100644 --- a/tests/integration/stable/runners/no_runner.jsonnet +++ b/tests/integration/stable/runners/no_runner.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/no_runner.py') { +{tags: ['python', 'feature-runner-malformed'], entry: util.addPaths([simple.run('${jsonnetDir}/no_runner.py') { "calldata": ||| { } diff --git a/tests/integration/stable/runners/zip/no-zip.jsonnet b/tests/integration/stable/runners/zip/no-zip.jsonnet index d52c9791..0c93d3d0 100644 --- a/tests/integration/stable/runners/zip/no-zip.jsonnet +++ b/tests/integration/stable/runners/zip/no-zip.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/contract.py')])} +{tags: ['python'], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/contract.py')])} diff --git a/tests/integration/stable/runners/zip/zip.jsonnet b/tests/integration/stable/runners/zip/zip.jsonnet index cbcf5a01..bc970303 100644 --- a/tests/integration/stable/runners/zip/zip.jsonnet +++ b/tests/integration/stable/runners/zip/zip.jsonnet @@ -1,6 +1,7 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; { + tags: ['python', 'feature-runner-zip'], prepare: '${jsonnetDir}/prepare.py', entry: util.addPaths(util.mapGraph(function(e) e {stable_hash: false}, [simple.run('${jsonnetDir}/contract.zip', 'foo')])) } diff --git a/tests/integration/stable/self-run/datetime.jsonnet b/tests/integration/stable/self-run/datetime.jsonnet index 96940867..22f2babd 100644 --- a/tests/integration/stable/self-run/datetime.jsonnet +++ b/tests/integration/stable/self-run/datetime.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ['python', 'feature-wasi-clock'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/self-run/floats.jsonnet b/tests/integration/stable/self-run/floats.jsonnet index 96940867..5cf6e44a 100644 --- a/tests/integration/stable/self-run/floats.jsonnet +++ b/tests/integration/stable/self-run/floats.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ['python', 'feature-nasty-determinism-float'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/self-run/formats.jsonnet b/tests/integration/stable/self-run/formats.jsonnet index 96940867..17a6a64b 100644 --- a/tests/integration/stable/self-run/formats.jsonnet +++ b/tests/integration/stable/self-run/formats.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ['python', 'feature-storage-dynamic-array', 'feature-storage-tree-map'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/self-run/issue_163.jsonnet b/tests/integration/stable/self-run/issue_163.jsonnet index e327794e..4ed46f5d 100644 --- a/tests/integration/stable/self-run/issue_163.jsonnet +++ b/tests/integration/stable/self-run/issue_163.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/issue_163.py')])} +{tags: ['python', 'feature-storage-tree-map'], entry: util.addPaths([simple.run('${jsonnetDir}/issue_163.py')])} diff --git a/tests/integration/stable/self-run/module/np.jsonnet b/tests/integration/stable/self-run/module/np.jsonnet index 23e98624..e26f518d 100644 --- a/tests/integration/stable/self-run/module/np.jsonnet +++ b/tests/integration/stable/self-run/module/np.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py') { +{tags: ['python'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py') { "calldata": ||| {} ||| diff --git a/tests/integration/stable/self-run/module/pil.jsonnet b/tests/integration/stable/self-run/module/pil.jsonnet index 23e98624..e26f518d 100644 --- a/tests/integration/stable/self-run/module/pil.jsonnet +++ b/tests/integration/stable/self-run/module/pil.jsonnet @@ -1,6 +1,6 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py') { +{tags: ['python'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py') { "calldata": ||| {} ||| diff --git a/tests/integration/stable/self-run/re.jsonnet b/tests/integration/stable/self-run/re.jsonnet index 96940867..f4ca4ad1 100644 --- a/tests/integration/stable/self-run/re.jsonnet +++ b/tests/integration/stable/self-run/re.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ['python'], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/self-run/typing_is_ok.jsonnet b/tests/integration/stable/self-run/typing_is_ok.jsonnet index 449a24f3..0d68f4f1 100644 --- a/tests/integration/stable/self-run/typing_is_ok.jsonnet +++ b/tests/integration/stable/self-run/typing_is_ok.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/typing_is_ok.py')])} +{tags: ['python'], entry: util.addPaths([simple.run('${jsonnetDir}/typing_is_ok.py')])} diff --git a/tests/integration/stable/storage/alloc_generic.jsonnet b/tests/integration/stable/storage/alloc_generic.jsonnet index 1af4a4e8..073a1d26 100644 --- a/tests/integration/stable/storage/alloc_generic.jsonnet +++ b/tests/integration/stable/storage/alloc_generic.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/alloc_generic.py')])} +{tags: ["feature-storage-allocation", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/alloc_generic.py')])} diff --git a/tests/integration/stable/storage/alloc_generic_err.jsonnet b/tests/integration/stable/storage/alloc_generic_err.jsonnet index 7591d085..8afc4f62 100644 --- a/tests/integration/stable/storage/alloc_generic_err.jsonnet +++ b/tests/integration/stable/storage/alloc_generic_err.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/alloc_generic_err.py')])} +{tags: ["feature-storage-allocation", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/alloc_generic_err.py')])} diff --git a/tests/integration/stable/storage/base.jsonnet b/tests/integration/stable/storage/base.jsonnet index 96940867..07688158 100644 --- a/tests/integration/stable/storage/base.jsonnet +++ b/tests/integration/stable/storage/base.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ["feature-storage-nested", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/storage/floats.jsonnet b/tests/integration/stable/storage/floats.jsonnet index 96940867..a4fa473a 100644 --- a/tests/integration/stable/storage/floats.jsonnet +++ b/tests/integration/stable/storage/floats.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ["feature-storage-float", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/storage/gvm-89.jsonnet b/tests/integration/stable/storage/gvm-89.jsonnet index 8031ccc5..b291c0b4 100644 --- a/tests/integration/stable/storage/gvm-89.jsonnet +++ b/tests/integration/stable/storage/gvm-89.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/gvm-89.py', 'main')])} +{tags: ["feature-storage-dynamic-array", "feature-storage-nested", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/gvm-89.py', 'main')])} diff --git a/tests/integration/stable/storage/locking/default-frozen.jsonnet b/tests/integration/stable/storage/locking/default-frozen.jsonnet index d0d1bbcd..9932526b 100644 --- a/tests/integration/stable/storage/locking/default-frozen.jsonnet +++ b/tests/integration/stable/storage/locking/default-frozen.jsonnet @@ -1,7 +1,7 @@ local simple = import 'templates/simple.jsonnet'; local s = simple.run('${jsonnetDir}/code.py'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ["feature-storage-lock", "python"], entry: util.addPaths([util.chain([ s { "calldata": ||| { diff --git a/tests/integration/stable/storage/locking/modify_ctor.jsonnet b/tests/integration/stable/storage/locking/modify_ctor.jsonnet index 49ad8ffe..f3405c11 100644 --- a/tests/integration/stable/storage/locking/modify_ctor.jsonnet +++ b/tests/integration/stable/storage/locking/modify_ctor.jsonnet @@ -1,7 +1,7 @@ local simple = import 'templates/simple.jsonnet'; local s = simple.run('${jsonnetDir}/code.py'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ["feature-storage-lock", "python"], entry: util.addPaths([util.chain([ s { "calldata": ||| { diff --git a/tests/integration/stable/storage/locking/modify_later.jsonnet b/tests/integration/stable/storage/locking/modify_later.jsonnet index 957128f0..66c23c56 100644 --- a/tests/integration/stable/storage/locking/modify_later.jsonnet +++ b/tests/integration/stable/storage/locking/modify_later.jsonnet @@ -1,7 +1,7 @@ local simple = import 'templates/simple.jsonnet'; local s = simple.run('${jsonnetDir}/code.py'); local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([util.chain([ +{tags: ["feature-storage-lock", "python"], entry: util.addPaths([util.chain([ s { "calldata": ||| { diff --git a/tests/integration/stable/storage/np.jsonnet b/tests/integration/stable/storage/np.jsonnet index 96940867..a4fa473a 100644 --- a/tests/integration/stable/storage/np.jsonnet +++ b/tests/integration/stable/storage/np.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ["feature-storage-float", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/storage/persists.jsonnet b/tests/integration/stable/storage/persists.jsonnet index ab9bed4d..dd8a4e6f 100644 --- a/tests/integration/stable/storage/persists.jsonnet +++ b/tests/integration/stable/storage/persists.jsonnet @@ -1,3 +1,3 @@ local simple_deploy_then_write = import 'templates/simple_deploy_then_write.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy_then_write.run('${jsonnetDir}/${fileBaseName}.py', 'second')])} +{tags: ["feature-storage-persistence", "feature-storage-tree-map", "python"], entry: util.addPaths([simple_deploy_then_write.run('${jsonnetDir}/${fileBaseName}.py', 'second')])} diff --git a/tests/integration/stable/storage/read_nondet.jsonnet b/tests/integration/stable/storage/read_nondet.jsonnet index 0e1c4ba5..254da81e 100644 --- a/tests/integration/stable/storage/read_nondet.jsonnet +++ b/tests/integration/stable/storage/read_nondet.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} +{tags: ["feature-nondet", "feature-storage", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/${fileBaseName}.py')])} diff --git a/tests/integration/stable/storage/storage_tree_map.jsonnet b/tests/integration/stable/storage/storage_tree_map.jsonnet index 8651cac1..26699f1e 100644 --- a/tests/integration/stable/storage/storage_tree_map.jsonnet +++ b/tests/integration/stable/storage/storage_tree_map.jsonnet @@ -1,3 +1,3 @@ local simple = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple.run('${jsonnetDir}/storage_tree_map.py')])} +{tags: ["feature-storage-tree-map", "python"], entry: util.addPaths([simple.run('${jsonnetDir}/storage_tree_map.py')])} diff --git a/tests/integration/stable/storage/to_str.jsonnet b/tests/integration/stable/storage/to_str.jsonnet index 2b565279..8416f784 100644 --- a/tests/integration/stable/storage/to_str.jsonnet +++ b/tests/integration/stable/storage/to_str.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/to_str.py')])} +{tags: ["feature-storage-nested", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/to_str.py')])} diff --git a/tests/integration/stable/storage/tree_map_nested.jsonnet b/tests/integration/stable/storage/tree_map_nested.jsonnet index a0d5bdfa..a95763cf 100644 --- a/tests/integration/stable/storage/tree_map_nested.jsonnet +++ b/tests/integration/stable/storage/tree_map_nested.jsonnet @@ -1,3 +1,3 @@ local simple_deploy = import 'templates/simple_deploy.jsonnet'; local util = import 'templates/util.jsonnet'; -{entry: util.addPaths([simple_deploy.run('${jsonnetDir}/tree_map_nested.py')])} +{tags: ["feature-storage-nested", "feature-storage-tree-map", "python"], entry: util.addPaths([simple_deploy.run('${jsonnetDir}/tree_map_nested.py')])}