Skip to content

טסטים כותבים את data/ לשורש הריפו — remediation_manager ו-predictive_engine כותבים לנתיב יחסי ל-cwd #3509

Description

@amirbiron

עלה בעבודה על PR #3502: הסוללה המלאה השאירה את data/ בשורש הריפו. מחוץ לתחום שלו, ולכן לא תוקן שם.

מה נבדק (main, 928addc)

  • remediation_manager.py#L72-L73: _DATA_DIR = os.path.join("data"), נתיב יחסי לתיקייה שהתהליך רץ ממנה. _write_incident (#L98-L104) מוסיף שורה ל-data/incidents_log.json.
  • predictive_engine.py#L73-L75: אותו דבר ל-data/predictions_log.json (הכתיבה ב-#L343).
  • monitoring/cleanup.py#L19-L21: עותק שלישי של אותו נתיב, Path("data").
  • .gitignore#L23-L24: שני הקבצים מוחרגים מגיט. כלומר התסמין הוסתר, והשורש נשאר.
  • רק שלושה קבצי טסט מפנים את הנתיבים לתיקייה זמנית: test_predictive_engine.py, test_cleanup_module.py, test_predictions_cleanup_and_feedback.py.
  • נמדד (30.09), כל קובץ לבד בעותק נקי של הריפו: tests/test_predictive_actions.py יוצר את data/predictions_log.json בשורש. תשעת קבצי הטסט האחרים שמייבאים את המודולים האלה לא יצרו קבצים כשרצו לבד.

למה זה חשוב

  • CLAUDE.md: "כל קלט/פלט בטסטים ב-tmp_path. לא כותבים ולא מוחקים בשורש הפרויקט".
  • הקבצים מצטברים בין הרצות (JSONL שנפתח ב-"a"), ולכן טסט שקורא אותם יכול לראות נתונים מהרצה קודמת. זו תלות בסדר ובהיסטוריה.
  • בייצור, מיקום הקבצים תלוי בתיקייה שממנה השירות עלה.

כיוון לתיקון (לא החלטה — לדיון)

  1. מקור אחד לתיקיית הנתונים (היום יש שלושה עותקים, R6), שנקרא בזמן הכתיבה ולא בזמן import, עם ברירת מחדל שאינה תלויה ב-cwd.
  2. פיקסצ'ר autouse ב-tests/conftest.py שמפנה אותה ל-tmp_path בכל טסט. אז שלוש ההפניות הנקודתיות מיותרות.
  3. לשקול להסיר אחר כך את שתי השורות מ-.gitignore, כדי שקובץ שיופיע שוב ייראה ב-git status.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions