Skip to content

Commit 4c963f8

Browse files
authored
Merge pull request #12 from go-clang/46-finish-compdb
Finish go-clang-compdb
2 parents 999ec98 + 9287730 commit 4c963f8

File tree

4 files changed

+46
-17
lines changed

4 files changed

+46
-17
lines changed

cmd/go-clang-compdb/main.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,25 @@ import (
1111
)
1212

1313
func main() {
14-
if len(os.Args) <= 1 {
14+
os.Exit(cmd(os.Args[1:]))
15+
}
16+
17+
func cmd(args []string) int {
18+
if len(args) == 0 {
1519
fmt.Printf("**error: you need to give a directory containing a 'compile_commands.json' file\n")
1620

17-
os.Exit(1)
21+
return 1
1822
}
1923

20-
dir := os.ExpandEnv(os.Args[1])
24+
dir := os.ExpandEnv(args[0])
2125
fmt.Printf(":: inspecting [%s]...\n", dir)
2226

2327
fname := filepath.Join(dir, "compile_commands.json")
2428
f, err := os.Open(fname)
2529
if err != nil {
2630
fmt.Printf("**error: could not open file [%s]: %v\n", fname, err)
2731

28-
os.Exit(1)
32+
return 1
2933
}
3034
f.Close()
3135

@@ -68,4 +72,6 @@ func main() {
6872
}
6973
}
7074
fmt.Printf(":: inspecting [%s]... [done]\n", dir)
75+
76+
return 0
7177
}

cmd/go-clang-compdb/main_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
func TestGoClangCompDB(t *testing.T) {
10+
for _, path := range []string{
11+
"../../testdata",
12+
} {
13+
assert.Equal(t, 0, cmd([]string{path}))
14+
}
15+
}

cmd/go-clang-dump/main.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,37 @@ import (
1616
var fname = flag.String("fname", "", "the file to analyze")
1717

1818
func main() {
19+
os.Exit(cmd(os.Args[1:]))
20+
}
21+
22+
func cmd(args []string) int {
1923
fmt.Printf(":: go-clang-dump...\n")
20-
flag.Parse()
24+
if err := flag.CommandLine.Parse(args); err != nil {
25+
fmt.Printf("ERROR: %s", err)
26+
27+
return 1
28+
}
29+
2130
fmt.Printf(":: fname: %s\n", *fname)
2231
fmt.Printf(":: args: %v\n", flag.Args())
2332

2433
if *fname == "" {
2534
flag.Usage()
2635
fmt.Printf("please provide a file name to analyze\n")
2736

28-
os.Exit(1)
37+
return 1
2938
}
3039

3140
idx := clang.NewIndex(0, 1)
3241
defer idx.Dispose()
3342

34-
args := []string{}
43+
tuArgs := []string{}
3544
if len(flag.Args()) > 0 && flag.Args()[0] == "-" {
36-
args = make([]string, len(flag.Args()[1:]))
37-
copy(args, flag.Args()[1:])
45+
tuArgs = make([]string, len(flag.Args()[1:]))
46+
copy(tuArgs, flag.Args()[1:])
3847
}
3948

40-
tu := idx.ParseTranslationUnit(*fname, args, nil, 0)
49+
tu := idx.ParseTranslationUnit(*fname, tuArgs, nil, 0)
4150
defer tu.Dispose()
4251

4352
fmt.Printf("tu: %s\n", tu.Spelling())
@@ -76,4 +85,6 @@ func main() {
7685
}
7786

7887
fmt.Printf(":: bye.\n")
88+
89+
return 0
7990
}

cmd/go-clang-dump/main_test.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
1-
package main_test
1+
package main
22

33
import (
4-
"os/exec"
54
"testing"
5+
6+
"github.com/stretchr/testify/assert"
67
)
78

89
func TestGoClangDump(t *testing.T) {
910
for _, fname := range []string{
1011
"../../testdata/basicparsing.c",
1112
} {
12-
cmd := exec.Command("go-clang-dump", "-fname", fname)
13-
err := cmd.Run()
14-
if err != nil {
15-
t.Fatalf("error running go-clang-dump on %q: %v\n", fname, err)
16-
}
13+
assert.Equal(t, 0, cmd([]string{"-fname", fname}))
1714
}
1815
}

0 commit comments

Comments
 (0)