Merge pull request #1239 from Elv13/drill_speed_holes
Improve the CI accuracy and maybe its speed
This commit is contained in:
commit
902a5c5e78
21
.luacov
21
.luacov
|
@ -1,33 +1,26 @@
|
|||
-- Configuration file for LuaCov
|
||||
|
||||
-- This variable is set externally
|
||||
local build = os.getenv("BUILD_DIRECTORY") or error("$BUILD_DIRECTORY not set")
|
||||
local lib_dir = os.getenv("AWESOME_LIB_DIR") or build .. "lib/"
|
||||
local source = os.getenv("SOURCE_DIRECTORY")
|
||||
local source = os.getenv("SOURCE_DIRECTORY") or os.getenv('PWD')
|
||||
local build = os.getenv("BUILD_DIRECTORY") or (source .. "/build")
|
||||
|
||||
local function escape_pattern(str)
|
||||
return string.gsub(str, "%W", "%%%1")
|
||||
end
|
||||
|
||||
return {
|
||||
statsfile = build .. "luacov.stats.out",
|
||||
statsfile = build .. "/luacov.stats.out",
|
||||
|
||||
include = {
|
||||
escape_pattern(lib_dir) .. ".+",
|
||||
|
||||
-- For things already having the correct path
|
||||
-- (happens with integration tests)
|
||||
"^lib/",
|
||||
|
||||
-- For the shape-API auto-generated images
|
||||
source and escape_pattern(source .. "lib/"),
|
||||
escape_pattern(source) .. "/.+",
|
||||
-- Relative paths (to source/build dir).
|
||||
'^[^/].+',
|
||||
},
|
||||
|
||||
-- configuration for luacov-coveralls reporter
|
||||
coveralls = {
|
||||
pathcorrect = {
|
||||
{ escape_pattern(lib_dir), "lib/"},
|
||||
source and { escape_pattern(source .. "lib/"), "lib/" },
|
||||
{ escape_pattern(source .. '/'), ''},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
60
.travis.yml
60
.travis.yml
|
@ -10,13 +10,13 @@ branches:
|
|||
|
||||
env:
|
||||
matrix:
|
||||
- LUA=5.2 DO_CHECKQA=1 LUANAME=lua5.2 BUILD_APIDOC=true DO_COVERAGE=coveralls
|
||||
- LUA=5.2 DO_CHECKQA=1 LUANAME=lua5.2 DO_COVERAGE=coveralls
|
||||
# luajit: installed from source.
|
||||
- LUA=5.1 LUANAME=luajit-2.0 LUALIBRARY=/usr/lib/libluajit-5.1.so LUAROCKS_ARGS=--lua-suffix=jit-2.0.4 TEST_PREV_COMMITS=1
|
||||
# Note: luarocks does not work with Lua 5.0.
|
||||
- LUA=5.1 LUANAME=lua5.1 BUILD_IN_DIR=/tmp/awesome-build
|
||||
# Lua 5.2 with older lgi and screen size not divisible by 2.
|
||||
- LUA=5.2 LUANAME=lua5.2 LGIVER=0.8.0 TESTS_SCREEN_SIZE=1921x1079
|
||||
- LUA=5.2 LUANAME=lua5.2 LGIVER=0.8.0 TESTS_SCREEN_SIZE=1921x1079 BUILD_APIDOC=true
|
||||
# Lua 5.3 isn't available in Ubuntu Trusty, so some magic below installs it.
|
||||
- LUA=5.3 LUANAME=lua5.3 LUALIBRARY=/usr/lib/liblua.so DO_COVERAGE=codecov
|
||||
global:
|
||||
|
@ -24,6 +24,7 @@ env:
|
|||
- secure: "R/HYDclnws1I1+v9Yjt+RKa4CsFhbBT9tiwE3EfPhEj2KCYX4sFRMxuZvLf5sq0XWdrQaPhQ54fgAZGr3f054JKRXcTB0g9J6nhSHz9kIjPh446gafUhEeDQcZRwM/MeCWiwFIkiZm6smYoDFE9JTWu6quNV+lQ4kcVDOp2ibEc="
|
||||
|
||||
before_install:
|
||||
- if [ "$BUILD_APIDOC" = true ] && [ -n "$DO_COVERAGE" ]; then echo "BUILD_APIDOC and DO_COVERAGE are not meant to be used together." >&2; exit 1; fi
|
||||
- if [ -z $LUAINCLUDE ]; then LUAINCLUDE=/usr/include/${LUANAME}; fi
|
||||
- if [ -z $LUALIBRARY ]; then LUALIBRARY=/usr/lib/x86_64-linux-gnu/lib${LUANAME}.so; fi
|
||||
- cmake --version
|
||||
|
@ -49,7 +50,7 @@ install:
|
|||
# Install Lua (per env).
|
||||
# Note that Lua 5.3 is installed manually, because it is not available in Ubuntu Trusty.
|
||||
- |
|
||||
set -ev
|
||||
set -e
|
||||
if [[ "$LUA" == "5.3" ]]; then
|
||||
wget http://www.lua.org/ftp/lua-5.3.3.tar.gz -O lua.tar.gz
|
||||
tar -xvzf lua.tar.gz
|
||||
|
@ -89,23 +90,28 @@ install:
|
|||
- if [ "$DO_CHECKQA" = 1 ]; then travis_retry sudo luarocks install luacheck; fi
|
||||
|
||||
# Install ldoc for building docs.
|
||||
- travis_retry sudo luarocks install ldoc
|
||||
- travis_retry sudo luarocks install lua-discount
|
||||
- |
|
||||
if [ "$BUILD_APIDOC" = "true" ]; then
|
||||
travis_retry sudo luarocks install ldoc
|
||||
travis_retry sudo luarocks install lua-discount
|
||||
fi
|
||||
|
||||
# Install dependencies for code coverage testing.
|
||||
- if [ "$DO_COVERAGE" = "" ]; then export DO_COVERAGE=0; fi
|
||||
- if [ "$DO_COVERAGE" != "0" ]; then sudo luarocks install luacov 0.11.0-1; fi
|
||||
- if [ "$DO_COVERAGE" != "0" ]; then sudo luarocks install luacov 0.12.0-1; fi
|
||||
- if [ "$DO_COVERAGE" = "coveralls" ]; then sudo luarocks install luacov-coveralls; fi
|
||||
|
||||
# Determine custom version.
|
||||
- export AWESOME_VERSION="${TRAVIS_BRANCH}-g$(git rev-parse --short HEAD)"
|
||||
- 'if [ "$TRAVIS_PULL_REQUEST" != false ]; then AWESOME_VERSION="${AWESOME_VERSION}-PR${TRAVIS_PULL_REQUEST}"; fi'
|
||||
# function for codecov support
|
||||
- travis_retry wget -O /tmp/codecov-bash https://codecov.io/bash
|
||||
- if [ "$DO_COVERAGE" = "codecov" ]; then travis_retry wget -O /tmp/codecov-bash https://codecov.io/bash; fi
|
||||
- |
|
||||
do_codecov() {
|
||||
echo "== do_codecov in $PWD: $*: build/luacov.stats.out: =="
|
||||
if [ "$DO_COVERAGE" = "codecov" ]; then
|
||||
(cd build && luacov) || return 1
|
||||
test -f build/luacov.stats.out || { echo 'build/luacov.stats.out does not exist.'; return 1; }
|
||||
luacov || return 1
|
||||
travis_retry bash /tmp/codecov-bash -X coveragepy -c -F "$1" || return 1
|
||||
rm build/luacov.stats.out
|
||||
fi
|
||||
|
@ -130,9 +136,9 @@ install:
|
|||
return $result
|
||||
}
|
||||
script:
|
||||
- export CMAKE_ARGS="-DLUA_LIBRARY=${LUALIBRARY} -DLUA_INCLUDE_DIR=${LUAINCLUDE} -D OVERRIDE_VERSION=$AWESOME_VERSION -D DO_COVERAGE=${DO_COVERAGE} -DSTRICT_TESTS=true"
|
||||
- export CMAKE_ARGS="-DLUA_LIBRARY=${LUALIBRARY} -DLUA_INCLUDE_DIR=${LUAINCLUDE} -D OVERRIDE_VERSION=$AWESOME_VERSION -DSTRICT_TESTS=true"
|
||||
- |
|
||||
set -ev
|
||||
set -e
|
||||
if [ -n "$BUILD_IN_DIR" ]; then
|
||||
# Explicitly remove the Makefile to not build from the src dir accidentally.
|
||||
rm Makefile
|
||||
|
@ -147,20 +153,22 @@ script:
|
|||
travis_run_in_fold "make.install" sudo env PATH=$PATH make install
|
||||
awesome --version
|
||||
fi
|
||||
- |
|
||||
if [ "$TRAVIS_TEST_RESULT" = 0 ]; then
|
||||
do_codecov samples
|
||||
fi
|
||||
# Run check-unit{,-coverage} and check-integration.
|
||||
- |
|
||||
set -ev
|
||||
set -ex
|
||||
if [ "$TRAVIS_TEST_RESULT" = 0 ]; then
|
||||
if [ "$DO_COVERAGE" != "0" ]; then
|
||||
travis_fold_start "DO_COVERAGE"
|
||||
|
||||
# Run tests/examples explicitly.
|
||||
(mkdir -p tests/examples/build \
|
||||
&& cd tests/examples/build \
|
||||
&& cmake $CMAKE_ARGS ..)
|
||||
do_codecov samples
|
||||
|
||||
(make check-unit-coverage \
|
||||
&& do_codecov unittests \
|
||||
&& sed -i "1 i\\require('luacov.runner')('"$PWD"/.luacov')" build/awesomerc.lua \
|
||||
&& BUILD_DIRECTORY="" tests/run.sh \
|
||||
&& tests/run.sh \
|
||||
&& do_codecov functionaltests)
|
||||
ret=$?
|
||||
travis_fold_end
|
||||
|
@ -176,7 +184,7 @@ script:
|
|||
travis_run_in_fold "make.check-qa" make check-qa
|
||||
fi
|
||||
- |
|
||||
set -ev
|
||||
set -e
|
||||
if [ "$TEST_PREV_COMMITS" = 1 ] && ! [ "$TRAVIS_PULL_REQUEST" = false ]; then
|
||||
# Check each commit separately (to make git-bisect less annoying).
|
||||
# Fix Travis' commit range (https://github.com/travis-ci/travis-ci/issues/4596).
|
||||
|
@ -195,13 +203,18 @@ script:
|
|||
echo "Testing commit $commit"
|
||||
git checkout "$commit"
|
||||
git --no-pager show --stat
|
||||
if ! make all check; then
|
||||
if ! DO_COVERAGE=0 make all check; then
|
||||
failed="$failed $commit"
|
||||
fi
|
||||
travis_fold_end
|
||||
done
|
||||
|
||||
git checkout -qf FETCH_HEAD
|
||||
if [ -n "$failed" ]; then
|
||||
echo "Checks failed for these commits:$failed"
|
||||
echo "Checks failed for these commits:"
|
||||
for c in $commits; do
|
||||
git log -1 --pretty="%h %s (%an, %ad)" "$c"
|
||||
done
|
||||
false
|
||||
fi
|
||||
fi
|
||||
|
@ -210,4 +223,9 @@ after_success:
|
|||
# Push updated API docs for relevant branches, e.g. non-PRs builds on master.
|
||||
- if [ "$BUILD_APIDOC" = "true" ]; then build-utils/travis-apidoc.sh; fi
|
||||
# Push code coverage information
|
||||
- if [ "$DO_COVERAGE" = "coveralls" ]; then BUILD_DIRECTORY="$(pwd)/$(readlink build)/" SOURCE_DIRECTORY="$(pwd)/" luacov-coveralls --verbose --merge; fi
|
||||
- |
|
||||
set -e
|
||||
if [ "$DO_COVERAGE" = "coveralls" ]; then
|
||||
test -f build/luacov.stats.out || { echo 'build/luacov.stats.out does not exist.'; return 1; }
|
||||
luacov-coveralls --verbose --merge
|
||||
fi
|
||||
|
|
|
@ -389,7 +389,7 @@ if(BUSTED_EXECUTABLE)
|
|||
# Keep the arguments in sync with the version below!
|
||||
add_custom_target(check-unit ALL
|
||||
${BUSTED_EXECUTABLE} "--helper=${CMAKE_SOURCE_DIR}/spec/preload.lua"
|
||||
"--lpath=${CMAKE_BINARY_DIR}/lib/?.lua;${CMAKE_BINARY_DIR}/lib/?/init.lua;spec/?.lua"
|
||||
"--lpath=lib/?.lua;lib/?/init.lua;spec/?.lua"
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
COMMENT "Running unit tests"
|
||||
VERBATIM)
|
||||
|
@ -397,9 +397,8 @@ if(BUSTED_EXECUTABLE)
|
|||
|
||||
# Same as above, but with --coverage argument
|
||||
add_custom_target(check-unit-coverage
|
||||
"BUILD_DIRECTORY=${CMAKE_BINARY_DIR}/"
|
||||
${BUSTED_EXECUTABLE} "--helper=${CMAKE_SOURCE_DIR}/spec/preload.lua"
|
||||
"--lpath=${CMAKE_BINARY_DIR}/lib/?.lua;${CMAKE_BINARY_DIR}/lib/?/init.lua;spec/?.lua"
|
||||
"--lpath=lib/?.lua;lib/?/init.lua;spec/?.lua"
|
||||
"--coverage"
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
COMMENT "Running unit tests under LuaCov"
|
||||
|
|
|
@ -12,6 +12,9 @@ option(WITH_DBUS "build with D-BUS" ON)
|
|||
option(GENERATE_MANPAGES "generate manpages" ON)
|
||||
option(COMPRESS_MANPAGES "compress manpages" ON)
|
||||
option(GENERATE_DOC "generate API documentation" ON)
|
||||
if (GENERATE_DOC AND ENV{DO_COVERAGE})
|
||||
message(STATUS "Not generating API documentation with DO_COVERAGE")
|
||||
endif()
|
||||
|
||||
# {{{ Endianness
|
||||
include(TestBigEndian)
|
||||
|
@ -37,18 +40,26 @@ a_find_program(GIT_EXECUTABLE git FALSE)
|
|||
a_find_program(ASCIIDOC_EXECUTABLE asciidoc FALSE)
|
||||
a_find_program(XMLTO_EXECUTABLE xmlto FALSE)
|
||||
a_find_program(GZIP_EXECUTABLE gzip FALSE)
|
||||
# lua documentation
|
||||
a_find_program(LDOC_EXECUTABLE ldoc FALSE)
|
||||
if(NOT LDOC_EXECUTABLE)
|
||||
# Lua documentation
|
||||
if(GENERATE_DOC)
|
||||
a_find_program(LDOC_EXECUTABLE ldoc FALSE)
|
||||
if(NOT LDOC_EXECUTABLE)
|
||||
a_find_program(LDOC_EXECUTABLE ldoc.lua FALSE)
|
||||
endif()
|
||||
if(LDOC_EXECUTABLE)
|
||||
endif()
|
||||
if(LDOC_EXECUTABLE)
|
||||
execute_process(COMMAND sh -c "${LDOC_EXECUTABLE} --sadly-ldoc-has-no-version-option 2>&1 | grep ' vs 1.4.5'"
|
||||
OUTPUT_VARIABLE LDOC_VERSION_RESULT)
|
||||
if(NOT LDOC_VERSION_RESULT STREQUAL "")
|
||||
message(WARNING "Ignoring LDoc, because version 1.4.5 is known to be broken")
|
||||
unset(LDOC_EXECUTABLE CACHE)
|
||||
endif()
|
||||
endif()
|
||||
if(NOT LDOC_EXECUTABLE)
|
||||
message(STATUS "Not generating API documentation. Missing: ldoc.")
|
||||
set(GENERATE_DOC OFF)
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Not generating API documentation.")
|
||||
endif()
|
||||
# theme graphics
|
||||
a_find_program(CONVERT_EXECUTABLE convert TRUE)
|
||||
|
@ -75,13 +86,6 @@ if(GENERATE_MANPAGES)
|
|||
set(GENERATE_MANPAGES OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(GENERATE_DOC)
|
||||
if(NOT LDOC_EXECUTABLE)
|
||||
message(STATUS "Not generating API documentation. Missing: ldoc")
|
||||
set(GENERATE_DOC OFF)
|
||||
endif()
|
||||
endif()
|
||||
# }}}
|
||||
|
||||
# {{{ Version stamp
|
||||
|
@ -318,7 +322,6 @@ set(AWESOME_ICON_PATH ${AWESOME_DATA_PATH}/icons)
|
|||
set(AWESOME_THEMES_PATH ${AWESOME_DATA_PATH}/themes)
|
||||
# }}}
|
||||
|
||||
|
||||
if(GENERATE_DOC)
|
||||
# Load the common documentation
|
||||
include(docs/load_ldoc.cmake)
|
||||
|
@ -333,19 +336,25 @@ if(GENERATE_DOC)
|
|||
endif()
|
||||
|
||||
# {{{ Configure files
|
||||
file(GLOB awesome_c_configure_files RELATIVE ${SOURCE_DIR}
|
||||
file(GLOB awesome_base_c_configure_files RELATIVE ${SOURCE_DIR}
|
||||
${SOURCE_DIR}/*.c
|
||||
${SOURCE_DIR}/*.h
|
||||
${SOURCE_DIR}/*.h)
|
||||
|
||||
file(GLOB awesome_c_configure_files RELATIVE ${SOURCE_DIR}
|
||||
${SOURCE_DIR}/common/*.c
|
||||
${SOURCE_DIR}/common/*.h
|
||||
${SOURCE_DIR}/objects/*.c
|
||||
${SOURCE_DIR}/objects/*.h)
|
||||
|
||||
file(GLOB_RECURSE awesome_lua_configure_files RELATIVE ${SOURCE_DIR}
|
||||
${SOURCE_DIR}/lib/*.lua
|
||||
${SOURCE_DIR}/lib/*.lua)
|
||||
|
||||
file(GLOB_RECURSE awesome_theme_configure_files RELATIVE ${SOURCE_DIR}
|
||||
${SOURCE_DIR}/themes/*/*.lua)
|
||||
|
||||
set(AWESOME_CONFIGURE_FILES
|
||||
${awesome_c_configure_files}
|
||||
${awesome_lua_configure_files}
|
||||
${awesome_base_c_configure_files}
|
||||
${awesome_theme_configure_files}
|
||||
config.h
|
||||
docs/config.ld
|
||||
awesome-version-internal.h)
|
||||
|
@ -356,6 +365,33 @@ foreach(file ${AWESOME_CONFIGURE_FILES})
|
|||
ESCAPE_QUOTES
|
||||
@ONLY)
|
||||
endforeach()
|
||||
|
||||
set(AWESOME_CONFIGURE_COPYONLY_WITHCOV_FILES
|
||||
${awesome_c_configure_files}
|
||||
${awesome_lua_configure_files}
|
||||
)
|
||||
|
||||
if(DO_COVERAGE)
|
||||
foreach(file ${AWESOME_CONFIGURE_COPYONLY_WITHCOV_FILES})
|
||||
configure_file(${SOURCE_DIR}/${file}
|
||||
${BUILD_DIR}/${file}
|
||||
COPYONLY)
|
||||
endforeach()
|
||||
|
||||
# There is no way to avoid that one
|
||||
configure_file(${SOURCE_DIR}/lib/awful/util.lua
|
||||
${BUILD_DIR}/lib/awful/util.lua
|
||||
ESCAPE_QUOTES
|
||||
@ONLY)
|
||||
else()
|
||||
foreach(file ${AWESOME_CONFIGURE_COPYONLY_WITHCOV_FILES})
|
||||
configure_file(${SOURCE_DIR}/${file}
|
||||
${BUILD_DIR}/${file}
|
||||
ESCAPE_QUOTES
|
||||
@ONLY)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
#}}}
|
||||
|
||||
# {{{ Generate some aggregated documentation from lua script
|
||||
|
@ -391,14 +427,4 @@ foreach(file ${AWESOME_ADDITIONAL_FILES})
|
|||
endforeach()
|
||||
#}}}
|
||||
|
||||
# The examples coverage need to be done again after the configure_file has
|
||||
# inserted the additional code. Otherwise, the result will be off, rendering
|
||||
# the coverage useless as a tool to track untested code.
|
||||
if(GENERATE_DOC AND DO_COVERAGE)
|
||||
message(STATUS "Running tests again with coverage")
|
||||
set(USE_LCOV 1)
|
||||
|
||||
include(tests/examples/CMakeLists.txt)
|
||||
endif()
|
||||
|
||||
# vim: filetype=cmake:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80:foldmethod=marker
|
||||
|
|
|
@ -200,13 +200,13 @@ end
|
|||
--- Get the path to the directory where themes are installed.
|
||||
-- @return A string with the requested path with a slash at the end.
|
||||
function util.get_themes_dir()
|
||||
return "@AWESOME_THEMES_PATH@" .. "/"
|
||||
return (os.getenv('AWESOME_THEMES_PATH') or "@AWESOME_THEMES_PATH@") .. "/"
|
||||
end
|
||||
|
||||
--- Get the path to the directory where our icons are installed.
|
||||
-- @return A string with the requested path with a slash at the end.
|
||||
function util.get_awesome_icon_dir()
|
||||
return "@AWESOME_ICON_PATH@" .. "/"
|
||||
return (os.getenv('AWESOME_ICON_PATH') or "@AWESOME_ICON_PATH@") .. "/"
|
||||
end
|
||||
|
||||
--- Get the user's config or cache dir.
|
||||
|
|
|
@ -8,8 +8,8 @@ local string = string
|
|||
local icon_theme = require("menubar.icon_theme")
|
||||
|
||||
local base_directories = {
|
||||
os.getenv("PWD") .. "/spec/menubar/icons",
|
||||
os.getenv("PWD") .. "/icons"
|
||||
(os.getenv("SOURCE_DIRECTORY") or '.') .. "/spec/menubar/icons",
|
||||
(os.getenv("SOURCE_DIRECTORY") or '.') .. "/icons"
|
||||
}
|
||||
|
||||
describe("menubar.icon_theme find_icon_path", function()
|
||||
|
|
|
@ -14,20 +14,45 @@ cmake_minimum_required(VERSION 3.0.0)
|
|||
# Get and update the LUA_PATH so the scripts can be executed without Awesome.
|
||||
execute_process(COMMAND lua -e print\(package.path\) OUTPUT_VARIABLE "LUA_PATH_")
|
||||
|
||||
# Make sure the system can be called from the test directory
|
||||
if(NOT SOURCE_DIR AND ${CMAKE_CURRENT_SOURCE_DIR} MATCHES "/tests/examples")
|
||||
get_filename_component(TOP_SOURCE_DIR
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../.." ABSOLUTE)
|
||||
# Used by .luacov.
|
||||
set(ENV{SOURCE_DIRECTORY} ${TOP_SOURCE_DIR})
|
||||
else()
|
||||
set(TOP_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
||||
endif()
|
||||
|
||||
if (DEFINED ENV{DO_COVERAGE} AND NOT $ENV{DO_COVERAGE} STREQUAL "0")
|
||||
execute_process(
|
||||
COMMAND lua -e "require('luacov.runner')('${TOP_SOURCE_DIR}/.luacov')"
|
||||
RESULT_VARIABLE TEST_RESULT
|
||||
ERROR_VARIABLE TEST_ERROR
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
if (TEST_RESULT OR NOT TEST_ERROR STREQUAL "")
|
||||
message(${TEST_ERROR})
|
||||
message(FATAL_ERROR "Failed to run luacov.runner.")
|
||||
endif()
|
||||
set(LUA_COV_RUNNER lua "-erequire('luacov.runner')('${TOP_SOURCE_DIR}/.luacov')")
|
||||
else()
|
||||
set(LUA_COV_RUNNER lua)
|
||||
endif()
|
||||
|
||||
# Add the main awesome lua libraries.
|
||||
set(LUA_PATH2_ "\
|
||||
${CMAKE_SOURCE_DIR}/lib/?.lua;\
|
||||
${CMAKE_SOURCE_DIR}/lib/?/init.lua;\
|
||||
${CMAKE_SOURCE_DIR}/lib/?;\
|
||||
${CMAKE_SOURCE_DIR}/themes/?.lua;\
|
||||
${CMAKE_SOURCE_DIR}/themes/?;"
|
||||
${TOP_SOURCE_DIR}/lib/?.lua;\
|
||||
${TOP_SOURCE_DIR}/lib/?/init.lua;\
|
||||
${TOP_SOURCE_DIR}/lib/?;\
|
||||
${TOP_SOURCE_DIR}/themes/?.lua;\
|
||||
${TOP_SOURCE_DIR}/themes/?;"
|
||||
)
|
||||
|
||||
# Add the C API shims.
|
||||
set(LUA_PATH3_ "\
|
||||
${CMAKE_SOURCE_DIR}/tests/examples/shims/?.lua;\
|
||||
${CMAKE_SOURCE_DIR}/tests/examples/shims/?/init.lua;\
|
||||
${CMAKE_SOURCE_DIR}/tests/examples/shims/?;"
|
||||
${TOP_SOURCE_DIR}/tests/examples/shims/?.lua;\
|
||||
${TOP_SOURCE_DIR}/tests/examples/shims/?/init.lua;\
|
||||
${TOP_SOURCE_DIR}/tests/examples/shims/?;"
|
||||
)
|
||||
|
||||
# Done in 3 variables to avoid CMake from implicitly converting into a list.
|
||||
|
@ -133,7 +158,7 @@ endfunction()
|
|||
# Get the namespace of a file.
|
||||
function(get_namespace result_variable file)
|
||||
get_filename_component(path "${file}" DIRECTORY)
|
||||
string(LENGTH "${SOURCE_DIR}/tests/examples" prefix_length)
|
||||
string(LENGTH "${TOP_SOURCE_DIR}/tests/examples" prefix_length)
|
||||
string(REPLACE "/" "_" namespace "${path}")
|
||||
string(SUBSTRING "${namespace}" "${prefix_length}" -1 namespace)
|
||||
|
||||
|
@ -148,24 +173,23 @@ function(run_test test_path namespace escaped_content)
|
|||
get_filename_component(${test_path} TEST_FILE_NAME NAME)
|
||||
set(IMAGE_PATH "${IMAGE_DIR}/AUTOGEN${namespace}_${TEST_FILE_NAME}")
|
||||
|
||||
# Use the example testing as coverage source.
|
||||
if (USE_LCOV)
|
||||
set(LCOV_PATH ${SOURCE_DIR}/.luacov)
|
||||
endif()
|
||||
|
||||
# Execute the script, leave the image extension decision to the test.
|
||||
# SVG is preferred, but PNG is better suited for some tests, like bitmap
|
||||
# patterns.
|
||||
execute_process(
|
||||
COMMAND lua ${template} ${test_path} ${IMAGE_PATH} ${LCOV_PATH}
|
||||
COMMAND ${LUA_COV_RUNNER} ${template} ${test_path} ${IMAGE_PATH}
|
||||
RESULT_VARIABLE TEST_RESULT
|
||||
OUTPUT_VARIABLE TEST_OUTPUT
|
||||
ERROR_VARIABLE TEST_ERROR
|
||||
)
|
||||
|
||||
# If there is something on stderr, exit.
|
||||
if (TEST_RESULT OR NOT TEST_ERROR STREQUAL "")
|
||||
message("Result: ${TEST_RESULT}")
|
||||
if (NOT TEST_OUTPUT STREQUAL "")
|
||||
message("Output: ${TEST_OUTPUT}")
|
||||
endif()
|
||||
if (NOT TEST_ERROR STREQUAL "")
|
||||
message("${TEST_OUTPUT}")
|
||||
message("${TEST_ERROR}")
|
||||
message("Error: ${TEST_ERROR}")
|
||||
endif()
|
||||
if (STRICT_TESTS)
|
||||
message(FATAL_ERROR ${test_path} " An example test failed, aborting.")
|
||||
endif()
|
||||
|
@ -231,12 +255,12 @@ endfunction()
|
|||
|
||||
# Find and run all test files.
|
||||
file(GLOB_RECURSE test_files LIST_DIRECTORIES false
|
||||
"${SOURCE_DIR}/tests/examples/*.lua")
|
||||
"${TOP_SOURCE_DIR}/tests/examples/*.lua")
|
||||
foreach(file ${test_files})
|
||||
if ((NOT "${file}" MATCHES ".*/shims/.*")
|
||||
AND (NOT "${file}" MATCHES ".*/template.lua"))
|
||||
|
||||
file(RELATIVE_PATH relative_file "${SOURCE_DIR}" "${file}")
|
||||
file(RELATIVE_PATH relative_file "${TOP_SOURCE_DIR}" "${file}")
|
||||
message(STATUS "Running ${relative_file}...")
|
||||
|
||||
# Get the file name without the extension.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
return function(_, _, luacovpath)
|
||||
return function(_, _)
|
||||
|
||||
-- Set the global shims
|
||||
-- luacheck: globals awesome root tag screen client mouse drawin button
|
||||
|
@ -14,11 +14,6 @@ return function(_, _, luacovpath)
|
|||
-- Force luacheck to be silent about setting those as unused globals
|
||||
assert(awesome and root and tag and screen and client and mouse)
|
||||
|
||||
-- If luacov is available, use it. Else, do nothing.
|
||||
pcall(function()
|
||||
require("luacov.runner")(luacovpath)
|
||||
end)
|
||||
|
||||
-- Silence debug warnings
|
||||
require("gears.debug").print_warning = function() end
|
||||
end
|
||||
|
|
32
tests/run.sh
32
tests/run.sh
|
@ -22,8 +22,8 @@ fi
|
|||
|
||||
# Change to file's dir (POSIXly).
|
||||
cd -P -- "$(dirname -- "$0")"
|
||||
this_dir=$PWD
|
||||
source_dir="$PWD/.."
|
||||
this_dir="$PWD"
|
||||
source_dir="${this_dir%/*}"
|
||||
|
||||
# Either the build dir is passed in $CMAKE_BINARY_DIR or we guess based on $PWD
|
||||
build_dir="$CMAKE_BINARY_DIR"
|
||||
|
@ -59,7 +59,6 @@ if ! [ -x "$AWESOME" ]; then
|
|||
echo "$AWESOME is not executable." >&2
|
||||
exit 1
|
||||
fi
|
||||
RC_FILE=$build_dir/awesomerc.lua
|
||||
AWESOME_CLIENT="$source_dir/utils/awesome-client"
|
||||
D=:5
|
||||
SIZE="${TESTS_SCREEN_SIZE:-1024x768}"
|
||||
|
@ -90,6 +89,9 @@ cleanup() {
|
|||
for p in $awesome_pid $xserver_pid; do
|
||||
kill -TERM "$p" 2>/dev/null || true
|
||||
done
|
||||
if [ -n "$DO_COVERAGE" ] && [ "$DO_COVERAGE" != 0 ]; then
|
||||
mv "$RC_FILE.coverage.bak" "$RC_FILE"
|
||||
fi
|
||||
rm -rf "$tmp_files" || true
|
||||
}
|
||||
trap "cleanup" 0 2 3 15
|
||||
|
@ -160,26 +162,22 @@ wait_until_success "setup xrdb" "printf 'Xft.dpi: 96
|
|||
# Use a separate D-Bus session; sets $DBUS_SESSION_BUS_PID.
|
||||
eval "$(DISPLAY="$D" dbus-launch --sh-syntax --exit-with-session)"
|
||||
|
||||
# Not in Travis?
|
||||
if [ "$CI" != true ]; then
|
||||
# Prepare a config file pointing to a working theme
|
||||
# Handle old filename of config files (useful for git-bisect).
|
||||
if [ -f "$source_dir/awesomerc.lua.in" ]; then
|
||||
SED_IN=.in
|
||||
fi
|
||||
RC_FILE=$tmp_files/awesomerc.lua
|
||||
THEME_FILE=$tmp_files/theme.lua
|
||||
sed -e "s:.*beautiful.init(.*default/theme.lua.*:beautiful.init('$THEME_FILE'):" "$source_dir/awesomerc.lua$SED_IN" > "$RC_FILE"
|
||||
sed -e "s:@AWESOME_THEMES_PATH@/default/titlebar:$build_dir/themes/default/titlebar:" \
|
||||
-e "s:@AWESOME_THEMES_PATH@:$source_dir/themes/:" \
|
||||
-e "s:@AWESOME_ICON_PATH@:$source_dir/icons:" "$source_dir/themes/default/theme.lua$SED_IN" > "$THEME_FILE"
|
||||
RC_FILE=${source_dir}/awesomerc.lua
|
||||
export AWESOME_THEMES_PATH="$source_dir/themes"
|
||||
export AWESOME_ICON_PATH="$source_dir/icons"
|
||||
|
||||
# Inject coverage runner to RC file, which will be restored on exit/cleanup.
|
||||
if [ -n "$DO_COVERAGE" ] && [ "$DO_COVERAGE" != 0 ]; then
|
||||
cp -a "$RC_FILE" "$RC_FILE.coverage.bak"
|
||||
sed -i "1 s~^~require('luacov.runner')('$source_dir/.luacov'); \0~" "$RC_FILE"
|
||||
fi
|
||||
|
||||
# Start awesome.
|
||||
start_awesome() {
|
||||
cd "$build_dir"
|
||||
# Kill awesome after $timeout_stale seconds (e.g. for errors during test setup).
|
||||
DISPLAY="$D" timeout "$timeout_stale" "$AWESOME" -c "$RC_FILE" "${awesome_options[@]}" > "$awesome_log" 2>&1 &
|
||||
# SOURCE_DIRECTORY is used by .luacov.
|
||||
DISPLAY="$D" SOURCE_DIRECTORY="$source_dir" timeout "$timeout_stale" "$AWESOME" -c "$RC_FILE" "${awesome_options[@]}" > "$awesome_log" 2>&1 &
|
||||
awesome_pid=$!
|
||||
cd - >/dev/null
|
||||
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
|
||||
local theme = {}
|
||||
|
||||
local util = require('awful.util')
|
||||
local themes_path = util.get_themes_dir()
|
||||
local icon_path = util.get_awesome_icon_dir()
|
||||
|
||||
theme.font = "sans 8"
|
||||
|
||||
theme.bg_normal = "#222222"
|
||||
|
@ -35,13 +39,13 @@ theme.border_marked = "#91231c"
|
|||
--theme.taglist_bg_focus = "#ff0000"
|
||||
|
||||
-- Display the taglist squares
|
||||
theme.taglist_squares_sel = "@AWESOME_THEMES_PATH@/default/taglist/squarefw.png"
|
||||
theme.taglist_squares_unsel = "@AWESOME_THEMES_PATH@/default/taglist/squarew.png"
|
||||
theme.taglist_squares_sel = themes_path.."default/taglist/squarefw.png"
|
||||
theme.taglist_squares_unsel = themes_path.."default/taglist/squarew.png"
|
||||
|
||||
-- Variables set for theming the menu:
|
||||
-- menu_[bg|fg]_[normal|focus]
|
||||
-- menu_[border_color|border_width]
|
||||
theme.menu_submenu_icon = "@AWESOME_THEMES_PATH@/default/submenu.png"
|
||||
theme.menu_submenu_icon = themes_path.."default/submenu.png"
|
||||
theme.menu_height = 15
|
||||
theme.menu_width = 100
|
||||
|
||||
|
@ -51,53 +55,53 @@ theme.menu_width = 100
|
|||
--theme.bg_widget = "#cc0000"
|
||||
|
||||
-- Define the image to load
|
||||
theme.titlebar_close_button_normal = "@AWESOME_THEMES_PATH@/default/titlebar/close_normal.png"
|
||||
theme.titlebar_close_button_focus = "@AWESOME_THEMES_PATH@/default/titlebar/close_focus.png"
|
||||
theme.titlebar_close_button_normal = themes_path.."default/titlebar/close_normal.png"
|
||||
theme.titlebar_close_button_focus = themes_path.."default/titlebar/close_focus.png"
|
||||
|
||||
theme.titlebar_minimize_button_normal = "@AWESOME_THEMES_PATH@/default/titlebar/minimize_normal.png"
|
||||
theme.titlebar_minimize_button_focus = "@AWESOME_THEMES_PATH@/default/titlebar/minimize_focus.png"
|
||||
theme.titlebar_minimize_button_normal = themes_path.."default/titlebar/minimize_normal.png"
|
||||
theme.titlebar_minimize_button_focus = themes_path.."default/titlebar/minimize_focus.png"
|
||||
|
||||
theme.titlebar_ontop_button_normal_inactive = "@AWESOME_THEMES_PATH@/default/titlebar/ontop_normal_inactive.png"
|
||||
theme.titlebar_ontop_button_focus_inactive = "@AWESOME_THEMES_PATH@/default/titlebar/ontop_focus_inactive.png"
|
||||
theme.titlebar_ontop_button_normal_active = "@AWESOME_THEMES_PATH@/default/titlebar/ontop_normal_active.png"
|
||||
theme.titlebar_ontop_button_focus_active = "@AWESOME_THEMES_PATH@/default/titlebar/ontop_focus_active.png"
|
||||
theme.titlebar_ontop_button_normal_inactive = themes_path.."default/titlebar/ontop_normal_inactive.png"
|
||||
theme.titlebar_ontop_button_focus_inactive = themes_path.."default/titlebar/ontop_focus_inactive.png"
|
||||
theme.titlebar_ontop_button_normal_active = themes_path.."default/titlebar/ontop_normal_active.png"
|
||||
theme.titlebar_ontop_button_focus_active = themes_path.."default/titlebar/ontop_focus_active.png"
|
||||
|
||||
theme.titlebar_sticky_button_normal_inactive = "@AWESOME_THEMES_PATH@/default/titlebar/sticky_normal_inactive.png"
|
||||
theme.titlebar_sticky_button_focus_inactive = "@AWESOME_THEMES_PATH@/default/titlebar/sticky_focus_inactive.png"
|
||||
theme.titlebar_sticky_button_normal_active = "@AWESOME_THEMES_PATH@/default/titlebar/sticky_normal_active.png"
|
||||
theme.titlebar_sticky_button_focus_active = "@AWESOME_THEMES_PATH@/default/titlebar/sticky_focus_active.png"
|
||||
theme.titlebar_sticky_button_normal_inactive = themes_path.."default/titlebar/sticky_normal_inactive.png"
|
||||
theme.titlebar_sticky_button_focus_inactive = themes_path.."default/titlebar/sticky_focus_inactive.png"
|
||||
theme.titlebar_sticky_button_normal_active = themes_path.."default/titlebar/sticky_normal_active.png"
|
||||
theme.titlebar_sticky_button_focus_active = themes_path.."default/titlebar/sticky_focus_active.png"
|
||||
|
||||
theme.titlebar_floating_button_normal_inactive = "@AWESOME_THEMES_PATH@/default/titlebar/floating_normal_inactive.png"
|
||||
theme.titlebar_floating_button_focus_inactive = "@AWESOME_THEMES_PATH@/default/titlebar/floating_focus_inactive.png"
|
||||
theme.titlebar_floating_button_normal_active = "@AWESOME_THEMES_PATH@/default/titlebar/floating_normal_active.png"
|
||||
theme.titlebar_floating_button_focus_active = "@AWESOME_THEMES_PATH@/default/titlebar/floating_focus_active.png"
|
||||
theme.titlebar_floating_button_normal_inactive = themes_path.."default/titlebar/floating_normal_inactive.png"
|
||||
theme.titlebar_floating_button_focus_inactive = themes_path.."default/titlebar/floating_focus_inactive.png"
|
||||
theme.titlebar_floating_button_normal_active = themes_path.."default/titlebar/floating_normal_active.png"
|
||||
theme.titlebar_floating_button_focus_active = themes_path.."default/titlebar/floating_focus_active.png"
|
||||
|
||||
theme.titlebar_maximized_button_normal_inactive = "@AWESOME_THEMES_PATH@/default/titlebar/maximized_normal_inactive.png"
|
||||
theme.titlebar_maximized_button_focus_inactive = "@AWESOME_THEMES_PATH@/default/titlebar/maximized_focus_inactive.png"
|
||||
theme.titlebar_maximized_button_normal_active = "@AWESOME_THEMES_PATH@/default/titlebar/maximized_normal_active.png"
|
||||
theme.titlebar_maximized_button_focus_active = "@AWESOME_THEMES_PATH@/default/titlebar/maximized_focus_active.png"
|
||||
theme.titlebar_maximized_button_normal_inactive = themes_path.."default/titlebar/maximized_normal_inactive.png"
|
||||
theme.titlebar_maximized_button_focus_inactive = themes_path.."default/titlebar/maximized_focus_inactive.png"
|
||||
theme.titlebar_maximized_button_normal_active = themes_path.."default/titlebar/maximized_normal_active.png"
|
||||
theme.titlebar_maximized_button_focus_active = themes_path.."default/titlebar/maximized_focus_active.png"
|
||||
|
||||
theme.wallpaper = "@AWESOME_THEMES_PATH@/default/background.png"
|
||||
theme.wallpaper = themes_path.."default/background.png"
|
||||
|
||||
-- You can use your own layout icons like this:
|
||||
theme.layout_fairh = "@AWESOME_THEMES_PATH@/default/layouts/fairhw.png"
|
||||
theme.layout_fairv = "@AWESOME_THEMES_PATH@/default/layouts/fairvw.png"
|
||||
theme.layout_floating = "@AWESOME_THEMES_PATH@/default/layouts/floatingw.png"
|
||||
theme.layout_magnifier = "@AWESOME_THEMES_PATH@/default/layouts/magnifierw.png"
|
||||
theme.layout_max = "@AWESOME_THEMES_PATH@/default/layouts/maxw.png"
|
||||
theme.layout_fullscreen = "@AWESOME_THEMES_PATH@/default/layouts/fullscreenw.png"
|
||||
theme.layout_tilebottom = "@AWESOME_THEMES_PATH@/default/layouts/tilebottomw.png"
|
||||
theme.layout_tileleft = "@AWESOME_THEMES_PATH@/default/layouts/tileleftw.png"
|
||||
theme.layout_tile = "@AWESOME_THEMES_PATH@/default/layouts/tilew.png"
|
||||
theme.layout_tiletop = "@AWESOME_THEMES_PATH@/default/layouts/tiletopw.png"
|
||||
theme.layout_spiral = "@AWESOME_THEMES_PATH@/default/layouts/spiralw.png"
|
||||
theme.layout_dwindle = "@AWESOME_THEMES_PATH@/default/layouts/dwindlew.png"
|
||||
theme.layout_cornernw = "@AWESOME_THEMES_PATH@/default/layouts/cornernww.png"
|
||||
theme.layout_cornerne = "@AWESOME_THEMES_PATH@/default/layouts/cornernew.png"
|
||||
theme.layout_cornersw = "@AWESOME_THEMES_PATH@/default/layouts/cornersww.png"
|
||||
theme.layout_cornerse = "@AWESOME_THEMES_PATH@/default/layouts/cornersew.png"
|
||||
theme.layout_fairh = themes_path.."default/layouts/fairhw.png"
|
||||
theme.layout_fairv = themes_path.."default/layouts/fairvw.png"
|
||||
theme.layout_floating = themes_path.."default/layouts/floatingw.png"
|
||||
theme.layout_magnifier = themes_path.."default/layouts/magnifierw.png"
|
||||
theme.layout_max = themes_path.."default/layouts/maxw.png"
|
||||
theme.layout_fullscreen = themes_path.."default/layouts/fullscreenw.png"
|
||||
theme.layout_tilebottom = themes_path.."default/layouts/tilebottomw.png"
|
||||
theme.layout_tileleft = themes_path.."default/layouts/tileleftw.png"
|
||||
theme.layout_tile = themes_path.."default/layouts/tilew.png"
|
||||
theme.layout_tiletop = themes_path.."default/layouts/tiletopw.png"
|
||||
theme.layout_spiral = themes_path.."default/layouts/spiralw.png"
|
||||
theme.layout_dwindle = themes_path.."default/layouts/dwindlew.png"
|
||||
theme.layout_cornernw = themes_path.."default/layouts/cornernww.png"
|
||||
theme.layout_cornerne = themes_path.."default/layouts/cornernew.png"
|
||||
theme.layout_cornersw = themes_path.."default/layouts/cornersww.png"
|
||||
theme.layout_cornerse = themes_path.."default/layouts/cornersew.png"
|
||||
|
||||
theme.awesome_icon = "@AWESOME_ICON_PATH@/awesome16.png"
|
||||
theme.awesome_icon = icon_path.."awesome16.png"
|
||||
|
||||
-- Define the icon theme for application icons. If not set then the icons
|
||||
-- from /usr/share/icons and /usr/share/icons/hicolor will be used.
|
||||
|
|
Loading…
Reference in New Issue