@agentics.org/sparc2
Version:
SPARC 2.0 - Autonomous Vector Coding Agent + MCP. SPARC 2.0, vectorized AI code analysis, is an intelligent coding agent framework built to automate and streamline software development. It combines secure execution environments, and version control into a
131 lines (113 loc) • 4 kB
text/typescript
/**
* E2B Code Interpreter Tests
*
* This file contains tests for the E2B Code Interpreter implementation.
*/
import { assertEquals, assertExists } from "https://deno.land/std/testing/asserts.ts";
import {
createSandbox,
executeCode,
installPackages,
listFiles,
readFile,
writeFile,
} from "./codeInterpreter.ts";
// Skip tests if E2B_API_KEY is not set
const apiKey = Deno.env.get("E2B_API_KEY");
const runTests = apiKey !== undefined;
if (!runTests) {
console.warn("Skipping E2B tests: E2B_API_KEY environment variable is not set");
}
Deno.test({
name: "E2B Code Interpreter - File Operations",
ignore: !runTests,
async fn() {
// Create a single sandbox for all file operations
const sandbox = await createSandbox();
try {
// Test writing a file
const testContent = "Hello, E2B!\nThis is a test file.";
await writeFile("/tmp/test.txt", testContent, {}, sandbox);
// Test reading the file
const content = await readFile("/tmp/test.txt", {}, sandbox);
assertEquals(content, testContent, "File content should match what was written");
// Test listing files
const files = await listFiles("/tmp", {}, sandbox);
assertExists(
files.find((file) => file === "test.txt"),
"test.txt should be in the list of files",
);
} finally {
// Clean up
await sandbox.kill?.();
}
},
sanitizeResources: false,
sanitizeOps: false,
});
Deno.test({
name: "E2B Code Interpreter - Python Execution",
ignore: !runTests,
async fn() {
// Test Python code execution
const pythonCode = `
x = 10
y = 20
print("Hello from Python!")
print(f"x + y = {x + y}")
`;
const result = await executeCode(pythonCode, { language: "python" });
assertEquals(result.error, null, "Python execution should not have errors");
// Check that the output contains the expected text
const output = result.logs.stdout.join("\n");
assertEquals(output.includes("Hello from Python!"), true, "Output should contain greeting");
assertEquals(output.includes("x + y = 30"), true, "Output should contain calculation result");
},
sanitizeResources: false,
sanitizeOps: false,
});
Deno.test({
name: "E2B Code Interpreter - JavaScript Execution",
ignore: !runTests,
async fn() {
// Test JavaScript code execution
const jsCode = `
const x = 10;
const y = 20;
console.log("Hello from JavaScript!");
console.log(\`x + y = \${x + y}\`);
`;
const result = await executeCode(jsCode, { language: "javascript" });
assertEquals(result.error, null, "JavaScript execution should not have errors");
// Check that the output contains the expected text
const output = result.logs.stdout.join("\n");
assertEquals(output.includes("Hello from JavaScript!"), true, "Output should contain greeting");
assertEquals(output.includes("x + y = 30"), true, "Output should contain calculation result");
},
sanitizeResources: false,
sanitizeOps: false,
});
Deno.test({
name: "E2B Code Interpreter - Package Installation",
ignore: !runTests,
async fn() {
// Test package installation
const result = await installPackages(["numpy"], "python");
assertEquals(result.error, null, "Package installation should not have errors");
// Test using the installed package
const pythonCode = `
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(f"NumPy array: {arr}")
print(f"Mean: {np.mean(arr)}")
`;
const execResult = await executeCode(pythonCode, { language: "python" });
assertEquals(execResult.error, null, "Python execution with NumPy should not have errors");
// Check that the output contains the expected text
const output = execResult.logs.stdout.join("\n");
assertEquals(output.includes("NumPy array:"), true, "Output should contain NumPy array");
assertEquals(output.includes("Mean:"), true, "Output should contain mean calculation");
},
sanitizeResources: false,
sanitizeOps: false,
});