From 09519744f1ba37fa16d170e61e51645d2b0c9a41 Mon Sep 17 00:00:00 2001 From: Patryk Wychowaniec Date: Fri, 2 Jan 2026 19:24:44 +0100 Subject: [PATCH] clang-tools: add tests --- .../llvm/common/clang-tools/default.nix | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/llvm/common/clang-tools/default.nix b/pkgs/development/compilers/llvm/common/clang-tools/default.nix index 8f07cacfe522..cae95a4a33ea 100644 --- a/pkgs/development/compilers/llvm/common/clang-tools/default.nix +++ b/pkgs/development/compilers/llvm/common/clang-tools/default.nix @@ -1,6 +1,8 @@ { lib, stdenv, + runCommand, + writeText, clang-unwrapped, clang, libcxxClang, @@ -10,7 +12,7 @@ enableLibcxx ? false, }: -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "clang-tools"; version = lib.getVersion clang-unwrapped; dontUnpack = true; @@ -48,8 +50,42 @@ stdenv.mkDerivation { runHook postInstall ''; + passthru.tests.smokeOk = + let + src = writeText "main.cpp" '' + #include + + int main() { + std::cout << "Hi!"; + } + ''; + + in + runCommand "clang-tools-test-smoke-ok" { } '' + ${finalAttrs.finalPackage}/bin/clangd --check=${src} + touch $out + ''; + + passthru.tests.smokeErr = + let + src = writeText "main.cpp" '' + #include + + int main() { + std::cout << "Hi!"; + } + ''; + + in + runCommand "clang-tools-test-smoke-err" { } '' + (${finalAttrs.finalPackage}/bin/clangd --query-driver='**' --check=${src} 2>&1 || true) \ + | grep 'use of undeclared identifier' + + touch $out + ''; + meta = llvm_meta // { description = "Standalone command line tools for C++ development"; maintainers = with lib.maintainers; [ patryk27 ]; }; -} +})