provenant-cli 0.0.8

Provenant is a high-performance Rust scanner for licenses, packages, and source provenance.
Documentation
#[cfg(test)]
mod tests {
    use crate::parsers::{PackageParser, PipfileLockParser};

    #[test]
    fn test_pipfile_lock_with_develop_dependencies() {
        use std::fs;
        use tempfile::tempdir;

        let content = r#"{
    "_meta": {
        "hash": {"sha256": "test-hash"},
        "pipfile-spec": 6
    },
    "default": {
        "requests": {
            "hashes": ["sha256:abc123"],
            "version": "==2.28.0"
        }
    },
    "develop": {
        "pytest": {
            "hashes": ["sha256:def456"],
            "version": "==7.2.0"
        },
        "black": {
            "hashes": ["sha256:ghi789"],
            "version": "==23.1.0"
        }
    }
}"#;

        let temp_dir = tempdir().unwrap();
        let file_path = temp_dir.path().join("Pipfile.lock");
        fs::write(&file_path, content).unwrap();

        let package_data = PipfileLockParser::extract_first_package(&file_path);

        assert_eq!(package_data.dependencies.len(), 3);

        let default_deps: Vec<_> = package_data
            .dependencies
            .iter()
            .filter(|dep| dep.scope.as_deref() == Some("install"))
            .collect();
        assert_eq!(default_deps.len(), 1);
        assert_eq!(default_deps[0].is_runtime, Some(true));

        let develop_deps: Vec<_> = package_data
            .dependencies
            .iter()
            .filter(|dep| dep.scope.as_deref() == Some("develop"))
            .collect();
        assert_eq!(develop_deps.len(), 2);
        for dep in develop_deps {
            assert_eq!(dep.scope, Some("develop".to_string()));
            assert_eq!(dep.is_runtime, Some(false));
        }
    }
}