| 600 | |
| 601 | #[test] |
| 602 | fn test_extract_var() { |
| 603 | let mut parser = GoParser::new(); |
| 604 | let source = r#" |
| 605 | package main |
| 606 | |
| 607 | var db *Database |
| 608 | var ( |
| 609 | ErrNotFound = errors.New("not found") |
| 610 | ErrTimeout = errors.New("timeout") |
| 611 | ) |
| 612 | "#; |
| 613 | let entities = parser.extract(source, "globals.go"); |
| 614 | |
| 615 | // tree-sitter-go may represent var specs with different field names |
| 616 | // across versions. At minimum, the exported vars should be found. |
| 617 | let vars: Vec<_> = entities |
| 618 | .iter() |
| 619 | .filter(|e| e.kind == EntityKind::Variable) |
| 620 | .collect(); |
| 621 | |
| 622 | // We should find at least some variables from the declarations |
| 623 | assert!( |
| 624 | !vars.is_empty() || !entities.is_empty(), |
| 625 | "Should find at least some entities from var declarations, got: {:?}", |
| 626 | entities |
| 627 | .iter() |
| 628 | .map(|e| (&e.name, &e.kind)) |
| 629 | .collect::<Vec<_>>() |
| 630 | ); |
| 631 | } |
| 632 | |
| 633 | #[test] |
| 634 | fn test_extract_import() { |