cloudcover-go 0.1.3

Go source analyzer for CloudCover
use std::{error::Error, path::PathBuf};

use cloudcover_core::GoMethodReference;
use cloudcover_go::{GoAnalysisError, analyze_dir};

fn basic_fixture_dir() -> PathBuf {
    PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/fixtures/basic")
}

#[test]
fn analyzes_interface_calls_in_fixture() -> Result<(), Box<dyn Error>> {
    let analysis = analyze_dir(basic_fixture_dir())?;
    let methods = analysis.methods();

    assert!(methods.contains(&GoMethodReference::new(
        "example.com/cloudcover/basic",
        Some("Client".to_owned()),
        "Do",
    )));
    assert!(methods.contains(&GoMethodReference::new(
        "example.com/cloudcover/basic",
        None,
        "helper",
    )));

    Ok(())
}

#[test]
fn rejects_file_paths_before_ffi() {
    let fixture_file = basic_fixture_dir().join("main.go");
    let err = analyze_dir(fixture_file).err();

    assert!(matches!(err, Some(GoAnalysisError::NotDirectory(_))));
}