arf-console 0.6.0

A cross-platform R console written in Rust
use super::super::*;
use super::support::*;

#[test]
fn parses_commands_and_preserves_meaningful_whitespace() {
    let file = text_fixture(
        r#"library(dplyr)
  indented()

  
print("quoted")
"#,
    );

    let parsed = parse_r_history(file.path()).unwrap();
    let expected = [
        r("library(dplyr)"),
        r("  indented()"),
        r(r#"print("quoted")"#),
    ];
    assert_eq!(parsed.entries, expected);
    assert!(parsed.warnings.is_empty());
}

#[test]
fn parses_empty_and_file_not_found() {
    let empty = text_fixture("");
    assert!(parse_r_history(empty.path()).unwrap().entries.is_empty());

    let missing = tempfile::tempdir().unwrap().path().join("missing.Rhistory");
    assert!(parse_r_history(&missing).is_err());
}

#[test]
fn default_r_history_path_has_deterministic_override_and_fallback() {
    let override_path = "/tmp/arf-test-history";
    let mut env = crate::test_utils::lock_env();
    env.set("R_HISTFILE", override_path);
    assert_eq!(
        default_r_history_path(),
        std::path::PathBuf::from(override_path)
    );
    env.unset("R_HISTFILE");
    assert_eq!(
        default_r_history_path(),
        std::path::PathBuf::from(".Rhistory")
    );
}