wit-component 0.225.0

Tooling for working with `*.wit` and component files together.
Documentation
#![cfg(feature = "wat")]

use anyhow::Result;
use wit_parser::Resolve;

/// Ensure that parse_wit_from_path works with directories
#[test]
fn parse_wit_dir() -> Result<()> {
    drop(env_logger::try_init());

    let mut resolver = Resolve::default();
    let (package_id, _) = resolver.push_path("tests/wit/parse-dir/wit")?;
    assert!(resolver
        .select_world(package_id, "foo-world".into())
        .is_ok());

    Ok(())
}

/// Ensure that parse_wit_from_path works for a single file
#[test]
fn parse_wit_file() -> Result<()> {
    drop(env_logger::try_init());

    let mut resolver = Resolve::default();
    let (package_id, _) = resolver.push_path("tests/wit/parse-dir/wit/deps/bar/bar.wit")?;
    resolver.select_world(package_id, "bar-world".into())?;
    assert!(resolver
        .interfaces
        .iter()
        .any(|(_, iface)| iface.name == Some("bar".into())));

    Ok(())
}

/// Ensure that parse_with_from_path fails for missing paths
#[test]
fn parse_wit_missing_path() -> Result<()> {
    drop(env_logger::try_init());

    let mut resolver = Resolve::default();
    assert!(resolver.push_path("tests/nonexistent/path").is_err());

    Ok(())
}