37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
|
|
package filex
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"errors"
|
||
|
|
"os"
|
||
|
|
"path/filepath"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestSplitFilePatternValidation(t *testing.T) {
|
||
|
|
dir := t.TempDir()
|
||
|
|
src := filepath.Join(dir, "src.bin")
|
||
|
|
if err := os.WriteFile(src, bytes.Repeat([]byte{0x7f}, 64), 0o600); err != nil {
|
||
|
|
t.Fatalf("WriteFile failed: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
if err := SplitFile(src, filepath.Join(dir, "part.bin"), 2, true, nil); !errors.Is(err, ErrInvalidSplitPattern) {
|
||
|
|
t.Fatalf("expected ErrInvalidSplitPattern for missing '*', got: %v", err)
|
||
|
|
}
|
||
|
|
if err := SplitFile(src, filepath.Join(dir, "part_*_*.bin"), 2, true, nil); !errors.Is(err, ErrInvalidSplitPattern) {
|
||
|
|
t.Fatalf("expected ErrInvalidSplitPattern for multiple '*', got: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
pattern := filepath.Join(dir, "part_*.bin")
|
||
|
|
if err := SplitFile(src, pattern, 2, true, nil); err != nil {
|
||
|
|
t.Fatalf("SplitFile valid pattern failed: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
if _, err := os.Stat(filepath.Join(dir, "part_0.bin")); err != nil {
|
||
|
|
t.Fatalf("part_0.bin not found: %v", err)
|
||
|
|
}
|
||
|
|
if _, err := os.Stat(filepath.Join(dir, "part_1.bin")); err != nil {
|
||
|
|
t.Fatalf("part_1.bin not found: %v", err)
|
||
|
|
}
|
||
|
|
}
|