Skip to content

Commit 06cbde6

Browse files
committed
test changed clangd config-loading behavior
1 parent d28f67e commit 06cbde6

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# We specify a custom path in XDG_CONFIG_HOME, which only works on some systems.
2+
# UNSUPPORTED: system-windows
3+
# UNSUPPORTED: system-darwin
4+
5+
# RUN: rm -rf %t.config.d %t.project.d
6+
# RUN: mkdir -p %t.config.d/clangd %t.project.d
7+
8+
# Create a config file that injects a flag we can observe, and has an error.
9+
# RUN: echo 'CompileFlags: {Remove: -DCONFIG=LOCAL, Add: -DCONFIG=USER}' > %t.config.d/clangd/config.yaml
10+
# RUN: echo 'CompileFlags: {Remove: -DCONFIG=USER, Add: -DCONFIG=LOCAL}' > %t.project.d/.clangd
11+
12+
# RUN: sed '/^#/!s|PROJECT_DIR|%t.project.d|g' %s | env XDG_CONFIG_HOME=%t.config.d clangd -lit-test -enable-config | FileCheck -strict-whitespace %s
13+
14+
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}
15+
---
16+
{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file://PROJECT_DIR/foo.c","languageId":"c","text":"int FOO = CONFIG;"}}}
17+
# No errors in the config file.
18+
# CHECK: "method": "textDocument/publishDiagnostics",
19+
# CHECK-NEXT: "params": {
20+
# CHECK-NEXT: "diagnostics": [],
21+
# CHECK-NEXT: "uri": "file://{{.*}}/config.yaml"
22+
# CHECK-NEXT: }
23+
# No errors in the config file.
24+
# CHECK: "method": "textDocument/publishDiagnostics",
25+
# CHECK-NEXT: "params": {
26+
# CHECK-NEXT: "diagnostics": [],
27+
# CHECK-NEXT: "uri": "file://{{.*}}/.clangd"
28+
# CHECK-NEXT: }
29+
# LOCAL rather than USER means the local .clangd applied later and overrode the user config.
30+
# CHECK: "method": "textDocument/publishDiagnostics",
31+
# CHECK-NEXT: "params": {
32+
# CHECK-NEXT: "diagnostics": [
33+
# CHECK-NEXT: {
34+
# CHECK-NEXT: "code": "undeclared_var_use",
35+
# CHECK-NEXT: "message": "Use of undeclared identifier 'LOCAL'",
36+
# CHECK-NEXT: "range": {
37+
# CHECK-NEXT: "end": {
38+
# CHECK-NEXT: "character": 16,
39+
# CHECK-NEXT: "line": 0
40+
# CHECK-NEXT: },
41+
# CHECK-NEXT: "start": {
42+
# CHECK-NEXT: "character": 10,
43+
# CHECK-NEXT: "line": 0
44+
# CHECK-NEXT: }
45+
# CHECK-NEXT: },
46+
# CHECK-NEXT: "severity": 1,
47+
# CHECK-NEXT: "source": "clang"
48+
# CHECK-NEXT: }
49+
# CHECK-NEXT: ],
50+
# CHECK-NEXT: "uri": "file://{{.*}}/foo.c",
51+
# CHECK-NEXT: "version": 0
52+
# CHECK-NEXT: }
53+
---
54+
{"jsonrpc":"2.0","id":4,"method":"shutdown"}
55+
---
56+
{"jsonrpc":"2.0","method":"exit"}

0 commit comments

Comments
 (0)