chore: add nextest cover profile, update backward-compat imports
Nextest cover profile for cargo llvm-cov integration. Update existing test imports from load_workflow_from_str to load_single_workflow_from_str for backward compatibility.
This commit is contained in:
@@ -34,6 +34,17 @@ retries = 2
|
|||||||
[profile.ci.junit]
|
[profile.ci.junit]
|
||||||
path = "target/nextest/ci/junit.xml"
|
path = "target/nextest/ci/junit.xml"
|
||||||
|
|
||||||
|
[profile.cover]
|
||||||
|
# Coverage profile — used with cargo llvm-cov nextest
|
||||||
|
fail-fast = false
|
||||||
|
test-threads = "num-cpus"
|
||||||
|
failure-output = "immediate-final"
|
||||||
|
success-output = "never"
|
||||||
|
slow-timeout = { period = "60s", terminate-after = 2 }
|
||||||
|
|
||||||
|
[profile.cover.junit]
|
||||||
|
path = "target/nextest/cover/junit.xml"
|
||||||
|
|
||||||
# Postgres tests must run serially (shared database state)
|
# Postgres tests must run serially (shared database state)
|
||||||
[[profile.default.overrides]]
|
[[profile.default.overrides]]
|
||||||
filter = "package(wfe-postgres)"
|
filter = "package(wfe-postgres)"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
proto_files.len()
|
proto_files.len()
|
||||||
);
|
);
|
||||||
|
|
||||||
let out_dir = PathBuf::from(std::env::var("OUT_DIR")?);
|
let _out_dir = PathBuf::from(std::env::var("OUT_DIR")?);
|
||||||
|
|
||||||
// Use tonic-prost-build (the tonic 0.14 way)
|
// Use tonic-prost-build (the tonic 0.14 way)
|
||||||
let mut prost_config = prost_build::Config::new();
|
let mut prost_config = prost_build::Config::new();
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ workflow:
|
|||||||
type: deno
|
type: deno
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let result = wfe_yaml::load_workflow_from_str(yaml, &config);
|
let result = wfe_yaml::load_single_workflow_from_str(yaml, &config);
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
let msg = result.err().unwrap().to_string();
|
let msg = result.err().unwrap().to_string();
|
||||||
assert!(
|
assert!(
|
||||||
@@ -242,7 +242,7 @@ workflow:
|
|||||||
FOO: bar
|
FOO: bar
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let result = wfe_yaml::load_workflow_from_str(yaml, &config);
|
let result = wfe_yaml::load_single_workflow_from_str(yaml, &config);
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
let msg = result.err().unwrap().to_string();
|
let msg = result.err().unwrap().to_string();
|
||||||
assert!(
|
assert!(
|
||||||
@@ -264,7 +264,7 @@ workflow:
|
|||||||
script: "output('key', 'val');"
|
script: "output('key', 'val');"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = wfe_yaml::load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = wfe_yaml::load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
assert!(!compiled.step_factories.is_empty());
|
assert!(!compiled.step_factories.is_empty());
|
||||||
let (key, _factory) = &compiled.step_factories[0];
|
let (key, _factory) = &compiled.step_factories[0];
|
||||||
assert!(key.contains("deno"), "factory key should contain 'deno', got: {key}");
|
assert!(key.contains("deno"), "factory key should contain 'deno', got: {key}");
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ use wfe::{WorkflowHostBuilder, run_workflow_sync};
|
|||||||
use wfe_core::test_support::{
|
use wfe_core::test_support::{
|
||||||
InMemoryLockProvider, InMemoryPersistenceProvider, InMemoryQueueProvider,
|
InMemoryLockProvider, InMemoryPersistenceProvider, InMemoryQueueProvider,
|
||||||
};
|
};
|
||||||
use wfe_yaml::load_workflow_from_str;
|
use wfe_yaml::load_single_workflow_from_str;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Helpers
|
// Helpers
|
||||||
@@ -30,7 +30,7 @@ async fn run_yaml_workflow_with_data(
|
|||||||
data: serde_json::Value,
|
data: serde_json::Value,
|
||||||
) -> wfe::models::WorkflowInstance {
|
) -> wfe::models::WorkflowInstance {
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
|
|
||||||
let persistence = Arc::new(InMemoryPersistenceProvider::new());
|
let persistence = Arc::new(InMemoryPersistenceProvider::new());
|
||||||
let lock = Arc::new(InMemoryLockProvider::new());
|
let lock = Arc::new(InMemoryLockProvider::new());
|
||||||
@@ -437,7 +437,7 @@ workflow:
|
|||||||
script: "output('x', 1);"
|
script: "output('x', 1);"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
assert!(!compiled.step_factories.is_empty());
|
assert!(!compiled.step_factories.is_empty());
|
||||||
let (key, _factory) = &compiled.step_factories[0];
|
let (key, _factory) = &compiled.step_factories[0];
|
||||||
assert!(
|
assert!(
|
||||||
@@ -467,7 +467,7 @@ workflow:
|
|||||||
dynamic_import: true
|
dynamic_import: true
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
assert!(!compiled.step_factories.is_empty());
|
assert!(!compiled.step_factories.is_empty());
|
||||||
// Verify the step config was serialized correctly.
|
// Verify the step config was serialized correctly.
|
||||||
let step = compiled
|
let step = compiled
|
||||||
@@ -497,7 +497,7 @@ workflow:
|
|||||||
timeout: "3s"
|
timeout: "3s"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
let step = compiled
|
let step = compiled
|
||||||
.definition
|
.definition
|
||||||
.steps
|
.steps
|
||||||
@@ -521,7 +521,7 @@ workflow:
|
|||||||
file: "./scripts/run.js"
|
file: "./scripts/run.js"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
let step = compiled
|
let step = compiled
|
||||||
.definition
|
.definition
|
||||||
.steps
|
.steps
|
||||||
@@ -543,7 +543,7 @@ workflow:
|
|||||||
type: deno
|
type: deno
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let result = load_workflow_from_str(yaml, &config);
|
let result = load_single_workflow_from_str(yaml, &config);
|
||||||
match result {
|
match result {
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
let msg = e.to_string();
|
let msg = e.to_string();
|
||||||
@@ -570,7 +570,7 @@ workflow:
|
|||||||
FOO: bar
|
FOO: bar
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let result = load_workflow_from_str(yaml, &config);
|
let result = load_single_workflow_from_str(yaml, &config);
|
||||||
match result {
|
match result {
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
let msg = e.to_string();
|
let msg = e.to_string();
|
||||||
@@ -596,7 +596,7 @@ workflow:
|
|||||||
script: "1+1;"
|
script: "1+1;"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
assert!(load_workflow_from_str(yaml, &config).is_ok());
|
assert!(load_single_workflow_from_str(yaml, &config).is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -612,7 +612,7 @@ workflow:
|
|||||||
file: "./run.js"
|
file: "./run.js"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
assert!(load_workflow_from_str(yaml, &config).is_ok());
|
assert!(load_single_workflow_from_str(yaml, &config).is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -632,7 +632,7 @@ workflow:
|
|||||||
script: "output('x', 1);"
|
script: "output('x', 1);"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
let has_shell = compiled.step_factories.iter().any(|(k, _)| k.contains("shell"));
|
let has_shell = compiled.step_factories.iter().any(|(k, _)| k.contains("shell"));
|
||||||
let has_deno = compiled.step_factories.iter().any(|(k, _)| k.contains("deno"));
|
let has_deno = compiled.step_factories.iter().any(|(k, _)| k.contains("deno"));
|
||||||
assert!(has_shell, "should have shell factory");
|
assert!(has_shell, "should have shell factory");
|
||||||
@@ -655,7 +655,7 @@ workflow:
|
|||||||
- "npm:is-number@7"
|
- "npm:is-number@7"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
let step = compiled
|
let step = compiled
|
||||||
.definition
|
.definition
|
||||||
.steps
|
.steps
|
||||||
@@ -685,7 +685,7 @@ workflow:
|
|||||||
BAZ: qux
|
BAZ: qux
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
let step = compiled
|
let step = compiled
|
||||||
.definition
|
.definition
|
||||||
.steps
|
.steps
|
||||||
@@ -744,7 +744,7 @@ workflow:
|
|||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
// This should compile without errors.
|
// This should compile without errors.
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
assert!(compiled.step_factories.len() >= 2);
|
assert!(compiled.step_factories.len() >= 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -809,7 +809,7 @@ workflow:
|
|||||||
script: "1;"
|
script: "1;"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
compiled.definition.description.as_deref(),
|
compiled.definition.description.as_deref(),
|
||||||
Some("A workflow with deno steps")
|
Some("A workflow with deno steps")
|
||||||
@@ -834,7 +834,7 @@ workflow:
|
|||||||
interval: "2s"
|
interval: "2s"
|
||||||
"#;
|
"#;
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
let step = compiled
|
let step = compiled
|
||||||
.definition
|
.definition
|
||||||
.steps
|
.steps
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ use wfe::{WorkflowHostBuilder, run_workflow_sync};
|
|||||||
use wfe_core::test_support::{
|
use wfe_core::test_support::{
|
||||||
InMemoryLockProvider, InMemoryPersistenceProvider, InMemoryQueueProvider,
|
InMemoryLockProvider, InMemoryPersistenceProvider, InMemoryQueueProvider,
|
||||||
};
|
};
|
||||||
use wfe_yaml::load_workflow_from_str;
|
use wfe_yaml::load_single_workflow_from_str;
|
||||||
|
|
||||||
async fn run_yaml_workflow(yaml: &str) -> wfe::models::WorkflowInstance {
|
async fn run_yaml_workflow(yaml: &str) -> wfe::models::WorkflowInstance {
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
|
|
||||||
let persistence = Arc::new(InMemoryPersistenceProvider::new());
|
let persistence = Arc::new(InMemoryPersistenceProvider::new());
|
||||||
let lock = Arc::new(InMemoryLockProvider::new());
|
let lock = Arc::new(InMemoryLockProvider::new());
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
|
|
||||||
use wfe_yaml::{load_workflow, load_workflow_from_str};
|
use wfe_yaml::{load_workflow, load_single_workflow_from_str};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn load_workflow_from_file() {
|
fn load_workflow_from_file() {
|
||||||
@@ -45,7 +45,7 @@ fn load_workflow_from_nonexistent_file_returns_error() {
|
|||||||
#[test]
|
#[test]
|
||||||
fn load_workflow_from_str_with_invalid_yaml_returns_error() {
|
fn load_workflow_from_str_with_invalid_yaml_returns_error() {
|
||||||
let yaml = "this is not valid yaml: [[[";
|
let yaml = "this is not valid yaml: [[[";
|
||||||
let result = load_workflow_from_str(yaml, &HashMap::new());
|
let result = load_single_workflow_from_str(yaml, &HashMap::new());
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
let err = match result { Err(e) => e.to_string(), Ok(_) => panic!("expected error") };
|
let err = match result { Err(e) => e.to_string(), Ok(_) => panic!("expected error") };
|
||||||
assert!(
|
assert!(
|
||||||
@@ -69,7 +69,7 @@ workflow:
|
|||||||
let mut config = HashMap::new();
|
let mut config = HashMap::new();
|
||||||
config.insert("message".to_string(), serde_json::json!("hello world"));
|
config.insert("message".to_string(), serde_json::json!("hello world"));
|
||||||
|
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
let step = compiled
|
let step = compiled
|
||||||
.definition
|
.definition
|
||||||
.steps
|
.steps
|
||||||
@@ -94,7 +94,7 @@ workflow:
|
|||||||
config:
|
config:
|
||||||
run: echo ((missing))
|
run: echo ((missing))
|
||||||
"#;
|
"#;
|
||||||
let result = load_workflow_from_str(yaml, &HashMap::new());
|
let result = load_single_workflow_from_str(yaml, &HashMap::new());
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
let err = match result { Err(e) => e.to_string(), Ok(_) => panic!("expected error") };
|
let err = match result { Err(e) => e.to_string(), Ok(_) => panic!("expected error") };
|
||||||
assert!(
|
assert!(
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ use wfe::{WorkflowHostBuilder, run_workflow_sync};
|
|||||||
use wfe_core::test_support::{
|
use wfe_core::test_support::{
|
||||||
InMemoryLockProvider, InMemoryPersistenceProvider, InMemoryQueueProvider,
|
InMemoryLockProvider, InMemoryPersistenceProvider, InMemoryQueueProvider,
|
||||||
};
|
};
|
||||||
use wfe_yaml::load_workflow_from_str;
|
use wfe_yaml::load_single_workflow_from_str;
|
||||||
|
|
||||||
async fn run_yaml_workflow_with_data(
|
async fn run_yaml_workflow_with_data(
|
||||||
yaml: &str,
|
yaml: &str,
|
||||||
data: serde_json::Value,
|
data: serde_json::Value,
|
||||||
) -> wfe::models::WorkflowInstance {
|
) -> wfe::models::WorkflowInstance {
|
||||||
let config = HashMap::new();
|
let config = HashMap::new();
|
||||||
let compiled = load_workflow_from_str(yaml, &config).unwrap();
|
let compiled = load_single_workflow_from_str(yaml, &config).unwrap();
|
||||||
|
|
||||||
let persistence = Arc::new(InMemoryPersistenceProvider::new());
|
let persistence = Arc::new(InMemoryPersistenceProvider::new());
|
||||||
let lock = Arc::new(InMemoryLockProvider::new());
|
let lock = Arc::new(InMemoryLockProvider::new());
|
||||||
|
|||||||
Reference in New Issue
Block a user