1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Factor out function to check for clang in tests

This also stops a flymake test from failing on my machine.

* lisp/emacs-lisp/ert-x.el (ert-gcc-is-clang-p): New function
factored out from ...
* test/lisp/progmodes/flymake-tests.el (flymake-tests--gcc-is-clang):
* test/lisp/cedet/semantic/bovine/gcc-tests.el
(semantic-gcc-test-output-parser-this-machine): ... here.

* test/lisp/progmodes/flymake-tests.el (different-diagnostic-types)
(included-c-header-files):
* test/lisp/cedet/semantic/bovine/gcc-tests.el
(semantic-gcc-test-output-parser-this-machine): Use above new function.
This commit is contained in:
Stefan Kangas 2022-01-31 07:42:50 +01:00
parent d464454f45
commit 9a56b4e686
3 changed files with 13 additions and 15 deletions

View file

@ -475,6 +475,14 @@ The same keyword arguments are supported as in
:directory t
,@body))
(defun ert-gcc-is-clang-p ()
"Return non-nil if the `gcc' command actually runs the Clang compiler."
;; Some macOS machines run llvm when you type gcc. (!)
;; We can't even check if it's a symlink; it's a binary placed in
;; "/usr/bin/gcc". So we need to check the output.
(string-match "Apple \\(LLVM\\|[Cc]lang\\)\\|Xcode\\.app"
(shell-command-to-string "gcc --version")))
(provide 'ert-x)
;;; ert-x.el ends here

View file

@ -122,14 +122,9 @@ gcc version 2.95.2 19991024 (release)"
(ert-deftest semantic-gcc-test-output-parser-this-machine ()
"Test the output parser against the machine currently running Emacs."
(skip-unless (executable-find "gcc"))
(skip-unless (and (executable-find "gcc")
(not (ert-gcc-is-clang-p))))
(let ((semantic-gcc-test-strings (list (semantic-gcc-query "gcc" "-v"))))
;; Some macOS machines run llvm when you type gcc. (!)
;; We can't even check if it's a symlink; it's a binary placed in
;; "/usr/bin/gcc". So check the output and just skip this test if
;; it looks like that's the case.
(unless (string-match "Apple \\(LLVM\\|clang\\)\\|Xcode\\.app"
(car semantic-gcc-test-strings))
(semantic-gcc-test-output-parser))))
(semantic-gcc-test-output-parser)))
;;; gcc-tests.el ends here

View file

@ -140,15 +140,10 @@ SEVERITY-PREDICATE is used to setup
(flymake-goto-next-error)
(should (eq 'flymake-error (face-at-point)))))))
(defun flymake-tests--gcc-is-clang ()
"Whether the `gcc' command actually runs the Clang compiler."
(string-match "[Cc]lang version "
(shell-command-to-string "gcc --version")))
(ert-deftest different-diagnostic-types ()
"Test GCC warning via function predicate."
(skip-unless (and (executable-find "gcc")
(not (flymake-tests--gcc-is-clang))
(not (ert-gcc-is-clang-p))
(version<=
"5" (string-trim
(shell-command-to-string "gcc -dumpversion")))
@ -173,7 +168,7 @@ SEVERITY-PREDICATE is used to setup
(ert-deftest included-c-header-files ()
"Test inclusion of .h header files."
(skip-unless (and (executable-find "gcc")
(not (flymake-tests--gcc-is-clang))
(not (ert-gcc-is-clang-p))
(executable-find "make")))
(let ((flymake-wrap-around nil))
(flymake-tests--with-flymake