summaryrefslogtreecommitdiff
path: root/elpa/irony-20220110.849/server/test/elisp/CMakeLists.txt
blob: 8877a89893224adfe56ca36b719c89f00d63eb34 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# On MS-Windows, emacs_dir is a special environment variable, which
# indicates the full path of the directory in which Emacs is
# installed.
#
# There is no standard location that I know of for Emacs on Windows so
# using this special environment variable will at least help people
# who build the server from inside Emacs.
if(DEFINED ENV{emacs_dir})
  list(APPEND EMACS_EXECUTABLE_HINTS $ENV{emacs_dir}/bin)
endif()

find_program(EMACS_EXECUTABLE emacs
  HINTS ${EMACS_EXECUTABLE_HINTS})

if (EMACS_EXECUTABLE)
  message(STATUS "Found emacs: ${EMACS_EXECUTABLE}")
else()
  message(WARNING "emacs not found: elisp tests will be skipped!")
  return()
endif()

#
# add_ert_test(<FileName>)
#
# Create a test which run the given Elisp script using the Emacs ERT testing
# framework.
#
# The target is deduced from the ``FileName`` argument, e.g: the file foo.el
# will be the target 'check-foo-el'.
#
# FIXME: assumes MELPA is configured...
function(add_ert_test test_file)
  get_filename_component(name ${test_file} NAME_WE)
  add_test(check-${name}-el
    ${EMACS_EXECUTABLE} -Q --batch
    -l package
    --eval "(package-initialize)"
    --eval "(unless (require 'cl-lib nil t) (package-refresh-contents) (package-install 'cl-lib))"
    -l ${CMAKE_CURRENT_SOURCE_DIR}/${test_file}
    -f ert-run-tests-batch-and-exit)

  set_tests_properties(check-${name}-el PROPERTIES TIMEOUT 15)
endfunction()

add_ert_test(irony.el)
add_ert_test(irony-iotask.el)
add_ert_test(irony-cdb-json.el)