mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-21 21:01:06 -05:00
Merge remote-tracking branch 'origin/main' into file_system_watcher
This commit is contained in:
@@ -2462,6 +2462,22 @@ export class Cline {
|
||||
details += terminalDetails
|
||||
}
|
||||
|
||||
// Add current time information with timezone
|
||||
const now = new Date()
|
||||
const formatter = new Intl.DateTimeFormat(undefined, {
|
||||
year: 'numeric',
|
||||
month: 'numeric',
|
||||
day: 'numeric',
|
||||
hour: 'numeric',
|
||||
minute: 'numeric',
|
||||
second: 'numeric',
|
||||
hour12: true
|
||||
})
|
||||
const timeZone = formatter.resolvedOptions().timeZone
|
||||
const timeZoneOffset = -now.getTimezoneOffset() / 60 // Convert to hours and invert sign to match conventional notation
|
||||
const timeZoneOffsetStr = `${timeZoneOffset >= 0 ? '+' : ''}${timeZoneOffset}:00`
|
||||
details += `\n\n# Current Time\n${formatter.format(now)} (${timeZone}, UTC${timeZoneOffsetStr})`
|
||||
|
||||
if (includeFileDetails) {
|
||||
details += `\n\n# Current Working Directory (${cwd.toPosix()}) Files\n`
|
||||
const isDesktop = arePathsEqual(cwd, path.join(os.homedir(), "Desktop"))
|
||||
|
||||
@@ -356,4 +356,68 @@ describe('Cline', () => {
|
||||
}).toThrow('Either historyItem or task/images must be provided');
|
||||
});
|
||||
});
|
||||
|
||||
describe('getEnvironmentDetails', () => {
|
||||
let originalDate: DateConstructor;
|
||||
let mockDate: Date;
|
||||
|
||||
beforeEach(() => {
|
||||
originalDate = global.Date;
|
||||
const fixedTime = new Date('2024-01-01T12:00:00Z');
|
||||
mockDate = new Date(fixedTime);
|
||||
mockDate.getTimezoneOffset = jest.fn().mockReturnValue(420); // UTC-7
|
||||
|
||||
class MockDate extends Date {
|
||||
constructor() {
|
||||
super();
|
||||
return mockDate;
|
||||
}
|
||||
static override now() {
|
||||
return mockDate.getTime();
|
||||
}
|
||||
}
|
||||
|
||||
global.Date = MockDate as DateConstructor;
|
||||
|
||||
// Create a proper mock of Intl.DateTimeFormat
|
||||
const mockDateTimeFormat = {
|
||||
resolvedOptions: () => ({
|
||||
timeZone: 'America/Los_Angeles'
|
||||
}),
|
||||
format: () => '1/1/2024, 5:00:00 AM'
|
||||
};
|
||||
|
||||
const MockDateTimeFormat = function(this: any) {
|
||||
return mockDateTimeFormat;
|
||||
} as any;
|
||||
|
||||
MockDateTimeFormat.prototype = mockDateTimeFormat;
|
||||
MockDateTimeFormat.supportedLocalesOf = jest.fn().mockReturnValue(['en-US']);
|
||||
|
||||
global.Intl.DateTimeFormat = MockDateTimeFormat;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
global.Date = originalDate;
|
||||
});
|
||||
|
||||
it('should include timezone information in environment details', async () => {
|
||||
const cline = new Cline(
|
||||
mockProvider,
|
||||
mockApiConfig,
|
||||
undefined,
|
||||
false,
|
||||
undefined,
|
||||
'test task'
|
||||
);
|
||||
|
||||
const details = await cline['getEnvironmentDetails'](false);
|
||||
|
||||
// Verify timezone information is present and formatted correctly
|
||||
expect(details).toContain('America/Los_Angeles');
|
||||
expect(details).toMatch(/UTC-7:00/); // Fixed offset for America/Los_Angeles
|
||||
expect(details).toContain('# Current Time');
|
||||
expect(details).toMatch(/1\/1\/2024.*5:00:00 AM.*\(America\/Los_Angeles, UTC-7:00\)/); // Full time string format
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user