brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.8 KiB · 5a87a87 Raw
429 lines · plain
1# We specify a custom path in XDG_CONFIG_HOME, which only works on some systems.2# UNSUPPORTED: system-windows3# UNSUPPORTED: system-darwin4 5# RUN: rm -rf %t6# RUN: mkdir -p %t/clangd7# RUN: cp -r %S/Inputs/include-cleaner %t/include8# RUN: echo '-I%t/include' > %t/compile_flags.txt9# Create a config file enabling include-cleaner features.10# RUN: echo 'Diagnostics:' > %t/clangd/config.yaml11# RUN: echo '  UnusedIncludes: Strict' >> %t/clangd/config.yaml12# RUN: echo '  MissingIncludes: Strict' >> %t/clangd/config.yaml13 14# RUN: env XDG_CONFIG_HOME=%t clangd -lit-test -enable-config --compile-commands-dir=%t < %s | FileCheck -strict-whitespace %s15{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{"workspace":{"workspaceEdit":{"documentChanges":true, "changeAnnotationSupport":{"groupsOnLabel":true}}}},"trace":"off"}}16---17{18  "jsonrpc": "2.0",19  "method": "textDocument/didOpen",20  "params": {21    "textDocument": {22      "uri": "test:///simple.cpp",23      "languageId": "cpp",24      "text": "#include \"all1.h\"\n#include \"all2.h\"\n Foo* foo; Bar* bar;"25    }26  }27}28# First, the diagnostic from the config file.29#      CHECK:  "method": "textDocument/publishDiagnostics",30# CHECK-NEXT:  "params": {31# CHECK-NEXT:    "diagnostics": [],32 33# Then, diagnostic from the main cpp file.34#      CHECK:  "method": "textDocument/publishDiagnostics",35# CHECK-NEXT:  "params": {36# CHECK-NEXT:     "diagnostics": [37# CHECK-NEXT:       {38# CHECK-NEXT:         "code": "missing-includes",39# CHECK-NEXT:         "codeDescription": {40# CHECK-NEXT:           "href": "{{.*}}"41# CHECK-NEXT:         },42# CHECK-NEXT:         "message": "No header providing \"Foo\" is directly included (fixes available)",43# CHECK-NEXT:         "range": {44# CHECK-NEXT:           "end": {45# CHECK-NEXT:             "character": 4,46# CHECK-NEXT:             "line": 247# CHECK-NEXT:           },48# CHECK-NEXT:           "start": {49# CHECK-NEXT:             "character": 1,50# CHECK-NEXT:             "line": 251# CHECK-NEXT:           }52# CHECK-NEXT:         },53# CHECK-NEXT:         "severity": 3,54# CHECK-NEXT:         "source": "clangd"55# CHECK-NEXT:       },56# CHECK-NEXT:       {57# CHECK-NEXT:         "code": "missing-includes",58# CHECK-NEXT:         "codeDescription": {59# CHECK-NEXT:           "href": "{{.*}}"60# CHECK-NEXT:         },61# CHECK-NEXT:         "message": "No header providing \"Bar\" is directly included (fixes available)",62# CHECK-NEXT:         "range": {63# CHECK-NEXT:           "end": {64# CHECK-NEXT:             "character": 14,65# CHECK-NEXT:             "line": 266# CHECK-NEXT:           },67# CHECK-NEXT:           "start": {68# CHECK-NEXT:             "character": 11,69# CHECK-NEXT:             "line": 270# CHECK-NEXT:           }71# CHECK-NEXT:         },72# CHECK-NEXT:         "severity": 3,73# CHECK-NEXT:         "source": "clangd"74# CHECK-NEXT:       },75# CHECK-NEXT:       {76# CHECK-NEXT:         "code": "unused-includes",77# CHECK-NEXT:         "codeDescription": {78# CHECK-NEXT:           "href": "{{.*}}"79# CHECK-NEXT:         },80# CHECK-NEXT:         "message": "Included header all1.h is not used directly (fixes available)",81# CHECK-NEXT:         "range": {82# CHECK-NEXT:           "end": {83# CHECK-NEXT:             "character": 17,84# CHECK-NEXT:             "line": 085# CHECK-NEXT:           },86# CHECK-NEXT:           "start": {87# CHECK-NEXT:             "character": 0,88# CHECK-NEXT:             "line": 089# CHECK-NEXT:           }90# CHECK-NEXT:         },91# CHECK-NEXT:         "severity": 2,92# CHECK-NEXT:         "source": "clangd",93# CHECK-NEXT:         "tags": [94# CHECK-NEXT:           195# CHECK-NEXT:         ]96# CHECK-NEXT:       },97# CHECK-NEXT:       {98# CHECK-NEXT:         "code": "unused-includes",99# CHECK-NEXT:         "codeDescription": {100# CHECK-NEXT:           "href": "{{.*}}"101# CHECK-NEXT:         },102# CHECK-NEXT:         "message": "Included header all2.h is not used directly (fixes available)",103# CHECK-NEXT:         "range": {104# CHECK-NEXT:           "end": {105# CHECK-NEXT:             "character": 17,106# CHECK-NEXT:             "line": 1107# CHECK-NEXT:           },108# CHECK-NEXT:           "start": {109# CHECK-NEXT:             "character": 0,110# CHECK-NEXT:             "line": 1111# CHECK-NEXT:           }112# CHECK-NEXT:         },113# CHECK-NEXT:         "severity": 2,114# CHECK-NEXT:         "source": "clangd",115# CHECK-NEXT:         "tags": [116# CHECK-NEXT:           1117# CHECK-NEXT:         ]118# CHECK-NEXT:       }119# CHECK-NEXT:     ],120# CHECK-NEXT:     "uri": "file://{{.*}}/simple.cpp",121# CHECK-NEXT:     "version": 0122# CHECK-NEXT:   }123---124{"jsonrpc":"2.0","id":2,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"test:///simple.cpp"},"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":4}},"context":{"diagnostics":[{"range":{"start": {"line": 2, "character": 1}, "end": {"line": 2, "character": 4}},"severity":3,"message":"No header providing \"Foo\" is directly included (fixes available)", "code": "missing-includes", "source": "clangd"}]}}}125#      CHECK:  "id": 2,126# CHECK-NEXT:  "jsonrpc": "2.0",127# CHECK-NEXT:  "result": [128# CHECK-NEXT:    {129# CHECK-NEXT:      "arguments": [130# CHECK-NEXT:        {131# CHECK-NEXT:          "documentChanges": [132# CHECK-NEXT:            {133# CHECK-NEXT:              "edits": [134# CHECK-NEXT:                {135# CHECK-NEXT:                  "newText": "#include {{.*}}foo.h{{.*}}",136# CHECK-NEXT:                  "range": {137# CHECK-NEXT:                    "end": {138# CHECK-NEXT:                      "character": 0,139# CHECK-NEXT:                      "line": 2140# CHECK-NEXT:                    },141# CHECK-NEXT:                    "start": {142# CHECK-NEXT:                      "character": 0,143# CHECK-NEXT:                      "line": 2144# CHECK-NEXT:                    }145# CHECK-NEXT:                  }146# CHECK-NEXT:                }147# CHECK-NEXT:              ],148# CHECK-NEXT:              "textDocument": {149# CHECK-NEXT:                "uri": "file://{{.*}}/simple.cpp",150# CHECK-NEXT:                "version": 0151# CHECK-NEXT:              }152# CHECK-NEXT:            }153# CHECK-NEXT:          ]154# CHECK-NEXT:        }155# CHECK-NEXT:      ],156# CHECK-NEXT:      "command": "clangd.applyFix",157# CHECK-NEXT:      "title": "Apply fix: #include {{.*}}foo.h{{.*}}"158# CHECK-NEXT:    },159# CHECK-NEXT:    {160# CHECK-NEXT:      "arguments": [161# CHECK-NEXT:        {162# CHECK-NEXT:          "documentChanges": [163# CHECK-NEXT:            {164# CHECK-NEXT:              "edits": [165# CHECK-NEXT:                {166# CHECK-NEXT:                  "newText": "#include {{.*}}bar.h{{.*}}",167# CHECK-NEXT:                  "range": {168# CHECK-NEXT:                    "end": {169# CHECK-NEXT:                      "character": 0,170# CHECK-NEXT:                      "line": 2171# CHECK-NEXT:                    },172# CHECK-NEXT:                    "start": {173# CHECK-NEXT:                      "character": 0,174# CHECK-NEXT:                      "line": 2175# CHECK-NEXT:                    }176# CHECK-NEXT:                  }177# CHECK-NEXT:                },178# CHECK-NEXT:                {179# CHECK-NEXT:                  "newText": "#include {{.*}}foo.h{{.*}}",180# CHECK-NEXT:                  "range": {181# CHECK-NEXT:                    "end": {182# CHECK-NEXT:                      "character": 0,183# CHECK-NEXT:                      "line": 2184# CHECK-NEXT:                    },185# CHECK-NEXT:                    "start": {186# CHECK-NEXT:                      "character": 0,187# CHECK-NEXT:                      "line": 2188# CHECK-NEXT:                    }189# CHECK-NEXT:                  }190# CHECK-NEXT:                }191# CHECK-NEXT:              ],192# CHECK-NEXT:              "textDocument": {193# CHECK-NEXT:                "uri": "file://{{.*}}/simple.cpp",194# CHECK-NEXT:                "version": 0195# CHECK-NEXT:              }196# CHECK-NEXT:            }197# CHECK-NEXT:          ]198# CHECK-NEXT:        }199# CHECK-NEXT:      ],200# CHECK-NEXT:      "command": "clangd.applyFix",201# CHECK-NEXT:      "title": "Apply fix: add all missing includes"202# CHECK-NEXT:    },203# CHECK-NEXT:    {204# CHECK-NEXT:      "arguments": [205# CHECK-NEXT:        {206# CHECK-NEXT:          "documentChanges": [207# CHECK-NEXT:            {208# CHECK-NEXT:              "edits": [209# CHECK-NEXT:                {210# CHECK-NEXT:                  "newText": "",211# CHECK-NEXT:                  "range": {212# CHECK-NEXT:                    "end": {213# CHECK-NEXT:                      "character": 0,214# CHECK-NEXT:                      "line": 1215# CHECK-NEXT:                    },216# CHECK-NEXT:                    "start": {217# CHECK-NEXT:                      "character": 0,218# CHECK-NEXT:                      "line": 0219# CHECK-NEXT:                    }220# CHECK-NEXT:                  }221# CHECK-NEXT:                },222# CHECK-NEXT:                {223# CHECK-NEXT:                  "newText": "",224# CHECK-NEXT:                  "range": {225# CHECK-NEXT:                    "end": {226# CHECK-NEXT:                      "character": 0,227# CHECK-NEXT:                      "line": 2228# CHECK-NEXT:                    },229# CHECK-NEXT:                    "start": {230# CHECK-NEXT:                      "character": 0,231# CHECK-NEXT:                      "line": 1232# CHECK-NEXT:                    }233# CHECK-NEXT:                  }234# CHECK-NEXT:                },235# CHECK-NEXT:                {236# CHECK-NEXT:                  "newText": "#include {{.*}}bar.h{{.*}}",237# CHECK-NEXT:                  "range": {238# CHECK-NEXT:                    "end": {239# CHECK-NEXT:                      "character": 0,240# CHECK-NEXT:                      "line": 2241# CHECK-NEXT:                    },242# CHECK-NEXT:                    "start": {243# CHECK-NEXT:                      "character": 0,244# CHECK-NEXT:                      "line": 2245# CHECK-NEXT:                    }246# CHECK-NEXT:                  }247# CHECK-NEXT:                },248# CHECK-NEXT:                {249# CHECK-NEXT:                  "newText": "#include {{.*}}foo.h{{.*}}",250# CHECK-NEXT:                  "range": {251# CHECK-NEXT:                    "end": {252# CHECK-NEXT:                      "character": 0,253# CHECK-NEXT:                      "line": 2254# CHECK-NEXT:                    },255# CHECK-NEXT:                    "start": {256# CHECK-NEXT:                      "character": 0,257# CHECK-NEXT:                      "line": 2258# CHECK-NEXT:                    }259# CHECK-NEXT:                  }260# CHECK-NEXT:                }261# CHECK-NEXT:              ],262# CHECK-NEXT:              "textDocument": {263# CHECK-NEXT:                "uri": "file://{{.*}}/simple.cpp",264# CHECK-NEXT:                "version": 0265# CHECK-NEXT:              }266# CHECK-NEXT:            }267# CHECK-NEXT:          ]268# CHECK-NEXT:        }269# CHECK-NEXT:      ],270# CHECK-NEXT:      "command": "clangd.applyFix",271# CHECK-NEXT:      "title": "Apply fix: fix all includes"272# CHECK-NEXT:    }273# CHECK-NEXT:  ]274---275{"jsonrpc":"2.0","id":3,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"test:///simple.cpp"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":17}},"context":{"diagnostics":[{"range":{"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 17}},"severity":2,"message":"Included header all1.h is not used directly (fixes available)", "code": "unused-includes", "source": "clangd"}]}}}276#      CHECK:  "id": 3,277# CHECK-NEXT:  "jsonrpc": "2.0",278# CHECK-NEXT:  "result": [279# CHECK-NEXT:    {280# CHECK-NEXT:      "arguments": [281# CHECK-NEXT:        {282# CHECK-NEXT:          "documentChanges": [283# CHECK-NEXT:            {284# CHECK-NEXT:              "edits": [285# CHECK-NEXT:                {286# CHECK-NEXT:                  "newText": "",287# CHECK-NEXT:                  "range": {288# CHECK-NEXT:                    "end": {289# CHECK-NEXT:                      "character": 0,290# CHECK-NEXT:                      "line": 1291# CHECK-NEXT:                    },292# CHECK-NEXT:                    "start": {293# CHECK-NEXT:                      "character": 0,294# CHECK-NEXT:                      "line": 0295# CHECK-NEXT:                    }296# CHECK-NEXT:                  }297# CHECK-NEXT:                }298# CHECK-NEXT:              ],299# CHECK-NEXT:              "textDocument": {300# CHECK-NEXT:                "uri": "file://{{.*}}/simple.cpp",301# CHECK-NEXT:                "version": 0302# CHECK-NEXT:              }303# CHECK-NEXT:            }304# CHECK-NEXT:          ]305# CHECK-NEXT:        }306# CHECK-NEXT:      ],307# CHECK-NEXT:      "command": "clangd.applyFix",308# CHECK-NEXT:      "title": "Apply fix: remove #include directive"309# CHECK-NEXT:    },310# CHECK-NEXT:    {311# CHECK-NEXT:      "arguments": [312# CHECK-NEXT:        {313# CHECK-NEXT:          "documentChanges": [314# CHECK-NEXT:            {315# CHECK-NEXT:              "edits": [316# CHECK-NEXT:                {317# CHECK-NEXT:                  "newText": "",318# CHECK-NEXT:                  "range": {319# CHECK-NEXT:                    "end": {320# CHECK-NEXT:                      "character": 0,321# CHECK-NEXT:                      "line": 1322# CHECK-NEXT:                    },323# CHECK-NEXT:                    "start": {324# CHECK-NEXT:                      "character": 0,325# CHECK-NEXT:                      "line": 0326# CHECK-NEXT:                    }327# CHECK-NEXT:                  }328# CHECK-NEXT:                },329# CHECK-NEXT:                {330# CHECK-NEXT:                  "newText": "",331# CHECK-NEXT:                  "range": {332# CHECK-NEXT:                    "end": {333# CHECK-NEXT:                      "character": 0,334# CHECK-NEXT:                      "line": 2335# CHECK-NEXT:                    },336# CHECK-NEXT:                    "start": {337# CHECK-NEXT:                      "character": 0,338# CHECK-NEXT:                      "line": 1339# CHECK-NEXT:                    }340# CHECK-NEXT:                  }341# CHECK-NEXT:                }342# CHECK-NEXT:              ],343# CHECK-NEXT:              "textDocument": {344# CHECK-NEXT:                "uri": "file://{{.*}}/simple.cpp",345# CHECK-NEXT:                "version": 0346# CHECK-NEXT:              }347# CHECK-NEXT:            }348# CHECK-NEXT:          ]349# CHECK-NEXT:        }350# CHECK-NEXT:      ],351# CHECK-NEXT:      "command": "clangd.applyFix",352# CHECK-NEXT:      "title": "Apply fix: remove all unused includes"353# CHECK-NEXT:    },354# CHECK-NEXT:    {355# CHECK-NEXT:      "arguments": [356# CHECK-NEXT:        {357# CHECK-NEXT:          "documentChanges": [358# CHECK-NEXT:            {359# CHECK-NEXT:              "edits": [360# CHECK-NEXT:                {361# CHECK-NEXT:                  "newText": "",362# CHECK-NEXT:                  "range": {363# CHECK-NEXT:                    "end": {364# CHECK-NEXT:                      "character": 0,365# CHECK-NEXT:                      "line": 1366# CHECK-NEXT:                    },367# CHECK-NEXT:                    "start": {368# CHECK-NEXT:                      "character": 0,369# CHECK-NEXT:                      "line": 0370# CHECK-NEXT:                    }371# CHECK-NEXT:                  }372# CHECK-NEXT:                },373# CHECK-NEXT:                {374# CHECK-NEXT:                  "newText": "",375# CHECK-NEXT:                  "range": {376# CHECK-NEXT:                    "end": {377# CHECK-NEXT:                      "character": 0,378# CHECK-NEXT:                      "line": 2379# CHECK-NEXT:                    },380# CHECK-NEXT:                    "start": {381# CHECK-NEXT:                      "character": 0,382# CHECK-NEXT:                      "line": 1383# CHECK-NEXT:                    }384# CHECK-NEXT:                  }385# CHECK-NEXT:                },386# CHECK-NEXT:                {387# CHECK-NEXT:                  "newText": "#include {{.*}}bar.h{{.*}}",388# CHECK-NEXT:                  "range": {389# CHECK-NEXT:                    "end": {390# CHECK-NEXT:                      "character": 0,391# CHECK-NEXT:                      "line": 2392# CHECK-NEXT:                    },393# CHECK-NEXT:                    "start": {394# CHECK-NEXT:                      "character": 0,395# CHECK-NEXT:                      "line": 2396# CHECK-NEXT:                    }397# CHECK-NEXT:                  }398# CHECK-NEXT:                },399# CHECK-NEXT:                {400# CHECK-NEXT:                  "newText": "#include {{.*}}foo.h{{.*}}",401# CHECK-NEXT:                  "range": {402# CHECK-NEXT:                    "end": {403# CHECK-NEXT:                      "character": 0,404# CHECK-NEXT:                      "line": 2405# CHECK-NEXT:                    },406# CHECK-NEXT:                    "start": {407# CHECK-NEXT:                      "character": 0,408# CHECK-NEXT:                      "line": 2409# CHECK-NEXT:                    }410# CHECK-NEXT:                  }411# CHECK-NEXT:                }412# CHECK-NEXT:              ],413# CHECK-NEXT:              "textDocument": {414# CHECK-NEXT:                "uri": "file://{{.*}}/simple.cpp",415# CHECK-NEXT:                "version": 0416# CHECK-NEXT:              }417# CHECK-NEXT:            }418# CHECK-NEXT:          ]419# CHECK-NEXT:        }420# CHECK-NEXT:      ],421# CHECK-NEXT:      "command": "clangd.applyFix",422# CHECK-NEXT:      "title": "Apply fix: fix all includes"423# CHECK-NEXT:    }424# CHECK-NEXT:  ]425---426{"jsonrpc":"2.0","id":4,"method":"shutdown"}427---428{"jsonrpc":"2.0","method":"exit"}429