mir-analyzer 0.85.0

Analysis engine for the mir PHP static analyzer
Documentation
use super::{fqcn, load_full_symfony_fixture};
use crate::db::resolve_fqcn_to_path;

#[test]
#[ignore = "requires MIR_SYMFONY_FIXTURE or benches/fixtures/symfony"]
fn symfony_query_resolve_fqcn_to_path() {
    let Some(fx) = load_full_symfony_fixture() else {
        eprintln!("skipping: Symfony fixture not available");
        return;
    };

    let db = fx.session.snapshot_db();
    let request = fqcn(&db, "Symfony\\Component\\HttpFoundation\\Request");
    let request_stack = fqcn(&db, "Symfony\\Component\\HttpFoundation\\RequestStack");
    let ascii_slugger = fqcn(&db, "Symfony\\Component\\String\\Slugger\\AsciiSlugger");
    let session_interface = fqcn(
        &db,
        "Symfony\\Component\\HttpFoundation\\Session\\SessionInterface",
    );
    let missing = fqcn(&db, "Symfony\\Component\\HttpFoundation\\DefinitelyMissing");
    assert_eq!(
        resolve_fqcn_to_path(&db, request).as_deref(),
        Some(fx.request.as_ref())
    );
    assert_eq!(
        resolve_fqcn_to_path(&db, request_stack).as_deref(),
        Some(fx.request_stack.as_ref())
    );
    assert_eq!(
        resolve_fqcn_to_path(&db, ascii_slugger).as_deref(),
        Some(fx.ascii_slugger.as_ref())
    );
    assert_eq!(
        resolve_fqcn_to_path(&db, session_interface).as_deref(),
        Some(fx.session_interface.as_ref())
    );
    assert!(resolve_fqcn_to_path(&db, missing).is_none());
}