- Implemented a new tool `stella-callgraph-node` that extracts call graphs from JavaScript/TypeScript projects using Babel AST. - Added command-line interface with options for JSON output and help. - Included functionality to analyze project structure, detect functions, and build call graphs. - Created a package.json file for dependency management. feat: introduce stella-callgraph-python for Python call graph extraction - Developed `stella-callgraph-python` to extract call graphs from Python projects using AST analysis. - Implemented command-line interface with options for JSON output and verbose logging. - Added framework detection to identify popular web frameworks and their entry points. - Created an AST analyzer to traverse Python code and extract function definitions and calls. - Included requirements.txt for project dependencies. chore: add framework detection for Python projects - Implemented framework detection logic to identify frameworks like Flask, FastAPI, Django, and others based on project files and import patterns. - Enhanced the AST analyzer to recognize entry points based on decorators and function definitions.
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"testing"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
)
|
|
|
|
func setupTestDB(t *testing.T) *sql.DB {
|
|
db, err := sql.Open("sqlite3", ":memory:")
|
|
if err != nil {
|
|
t.Fatalf("failed to open database: %v", err)
|
|
}
|
|
|
|
_, err = db.Exec(`
|
|
CREATE TABLE users (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT,
|
|
email TEXT
|
|
);
|
|
INSERT INTO users (id, name, email) VALUES ('1', 'Alice', 'alice@example.com');
|
|
`)
|
|
if err != nil {
|
|
t.Fatalf("failed to setup test data: %v", err)
|
|
}
|
|
|
|
return db
|
|
}
|
|
|
|
func TestGetUserSafe(t *testing.T) {
|
|
db := setupTestDB(t)
|
|
defer db.Close()
|
|
|
|
server := &userServer{db: db}
|
|
user, err := server.GetUserSafe(context.Background(), "1")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
|
|
if user.Name != "Alice" {
|
|
t.Errorf("expected Alice, got %s", user.Name)
|
|
}
|
|
}
|
|
|
|
func TestGetUserNotFound(t *testing.T) {
|
|
db := setupTestDB(t)
|
|
defer db.Close()
|
|
|
|
server := &userServer{db: db}
|
|
_, err := server.GetUserSafe(context.Background(), "999")
|
|
if err == nil {
|
|
t.Error("expected error for non-existent user")
|
|
}
|
|
}
|