mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-03 09:50:40 -07:00
78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2026 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { describe, expect } from 'vitest';
|
|
import { evalTest } from './test-helper.js';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
describe('Background Process Monitoring', () => {
|
|
evalTest('USUALLY_PASSES', {
|
|
name: 'should naturally use read output tool to find token',
|
|
prompt:
|
|
"Run the script using 'bash generate_token.sh'. It will emit a token after a short delay and continue running. Find the token and tell me what it is.",
|
|
files: {
|
|
'generate_token.sh': `#!/bin/bash
|
|
sleep 2
|
|
echo "TOKEN=xyz123"
|
|
sleep 100
|
|
`,
|
|
},
|
|
setup: async (rig) => {
|
|
// Create .gemini directory to avoid file system error in test rig
|
|
if (rig.homeDir) {
|
|
const geminiDir = path.join(rig.homeDir, '.gemini');
|
|
fs.mkdirSync(geminiDir, { recursive: true });
|
|
}
|
|
},
|
|
assert: async (rig, result) => {
|
|
const toolCalls = rig.readToolLogs();
|
|
|
|
// Check if read_background_output was called
|
|
const hasReadCall = toolCalls.some(
|
|
(call) => call.toolRequest.name === 'read_background_output',
|
|
);
|
|
|
|
expect(
|
|
hasReadCall,
|
|
'Expected agent to call read_background_output to find the token',
|
|
).toBe(true);
|
|
|
|
// Verify that the agent found the correct token
|
|
expect(
|
|
result.includes('xyz123'),
|
|
`Expected agent to find the token xyz123. Agent output: ${result}`,
|
|
).toBe(true);
|
|
},
|
|
});
|
|
|
|
evalTest('USUALLY_PASSES', {
|
|
name: 'should naturally use list tool to verify multiple processes',
|
|
prompt:
|
|
"Start three background processes that run 'sleep 100', 'sleep 200', and 'sleep 300' respectively. Verify that all three are currently running.",
|
|
setup: async (rig) => {
|
|
// Create .gemini directory to avoid file system error in test rig
|
|
if (rig.homeDir) {
|
|
const geminiDir = path.join(rig.homeDir, '.gemini');
|
|
fs.mkdirSync(geminiDir, { recursive: true });
|
|
}
|
|
},
|
|
assert: async (rig, result) => {
|
|
const toolCalls = rig.readToolLogs();
|
|
|
|
// Check if list_background_processes was called
|
|
const hasListCall = toolCalls.some(
|
|
(call) => call.toolRequest.name === 'list_background_processes',
|
|
);
|
|
|
|
expect(
|
|
hasListCall,
|
|
'Expected agent to call list_background_processes',
|
|
).toBe(true);
|
|
},
|
|
});
|
|
});
|