Remove learnings.md. (#1172)
This commit is contained in:
parent
63fbc8ce18
commit
3e49206935
113
learnings.md
113
learnings.md
|
@ -1,113 +0,0 @@
|
||||||
# PR #651 Test Failures - Investigation and Fixes
|
|
||||||
|
|
||||||
## Summary
|
|
||||||
|
|
||||||
Fixed test failures in PR #651 "Ignore folders files" that were preventing CI from passing. All tests now pass successfully.
|
|
||||||
|
|
||||||
## Issues Found and Fixed
|
|
||||||
|
|
||||||
### 1. ShellTool Constructor URL Error (9 test failures)
|
|
||||||
|
|
||||||
**Problem**:
|
|
||||||
|
|
||||||
- Tests in `src/config/config.integration.test.ts` were failing with "The URL must be of scheme file" error
|
|
||||||
- Error occurred at line 39 in `packages/core/src/tools/shell.ts`
|
|
||||||
- The ShellTool constructor was trying to create URLs using `import.meta.url` which is not a valid file URL in test environments
|
|
||||||
|
|
||||||
**Root Cause**:
|
|
||||||
|
|
||||||
- The original code directly called `new URL('shell.md', import.meta.url)` without error handling
|
|
||||||
- In test environments, `import.meta.url` may not be a proper file:// URL
|
|
||||||
- There were incomplete changes already in the file attempting to fix this, but the fix was flawed
|
|
||||||
|
|
||||||
**Solution**:
|
|
||||||
|
|
||||||
- Added proper try-catch error handling around URL creation and file reading
|
|
||||||
- Created fallback schema and description for test environments
|
|
||||||
- Moved URL creation inside the try block to be properly caught
|
|
||||||
- Fixed linting error by changing `any` type to `object` for `toolParameterSchema`
|
|
||||||
|
|
||||||
**Files Changed**:
|
|
||||||
|
|
||||||
- `packages/core/src/tools/shell.ts`
|
|
||||||
|
|
||||||
### 2. atCommandProcessor Test Parameter Mismatch (1 test failure)
|
|
||||||
|
|
||||||
**Problem**:
|
|
||||||
|
|
||||||
- Test "should process a file path case-insensitively" in `atCommandProcessor.test.ts` was failing
|
|
||||||
- Expected tool call with `{ paths: [queryPath] }` but actual call included `respectGitIgnore: true` parameter
|
|
||||||
|
|
||||||
**Root Cause**:
|
|
||||||
|
|
||||||
- The implementation was updated to include `respectGitIgnore` parameter as part of the file filtering functionality
|
|
||||||
- The test expectation wasn't updated to match the new implementation
|
|
||||||
- This is a legitimate behavior change - the atCommandProcessor now passes git ignore settings to tools
|
|
||||||
|
|
||||||
**Solution**:
|
|
||||||
|
|
||||||
- Updated test expectation to include `respectGitIgnore: true` parameter
|
|
||||||
- This aligns the test with the actual implementation behavior
|
|
||||||
|
|
||||||
**Files Changed**:
|
|
||||||
|
|
||||||
- `packages/cli/src/ui/hooks/atCommandProcessor.test.ts`
|
|
||||||
|
|
||||||
## Implementation Details
|
|
||||||
|
|
||||||
### ShellTool Fix
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
// Before (failing)
|
|
||||||
const descriptionUrl = new URL('shell.md', import.meta.url);
|
|
||||||
const toolDescription = fs.readFileSync(descriptionUrl, 'utf-8');
|
|
||||||
|
|
||||||
// After (working)
|
|
||||||
try {
|
|
||||||
const descriptionUrl = new URL('shell.md', import.meta.url);
|
|
||||||
toolDescription = fs.readFileSync(descriptionUrl, 'utf-8');
|
|
||||||
// ... similar for schema
|
|
||||||
} catch {
|
|
||||||
// Fallback for test environments
|
|
||||||
toolDescription = 'Execute shell commands';
|
|
||||||
toolParameterSchema = {
|
|
||||||
/* minimal schema */
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### atCommandProcessor Test Fix
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
// Before (failing)
|
|
||||||
expect(mockReadManyFilesExecute).toHaveBeenCalledWith(
|
|
||||||
{ paths: [queryPath] },
|
|
||||||
abortController.signal,
|
|
||||||
);
|
|
||||||
|
|
||||||
// After (working)
|
|
||||||
expect(mockReadManyFilesExecute).toHaveBeenCalledWith(
|
|
||||||
{ paths: [queryPath], respectGitIgnore: true },
|
|
||||||
abortController.signal,
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
## Verification
|
|
||||||
|
|
||||||
- All tests now pass locally
|
|
||||||
- Fixed linting errors (removed `any` type usage)
|
|
||||||
- Code properly formatted with Prettier
|
|
||||||
- Committed changes and pushed to remote
|
|
||||||
|
|
||||||
## Key Learnings
|
|
||||||
|
|
||||||
1. **Test Environment Differences**: Test environments may have different behavior for ES modules and `import.meta.url`
|
|
||||||
2. **Feature Integration**: When adding new features (like file filtering), all related tests need to be updated to match new parameter expectations
|
|
||||||
3. **Error Handling**: Always add proper fallbacks for file system operations that might fail in different environments
|
|
||||||
4. **Incremental Development**: Incomplete fixes can sometimes make problems worse - it's important to complete the error handling logic properly
|
|
||||||
|
|
||||||
## Next Steps
|
|
||||||
|
|
||||||
- Monitor CI to ensure tests continue passing
|
|
||||||
- Consider if any other tools might have similar `import.meta.url` issues
|
|
||||||
- Verify that the file filtering functionality works as expected in real usage
|
|
Loading…
Reference in New Issue