fix(02): resolve symlinks before fixture and vars path checks (WR-07)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jakub Zych
2026-09-17 14:44:23 +02:00
parent 0ac9dc45d0
commit f7b81b9dd7
4 changed files with 57 additions and 3 deletions

View File

@@ -686,11 +686,11 @@ func varsOutsideFixtures(varsPath, fixtures string) error {
if varsPath == "" || fixtures == "" {
return nil
}
absVars, err := filepath.Abs(varsPath)
absVars, err := resolvePath(varsPath)
if err != nil {
return fmt.Errorf("tide: vars path: %w", err)
}
absFix, err := filepath.Abs(fixtures)
absFix, err := resolvePath(fixtures)
if err != nil {
return fmt.Errorf("tide: fixtures path: %w", err)
}
@@ -700,6 +700,24 @@ func varsOutsideFixtures(varsPath, fixtures string) error {
return nil
}
func resolvePath(path string) (string, error) {
abs, err := filepath.Abs(path)
if err != nil {
return "", err
}
if eval, err := filepath.EvalSymlinks(abs); err == nil {
return eval, nil
}
parentEval, err := filepath.EvalSymlinks(filepath.Dir(abs))
if err != nil {
if _, statErr := os.Lstat(abs); statErr == nil {
return "", fmt.Errorf("eval symlinks %s: %w", path, err)
}
return filepath.Clean(abs), nil
}
return filepath.Join(parentEval, filepath.Base(abs)), nil
}
func mergeRouteCaptures(step *Step, rules Rules) {
if step == nil || len(step.Capture) > 0 {
return