perl-workspace-folder 0.12.2

Parse Perl workspace folder declarations into filesystem paths
Documentation
use perl_workspace_folder::workspace_folder_to_path;
use std::fs;
use tempfile::TempDir;
use url::Url;

#[test]
fn resolves_temporary_workspace_file_uri_to_actual_path() -> Result<(), Box<dyn std::error::Error>>
{
    let temp = TempDir::new()?;
    let workspace = temp.path().join("workspace");
    fs::create_dir(&workspace)?;

    let uri =
        Url::from_file_path(&workspace).map_err(|_| "failed to encode workspace path")?.to_string();
    let parsed = workspace_folder_to_path(&uri);

    assert_eq!(parsed, workspace);
    Ok(())
}

#[test]
fn resolves_file_uri_with_space_in_path() -> Result<(), Box<dyn std::error::Error>> {
    let temp = TempDir::new()?;
    let workspace = temp.path().join("my folder");
    fs::create_dir_all(&workspace)?;

    let uri =
        Url::from_file_path(&workspace).map_err(|_| "failed to encode workspace path")?.to_string();
    let parsed = workspace_folder_to_path(&uri);

    let rendered = parsed.to_string_lossy();
    let expected = workspace.to_string_lossy();
    assert_eq!(rendered, expected);
    assert!(!rendered.contains("file://"));
    Ok(())
}