Merge branch 'examples_tests_during_build' of https://github.com/psychon/awesome

This commit is contained in:
Uli Schlachter 2018-08-03 14:30:25 +02:00
commit 15a508f022
16 changed files with 102 additions and 10 deletions

View File

@ -188,6 +188,14 @@ function(run_test test_path namespace escaped_content)
set(DOC_BLOCK_PREFIX "@usage") set(DOC_BLOCK_PREFIX "@usage")
endif() endif()
# Does the text generate text output?
if(tmp_content MATCHES "--DOC_GEN_OUTPUT")
# The expected output is next to the .lua file in a .output.txt file
string(REPLACE ".lua" ".output.txt" expected_output_path ${test_path})
else()
set(expected_output_path "/dev/null")
endif()
# Get the file name without the extension. # Get the file name without the extension.
get_filename_component(${test_path} TEST_FILE_NAME NAME) get_filename_component(${test_path} TEST_FILE_NAME NAME)
set(IMAGE_PATH "${IMAGE_DIR}/AUTOGEN${namespace}_${TEST_FILE_NAME}") set(IMAGE_PATH "${IMAGE_DIR}/AUTOGEN${namespace}_${TEST_FILE_NAME}")
@ -197,12 +205,12 @@ function(run_test test_path namespace escaped_content)
message(STATUS "Running ${rel_test_path}…") message(STATUS "Running ${rel_test_path}…")
execute_process( execute_process(
COMMAND ${LUA_COV_RUNNER} ${template} ${test_path} ${IMAGE_PATH} COMMAND "${TOP_SOURCE_DIR}/tests/examples/runner.sh" "${expected_output_path}" ${LUA_COV_RUNNER} ${template} ${test_path} ${IMAGE_PATH}
RESULT_VARIABLE TEST_RESULT RESULT_VARIABLE TEST_RESULT
OUTPUT_VARIABLE TEST_OUTPUT OUTPUT_VARIABLE TEST_OUTPUT
ERROR_VARIABLE TEST_ERROR ERROR_VARIABLE TEST_ERROR
) )
if (TEST_RESULT OR NOT TEST_ERROR STREQUAL "") if (TEST_RESULT OR NOT TEST_OUTPUT STREQUAL "" OR NOT TEST_ERROR STREQUAL "")
message("Result: ${TEST_RESULT}") message("Result: ${TEST_RESULT}")
if (NOT TEST_OUTPUT STREQUAL "") if (NOT TEST_OUTPUT STREQUAL "")
message("Output: ${TEST_OUTPUT}") message("Output: ${TEST_OUTPUT}")
@ -232,19 +240,19 @@ function(run_test test_path namespace escaped_content)
set(OUTPUT_IMAGE_PATH "") set(OUTPUT_IMAGE_PATH "")
endif() endif()
# Does the text generate text output?
# If there is an output, assume it is relevant and add it to the # If there is an output, assume it is relevant and add it to the
# documentation under the image. # documentation under the image.
if(NOT ${TEST_OUTPUT} STREQUAL "") if(tmp_content MATCHES "--DOC_GEN_OUTPUT")
if(NOT tmp_content MATCHES "--DOC_GEN_OUTPUT") file(READ "${expected_output_path}" expected_output)
message(FATAL_ERROR "Unexpected output from ${test_path}: ${TEST_OUTPUT}")
endif()
set(TEST_DOC_CONTENT set(TEST_DOC_CONTENT
"${TEST_DOC_CONTENT}\n${DOC_LINE_PREFIX}\n${DOC_LINE_PREFIX}**Usage example output**:\n${DOC_LINE_PREFIX}" "${TEST_DOC_CONTENT}\n${DOC_LINE_PREFIX}\n${DOC_LINE_PREFIX}**Usage example output**:\n${DOC_LINE_PREFIX}"
) )
# Markdown requires an empty line before and after, and 4 spaces. # Markdown requires an empty line before and after, and 4 spaces.
escape_string( escape_string(
"\n${TEST_OUTPUT}" "\n${expected_output}"
"${TEST_DOC_CONTENT}" TEST_DOC_CONTENT " " "${TEST_DOC_CONTENT}" TEST_DOC_CONTENT " "
) )
set(TEST_DOC_CONTENT "${TEST_DOC_CONTENT}\n${DOC_LINE_PREFIX}") set(TEST_DOC_CONTENT "${TEST_DOC_CONTENT}\n${DOC_LINE_PREFIX}")

View File

@ -0,0 +1 @@
235

View File

@ -0,0 +1 @@
Closest corner: top_left

View File

@ -0,0 +1,2 @@
Before: x=-30, y=-30, width=100, height=100
After: x=10, y=10, width=100, height=100

51
tests/examples/runner.sh Executable file
View File

@ -0,0 +1,51 @@
#!/bin/sh
# Todo: Give this shell script a sane calling convention. Right now it has a
# file containing the expected output as first argument and just executes
# everything else.
set -ue
# Cleanup on errors / aborting
cleanup() {
rm -rf "$file_stderr" "$file_stdout" || true
}
trap "cleanup" 0 2 3 15
file_stdout=$(mktemp)
file_stderr=$(mktemp)
expected_output=$1
shift
# Run the command that we were given
exit_code=0
"$@" > ${file_stdout} 2> ${file_stderr} || exit_code=$?
# If exit code is not zero or anything was produced on stderr...
if [ $exit_code -ne 0 -o -s "${file_stderr}" ]
then
echo "Result: ${exit_code}"
if [ -s "${file_stdout}" ]
then
echo "Output:"
cat "${file_stdout}"
fi
if [ -s "${file_stderr}" ]
then
echo "Error:"
cat "${file_stderr}"
fi
exit 1
fi
# Check if we got the output we wanted
if ! cmp --silent "${file_stdout}" "${expected_output}"
then
echo "Expected text from ${expected_output}, but got:"
diff -u "${expected_output}" "${file_stdout}" || true
exit 1
fi
exit 0
# vim: filetype=sh:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80

View File

@ -23,7 +23,7 @@ function class:set_foo(value)
end end
function class:method(a, b, c) function class:method(a, b, c)
print("In a mathod", a, b, c) print("In a method", a, b, c)
end end
local o = gears.object { local o = gears.object {

View File

@ -0,0 +1,9 @@
In get foo bar
bar
In set foo 42
In get foo 42
42
In a method 1 2 3
nil
In the connection handler! a cow
a cow

View File

@ -0,0 +1,2 @@
In slot [obj] nil nil nil
In slot [obj] foo bar 42

View File

@ -0,0 +1,6 @@
The position #1 is: a
The position #2 is: b
The position #3 is: c
The position #4 is: d
The position #5 is: e
The position #6 is: f

View File

@ -0,0 +1 @@
l:add_widget_at(new, 1, 4, 1, 1)

View File

@ -0,0 +1 @@
l:extend_column(2)

View File

@ -0,0 +1 @@
l:insert_column(2)

View File

@ -10,8 +10,7 @@ print([[l = wibox.layout {
layout = wibox.layout.grid layout = wibox.layout.grid
} }
l:set_orientation("vertical") -- change to "horizontal" l:set_orientation("vertical") -- change to "horizontal"
l:add(...) l:add(...)]]) --DOC_HIDE
]]) --DOC_HIDE
return --DOC_HIDE return --DOC_HIDE
wibox.widget { wibox.widget {

View File

@ -0,0 +1,8 @@
l = wibox.layout {
forced_num_cols = 2,
forced_num_rows = 2,
homogeneous = true,
layout = wibox.layout.grid
}
l:set_orientation("vertical") -- change to "horizontal"
l:add(...)

View File

@ -0,0 +1 @@
l:remove_widgets_at(1,1)

View File

@ -0,0 +1 @@
l:remove_column(2)