88 lines
3.4 KiB
EmacsLisp
88 lines
3.4 KiB
EmacsLisp
;; -*-no-byte-compile: t; -*-
|
|
(load
|
|
(concat (file-name-directory (or load-file-name buffer-file-name))
|
|
"test-config"))
|
|
|
|
(require 'irony-cdb-json)
|
|
(require 'cl-lib)
|
|
|
|
(defconst irony-cdb/compile-command
|
|
'((file . "../src/file.cc")
|
|
(directory . "/home/user/project/build")
|
|
(command . "/usr/bin/clang++ -DSOMEDEF=1 -c -o file.o /home/user/project/src/file.cc")))
|
|
|
|
(ert-deftest cdb/parse/simple/path-is-absolute ()
|
|
(should
|
|
(equal "/home/user/project/src/file.cc"
|
|
(nth 0 (irony-cdb-json--transform-compile-command
|
|
irony-cdb/compile-command)))))
|
|
|
|
(ert-deftest cdb/parse/simple/compile-options ()
|
|
(should
|
|
(equal '("-DSOMEDEF=1")
|
|
(nth 1 (irony-cdb-json--transform-compile-command
|
|
irony-cdb/compile-command)))))
|
|
|
|
(ert-deftest cdb/parse/simple/invocation-directory ()
|
|
(should
|
|
(equal "/home/user/project/build"
|
|
(nth 2 (irony-cdb-json--transform-compile-command
|
|
irony-cdb/compile-command)))))
|
|
|
|
(ert-deftest cdb/choose-closest-path/chooses-closest ()
|
|
(should
|
|
(equal "/tmp/a/cdb"
|
|
(irony-cdb--choose-closest-path "/tmp/a/1"
|
|
'("/tmp/a/cdb" "/tmp/cdb")))))
|
|
|
|
(ert-deftest cdb/choose-closest-path/chooses-closest2 ()
|
|
(should
|
|
(equal "/tmp/a/cdb"
|
|
(irony-cdb--choose-closest-path "/tmp/a/1"
|
|
'("/tmp/cdb" "/tmp/a/cdb")))))
|
|
|
|
(ert-deftest cdb/choose-closest-path/prefers-deeper ()
|
|
(should
|
|
(equal "/tmp/a/build/cdb"
|
|
(irony-cdb--choose-closest-path "/tmp/a/1"
|
|
'("/tmp/a/build/cdb" "/tmp/cdb")))))
|
|
|
|
(ert-deftest cdb/choose-closest-path/prefers-deeper2 ()
|
|
(should
|
|
(equal "/tmp/a/build/cdb"
|
|
(irony-cdb--choose-closest-path "/tmp/a/1"
|
|
'("/tmp/cdb" "/tmp/a/build/cdb")))))
|
|
|
|
(ert-deftest cdb/choose-closest-path/will-survive-garbage ()
|
|
(should
|
|
(equal nil
|
|
(irony-cdb--choose-closest-path "/tmp/a/1"
|
|
'ordures))))
|
|
|
|
; http://endlessparentheses.com/understanding-letf-and-how-it-replaces-flet.html
|
|
(ert-deftest cdb/locate-db/choose-among-candidates ()
|
|
(should
|
|
(equal "/foo/build/cdb"
|
|
(cl-letf (((symbol-function 'locate-dominating-file)
|
|
(lambda (file name)
|
|
(cond
|
|
((string= name "./cdb") "/") ; found /cdb
|
|
((string= name "build/cdb") "/foo/") ; found /foo/build/cdb
|
|
))))
|
|
(irony-cdb--locate-dominating-file-with-dirs "/foo/bar/qux.cpp"
|
|
"cdb"
|
|
'("." "build" "out/x86_64"))))))
|
|
|
|
(ert-deftest cdb/locate-dominating-file-with-dirs/children-first ()
|
|
(should
|
|
(equal "/tmp/foo/bar/out/x86_64/cdb"
|
|
(cl-letf (((symbol-function 'locate-dominating-file)
|
|
(lambda (file name)
|
|
(cond
|
|
((string= name "./cdb") "/tmp/foo/") ; found /tmp/foo/cdb
|
|
((string= name "out/x86_64/cdb") "/tmp/foo/bar/") ;found /tmp/foo/bar/out/x86_64/cdb
|
|
))))
|
|
(irony-cdb--locate-dominating-file-with-dirs "/tmp/foo/bar/qux.cpp"
|
|
"cdb"
|
|
'("." "out/x86_64" ))))))
|