@@ -21,7 +21,7 @@ func TestWriteMarkdown(t *testing.T) {
2121 }
2222
2323 var output bytes.Buffer
24- err = WriteMarkdown (inputFile , & output , "go" , 100 * 1024 * 1024 )
24+ err = WriteMarkdown (inputFile , inputFile , & output , "go" , 100 * 1024 * 1024 )
2525 if err != nil {
2626 t .Errorf ("WriteMarkdown() error: %v" , err )
2727 }
@@ -53,7 +53,7 @@ func TestWriteMarkdown(t *testing.T) {
5353 }
5454
5555 var output bytes.Buffer
56- err = WriteMarkdown (inputFile , & output , "md" , 100 * 1024 * 1024 )
56+ err = WriteMarkdown (inputFile , inputFile , & output , "md" , 100 * 1024 * 1024 )
5757 if err != nil {
5858 t .Errorf ("WriteMarkdown() error: %v" , err )
5959 }
@@ -82,7 +82,7 @@ func TestWriteMarkdown(t *testing.T) {
8282 }
8383
8484 var output bytes.Buffer
85- err = WriteMarkdown (inputFile , & output , "go" , 100 )
85+ err = WriteMarkdown (inputFile , inputFile , & output , "go" , 100 )
8686 if err != nil {
8787 t .Errorf ("WriteMarkdown() should not error for large files: %v" , err )
8888 }
@@ -92,9 +92,57 @@ func TestWriteMarkdown(t *testing.T) {
9292 }
9393 })
9494
95+ t .Run ("adds newline before closing fence when file lacks trailing newline" , func (t * testing.T ) {
96+ tempDir := t .TempDir ()
97+ inputFile := filepath .Join (tempDir , "test.go" )
98+
99+ err := os .WriteFile (inputFile , []byte ("package main" ), 0644 )
100+ if err != nil {
101+ t .Fatalf ("Failed to create input file: %v" , err )
102+ }
103+
104+ var output bytes.Buffer
105+ err = WriteMarkdown (inputFile , inputFile , & output , "go" , 100 * 1024 * 1024 )
106+ if err != nil {
107+ t .Errorf ("WriteMarkdown() error: %v" , err )
108+ }
109+
110+ contentStr := output .String ()
111+ if strings .Contains (contentStr , "main```" ) {
112+ t .Error ("Closing fence should not be on the same line as code" )
113+ }
114+ if ! strings .Contains (contentStr , "main\n ```" ) {
115+ t .Error ("Closing fence should be on its own line" )
116+ }
117+ })
118+
119+ t .Run ("uses display path in header" , func (t * testing.T ) {
120+ tempDir := t .TempDir ()
121+ inputFile := filepath .Join (tempDir , "test.go" )
122+
123+ err := os .WriteFile (inputFile , []byte ("package main\n " ), 0644 )
124+ if err != nil {
125+ t .Fatalf ("Failed to create input file: %v" , err )
126+ }
127+
128+ var output bytes.Buffer
129+ err = WriteMarkdown (inputFile , "test.go" , & output , "go" , 100 * 1024 * 1024 )
130+ if err != nil {
131+ t .Errorf ("WriteMarkdown() error: %v" , err )
132+ }
133+
134+ contentStr := output .String ()
135+ if ! strings .HasPrefix (contentStr , "# test.go\n " ) {
136+ t .Errorf ("Header should use display path, got: %s" , contentStr [:40 ])
137+ }
138+ if strings .Contains (contentStr , "# " + tempDir ) {
139+ t .Error ("Header should not contain absolute path" )
140+ }
141+ })
142+
95143 t .Run ("handles non-existent file" , func (t * testing.T ) {
96144 var output bytes.Buffer
97- err := WriteMarkdown ("/tmp/nonexistent/file.go" , & output , "go" , 100 * 1024 * 1024 )
145+ err := WriteMarkdown ("/tmp/nonexistent/file.go" , "file.go" , & output , "go" , 100 * 1024 * 1024 )
98146 if err == nil {
99147 t .Error ("WriteMarkdown() should error for non-existent file" )
100148 }
0 commit comments