hcl-edit 0.9.6

Parse and modify HCL while preserving comments and whitespace
Documentation
use super::*;
use pretty_assertions::assert_eq;

#[test]
fn dedent_template() {
    let tests = [
        ("${foo}\n  bar\n", "${foo}\n  bar\n"),
        ("  ${foo}\n  ${bar}\n    ${baz}", "${foo}\n${bar}\n  ${baz}"),
        ("  ${foo}\n", "${foo}\n"),
        ("  foo\n${bar}\n    baz\n", "  foo\n${bar}\n    baz\n"),
        ("  foo${bar}\n    baz", "foo${bar}\n  baz"),
        ("  foo\n    bar\n      baz", "foo\n  bar\n    baz"),
    ];

    for (input, expected) in tests {
        let mut template: Template = input.parse().unwrap();
        template.dedent();

        assert_eq!(
            template.to_string(),
            expected,
            "unexpected dedent result for input `{input}`",
        );
    }
}