#![allow(missing_docs)]
use assert_cmd::Command;
use std::fs;
use tempfile::TempDir;
fn ruchy_cmd() -> Command {
assert_cmd::cargo::cargo_bin_cmd!("ruchy")
}
fn temp_dir() -> TempDir {
TempDir::new().expect("Failed to create temp directory")
}
#[test]
fn test_stdlib_defect_001_green_env_args_basic() {
let temp = temp_dir();
let source = temp.path().join("test.ruchy");
let code = r"
fun main() {
let args = env_args();
println(args);
}
";
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd().arg("run").arg(&source).assert().success();
}
#[test]
#[ignore = "CLI doesn't support passing extra arguments to programs (limitation)"]
fn test_stdlib_defect_001_green_env_args_iteration() {
let temp = temp_dir();
let source = temp.path().join("test.ruchy");
let code = r"
fun main() {
let args = env_args();
for arg in args {
println(arg);
}
}
";
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd()
.arg("run")
.arg(&source)
.arg("arg1")
.arg("arg2")
.assert()
.success();
}
#[test]
fn test_stdlib_defect_001_green_env_args_compile() {
let temp = temp_dir();
let source = temp.path().join("test.ruchy");
let code = r#"
fun main() {
let args = env_args();
println("Args count:");
println(args.len());
}
"#;
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd()
.arg("compile")
.arg(&source)
.arg("-o")
.arg(temp.path().join("test_binary"))
.assert()
.success();
}
#[test]
#[ignore = "env_var() not yet implemented - only env_args() is complete"]
fn test_stdlib_defect_001_green_env_var() {
let temp = temp_dir();
let source = temp.path().join("test.ruchy");
let code = r#"
fun main() {
let path = env_var("PATH");
println("PATH exists");
}
"#;
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd().arg("run").arg(&source).assert().success();
}
#[test]
fn test_stdlib_defect_001_baseline_builtins() {
let temp = temp_dir();
let source = temp.path().join("test.ruchy");
let code = r"
fun main() {
let x = sqrt(16.0);
println(x);
}
";
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd().arg("run").arg(&source).assert().success();
}
#[test]
fn test_stdlib_defect_001_summary() {
println!("STDLIB-DEFECT-001: env::args() Not Accessible");
println!("- env::args() exists in src/stdlib/env.rs:119");
println!("- But cannot be called from Ruchy code");
println!("- Error: 'use of unresolved module env'");
println!();
println!("Root Cause:");
println!("- Transpiler doesn't generate 'use' statements for stdlib");
println!("- Runtime has env functions but they're not exposed");
println!();
println!("Solution Needed:");
println!("- Add stdlib module imports to transpiled code");
println!("- Or expose env functions as builtins");
println!("- Or create env namespace in runtime");
}