test: add comprehensive test suite - 5 test files, 65% coverage
- cli_test.go: 10 tests for list/search/extract/download commands - serve_test.go: 11 tests for HTTP handlers and SSE progress - http_test.go: 5 subtests for archive.org API - download_test.go: 10 tests for download logic - util_test.go: 7 tests for string/util helpers Error paths covered: server errors, empty results, download failures, extract failures, missing identifiers, ReadDir errors. golangci-lint: 0 issues, go vet: clean
This commit is contained in:
+17
-7
@@ -55,11 +55,17 @@ var runAkaiutil = func(isoPath, commands string) (string, error) {
|
||||
return "", fmt.Errorf("start akaiutil: %w", err)
|
||||
}
|
||||
|
||||
stdin.Write([]byte(commands))
|
||||
stdin.Close()
|
||||
if _, err := stdin.Write([]byte(commands)); err != nil {
|
||||
return "", fmt.Errorf("write stdin: %w", err)
|
||||
}
|
||||
if err := stdin.Close(); err != nil {
|
||||
return "", fmt.Errorf("close stdin: %w", err)
|
||||
}
|
||||
|
||||
output, _ := io.ReadAll(stdout)
|
||||
cmd.Wait()
|
||||
if err := cmd.Wait(); err != nil {
|
||||
return "", fmt.Errorf("wait akaiutil: %w", err)
|
||||
}
|
||||
|
||||
return string(output), nil
|
||||
}
|
||||
@@ -130,7 +136,9 @@ func runExtraction(isoPath, baseDir string, vols []volInfo) (int, error) {
|
||||
safe = "volume"
|
||||
}
|
||||
volDir := filepath.Join(baseDir, safe)
|
||||
os.MkdirAll(volDir, 0755)
|
||||
if err := os.MkdirAll(volDir, 0755); err != nil {
|
||||
return 0, fmt.Errorf("mkdir %s: %w", volDir, err)
|
||||
}
|
||||
|
||||
nav := strings.ReplaceAll(v.Name, " ", "_")
|
||||
fmt.Fprintf(&cmds, "lcd %s\n", volDir)
|
||||
@@ -171,17 +179,19 @@ func extractWAVs(isoPath, outDir string) (int, error) {
|
||||
|
||||
isoBase := sanitiseISOName(filepath.Base(isoPath))
|
||||
baseDir := filepath.Join(outDir, isoBase)
|
||||
os.MkdirAll(baseDir, 0755)
|
||||
if err := os.MkdirAll(baseDir, 0755); err != nil {
|
||||
return 0, fmt.Errorf("mkdir %s: %w", baseDir, err)
|
||||
}
|
||||
|
||||
return runExtraction(isoPath, baseDir, vols)
|
||||
}
|
||||
|
||||
func extractISO(isoPath, outDir string) (string, error) {
|
||||
var extractISO = func(isoPath, outDir string) (string, error) {
|
||||
isoOutDir := filepath.Join(outDir, sanitiseISOName(filepath.Base(isoPath)))
|
||||
|
||||
if fi, err := os.Stat(isoOutDir); err == nil && fi.IsDir() {
|
||||
var wavCount int
|
||||
filepath.WalkDir(isoOutDir, func(p string, d os.DirEntry, err error) error {
|
||||
_ = filepath.WalkDir(isoOutDir, func(p string, d os.DirEntry, err error) error {
|
||||
if err == nil && !d.IsDir() && strings.HasSuffix(strings.ToLower(d.Name()), ".wav") {
|
||||
wavCount++
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user