fix(02): resolve symlinks before fixture and vars path checks (WR-07)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user