package envfile import ( "strings" "testing" ) func TestSetPreservesDocumentAndUpdatesLastDuplicate(t *testing.T) { doc, err := Parse([]byte("# title\nA=one\nA=two\nB=3\n")) if err != nil { t.Fatal(err) } if err := doc.Set("A", "hello world"); err != nil { t.Fatal(err) } got := string(doc.Render()) want := "# title\nA=one\nA=hello world\nB=3\n" if got != want { t.Fatalf("got %q want %q", got, want) } } func TestImportMissingCopiesComments(t *testing.T) { current, _ := Parse([]byte("A=1\n")) example, _ := Parse([]byte("# Alpha\nA=1\n\n# Beta help\nB=2\n")) missing, err := current.ImportMissing(example, "# imported") if err != nil { t.Fatal(err) } if len(missing) != 1 || missing[0] != "B" { t.Fatalf("unexpected missing: %#v", missing) } got := string(current.Render()) if !strings.Contains(got, "# Beta help\nB=2") { t.Fatalf("comments/value not imported: %q", got) } } func TestEncodeDecode(t *testing.T) { values := []string{"plain", "contains # hash", "line1\nline2", " leading"} for _, value := range values { if got := DecodeValue(EncodeValue(value)); got != value { t.Fatalf("roundtrip %q -> %q", value, got) } } }