Something went wrong. Try again.
An alternative CLI for git-bug that simplifies working with agents on issues
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151package main
import ( "testing")
func TestParseEditContent_IssueFormat(t *testing.T) { tests := []struct { name string content string wantTitle string wantMessage string wantErr bool }{ { name: "simple title and message", content: "Title\n\nMessage body", wantTitle: "Title", wantMessage: "\nMessage body", wantErr: false, }, { name: "title with comment lines", content: ";; comment\nTitle\n\nMessage", wantTitle: "Title", wantMessage: "Message", wantErr: false, }, { name: "multiline message", content: "Title\n\nLine 1\nLine 2\nLine 3", wantTitle: "Title", wantMessage: "\nLine 1\nLine 2\nLine 3", wantErr: false, }, { name: "title only no message", content: "Title", wantTitle: "Title", wantMessage: "", wantErr: false, }, { name: "empty content", content: "", wantTitle: "", wantMessage: "", wantErr: true, }, { name: "only comment lines", content: ";; comment 1\n;; comment 2", wantTitle: "", wantMessage: "", wantErr: true, }, { name: "title with leading/trailing whitespace in lines", content: " Title \n\n Line 1 \n Line 2 ", wantTitle: "Title", wantMessage: "\n Line 1 \n Line 2 ", wantErr: false, }, }
for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotTitle, gotMessage, err := parseEditContent(tt.content, false) if (err != nil) != tt.wantErr { t.Errorf("parseEditContent() error = %v, wantErr %v", err, tt.wantErr) return } if gotTitle != tt.wantTitle { t.Errorf("parseEditContent() title = %q, want %q", gotTitle, tt.wantTitle) } if gotMessage != tt.wantMessage { t.Errorf("parseEditContent() message = %q, want %q", gotMessage, tt.wantMessage) } }) }}
func TestParseEditContent_CommentFormat(t *testing.T) { tests := []struct { name string content string wantTitle string wantMessage string wantErr bool }{ { name: "simple comment", content: "Comment text", wantTitle: "", wantMessage: "Comment text", wantErr: false, }, { name: "multiline comment", content: "Line 1\nLine 2\nLine 3", wantTitle: "", wantMessage: "Line 1\nLine 2\nLine 3", wantErr: false, }, { name: "comment with instruction lines", content: ";; instruction\nComment text", wantTitle: "", wantMessage: "Comment text", wantErr: false, }, { name: "empty content", content: "", wantTitle: "", wantMessage: "", wantErr: true, }, { name: "only whitespace", content: " \n ", wantTitle: "", wantMessage: "", wantErr: true, }, { name: "only comment lines", content: ";; comment 1\n;; comment 2", wantTitle: "", wantMessage: "", wantErr: true, }, }
for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotTitle, gotMessage, err := parseEditContent(tt.content, true) if (err != nil) != tt.wantErr { t.Errorf("parseEditContent() error = %v, wantErr %v", err, tt.wantErr) return } if gotTitle != tt.wantTitle { t.Errorf("parseEditContent() title = %q, want %q", gotTitle, tt.wantTitle) } if gotMessage != tt.wantMessage { t.Errorf("parseEditContent() message = %q, want %q", gotMessage, tt.wantMessage) } }) }}