Commit Graph

8 Commits

  • test: add 15 tests for session-manager and session-aliases edge cases
    Cover 30-day month validation (Sep/Nov 31 rejection), getSessionStats
    path heuristic with multiline content, combined date+search+pagination
    in getAllSessions, ambiguous prefix matching in getSessionById, unclosed
    code fence in parseSessionMetadata, empty checklist item behavior,
    reserved name case sensitivity (LIST/Help/Set), negative limit in
    listAliases, and undefined title in setAlias.
  • fix: clamp getAllSessions pagination params, add cleanupAliases success field, add 10 tests
    - session-manager: clamp offset/limit to safe non-negative integers to
      prevent negative offset counting from end and NaN returning empty results
    - session-aliases: add success field to cleanupAliases return value for
      API contract consistency with setAlias/deleteAlias/renameAlias
  • fix: greedy regex in validate-commands captures all refs per line, add 18 tests
    The command cross-reference regex /^.*`\/(...)`.*$/gm only captured the
    LAST command ref per line due to greedy .* consuming earlier refs.
    Replaced with line-by-line processing using non-anchored regex to
    capture ALL command references.
    
    New tests:
    - 4 validate-commands multi-ref-per-line tests (regression)
    - 8 evaluate-session threshold boundary tests (new file)
    - 6 session-aliases edge case tests (cleanup, rename, path matching)
  • test: add tsconfig depth limit and cleanupAliases exception tests
    - post-edit-typecheck: verify 25-level-deep directory completes without
      hanging (tests the max depth=20 walk-up guard)
    - cleanupAliases: document behavior when sessionExists callback throws
      (propagates to caller, which is acceptable)
  • fix: add missing validation in renameAlias, add 6 tests
    renameAlias was missing length (>128), reserved name, and empty string
    validation that setAlias enforced. This inconsistency allowed renaming
    aliases to reserved names like 'list' or 'delete'.
    
    Also adds tests for:
    - renameAlias empty string, reserved name, and length limit
    - validate-skills whitespace-only SKILL.md rejection
    - validate-rules whitespace-only file and recursive subdirectory scan
  • fix: set USERPROFILE in tests for Windows os.homedir() compatibility
    On Windows, os.homedir() uses USERPROFILE env var instead of HOME.
    Tests that override HOME to a temp dir must also set USERPROFILE for
    the session-manager, session-aliases, and session-start hook tests
    to find files in the correct directory.
  • test: add 33 edge case tests for session-manager, session-aliases, and hooks
    - session-manager: CRLF handling, empty sections, multi-heading title, context
      extraction, notes/context detection, MB file size, uppercase ID rejection
    - session-aliases: missing timestamps sort, title search, createdAt preservation,
      whitespace-only path rejection, empty string title behavior
    - hooks: session-start isolated HOME, template vs real session injection,
      learned skills count, check-console-log passthrough
    
    Total test count: 261 → 294
  • fix: 6 bugs fixed, 67 tests added for session-manager and session-aliases
    Bug fixes:
    - utils.js: prevent duplicate 'g' flag in countInFile regex construction
    - validate-agents.js: handle CRLF line endings in frontmatter parsing
    - validate-hooks.js: handle \t and \\ escape sequences in inline JS validation
    - session-aliases.js: prevent NaN in date sort when timestamps are missing
    - session-aliases.js: persist rollback on rename failure instead of silent loss
    - session-manager.js: require absolute paths in getSessionStats to prevent
      content strings ending with .tmp from being treated as file paths
    
    New tests (164 total, up from 97):
    - session-manager.test.js: 27 tests covering parseSessionFilename,
      parseSessionMetadata, getSessionStats, CRUD operations, getSessionSize,
      getSessionTitle, edge cases (null input, non-existent files, directories)
    - session-aliases.test.js: 40 tests covering loadAliases (corrupted JSON,
      invalid structure), setAlias (validation, reserved names), resolveAlias,
      listAliases (sort, search, limit), deleteAlias, renameAlias, updateAliasTitle,
      resolveSessionAlias, getAliasesForSession, cleanupAliases, atomic write
    
    Also includes hook-generated improvements:
    - utils.d.ts: document that readStdinJson never rejects
    - session-aliases.d.ts: fix updateAliasTitle type to accept null
    - package-manager.js: add try-catch to setProjectPackageManager writeFile