mirror of
https://github.com/cheat/cheat.git
synced 2026-03-07 11:13:33 +01:00
Bug fixes: - Fix inverted pager detection logic (returned error instead of path) - Fix repo.Clone ignoring destination directory parameter - Fix sheet loading using append on pre-sized slices - Clean up partial files on copy failure - Trim whitespace from editor config Security: - Add path traversal protection for cheatsheet names Performance: - Move regex compilation outside search loop - Replace string concatenation with strings.Join in search Build: - Remove go:generate; embed config and usage as string literals - Parallelize release builds - Add fuzz testing infrastructure Testing: - Improve test coverage from 38.9% to 50.2% - Add fuzz tests for search, filter, tags, and validation Documentation: - Fix inaccurate code examples in HACKING.md - Add missing --conf and --all options to man page - Add ADRs for path traversal, env parsing, and search parallelization - Update CONTRIBUTING.md to reflect project policy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package sheet
|
|
|
|
import (
|
|
"runtime"
|
|
"testing"
|
|
)
|
|
|
|
// TestParseWindowsLineEndings tests parsing with Windows line endings
|
|
func TestParseWindowsLineEndings(t *testing.T) {
|
|
// Only test Windows line endings on Windows
|
|
if runtime.GOOS != "windows" {
|
|
t.Skip("Skipping Windows line ending test on non-Windows platform")
|
|
}
|
|
|
|
// stub our cheatsheet content with Windows line endings
|
|
markdown := "---\r\nsyntax: go\r\ntags: [ test ]\r\n---\r\nTo foo the bar: baz"
|
|
|
|
// parse the frontmatter
|
|
fm, text, err := parse(markdown)
|
|
|
|
// assert expectations
|
|
if err != nil {
|
|
t.Errorf("failed to parse markdown: %v", err)
|
|
}
|
|
|
|
want := "To foo the bar: baz"
|
|
if text != want {
|
|
t.Errorf("failed to parse text: want: %s, got: %s", want, text)
|
|
}
|
|
|
|
want = "go"
|
|
if fm.Syntax != want {
|
|
t.Errorf("failed to parse syntax: want: %s, got: %s", want, fm.Syntax)
|
|
}
|
|
}
|
|
|
|
// TestParseInvalidYAML tests parsing with invalid YAML in frontmatter
|
|
func TestParseInvalidYAML(t *testing.T) {
|
|
// stub our cheatsheet content with invalid YAML
|
|
markdown := `---
|
|
syntax: go
|
|
tags: [ test
|
|
unclosed bracket
|
|
---
|
|
To foo the bar: baz`
|
|
|
|
// parse the frontmatter
|
|
_, _, err := parse(markdown)
|
|
|
|
// assert that an error was returned for invalid YAML
|
|
if err == nil {
|
|
t.Error("expected error for invalid YAML, got nil")
|
|
}
|
|
}
|