yami 0.1.0

A lightweight, zero-copy, minimal-allocation YAML parser in Rust
Documentation
use insta::assert_debug_snapshot;
use yami::parse;

#[test]
fn test_snapshot_docker_compose() {
    let yaml = r#"
version: "3.8"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    environment:
      NODE_ENV: production
      PORT: 80
    volumes:
      - ./data:/var/www/html
      - ./config/nginx.conf:/etc/nginx/nginx.conf
"#;

    let doc = parse(yaml).expect("docker-compose should parse");
    assert_debug_snapshot!(doc);
}

#[test]
fn test_snapshot_k8s_deployment() {
    let yaml = r#"
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80
"#;

    let doc = parse(yaml).expect("k8s deployment should parse");
    assert_debug_snapshot!(doc);
}

#[test]
fn test_snapshot_mixed_flow_and_block() {
    let yaml = r#"
package:
  name: yami
  keywords: [yaml, parser, zero-copy, fast]
  metadata:
    authors: ['Rust Developer <dev@example.com>']
    links: { repo: "https://github.com/example/yami", docs: "https://docs.rs/yami" }
"#;

    let doc = parse(yaml).expect("mixed yaml should parse");
    assert_debug_snapshot!(doc);
}

#[test]
fn test_snapshot_syntax_error_formatting() {
    let yaml_with_tab = "server:\n\thost: localhost";
    let err = parse(yaml_with_tab).expect_err("tabs should fail");
    assert_debug_snapshot!(err);
}