[osmium-tool] 18/44: Use cmake script instead of shell for tests (so it will run on Windows).
Sebastiaan Couwenberg
sebastic at moszumanska.debian.org
Tue Jul 21 20:15:55 UTC 2015
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to tag v1.1.0
in repository osmium-tool.
commit 6690b77b641caf839e2ff1671c243ec113ee0aa5
Author: Jochen Topf <jochen at topf.org>
Date: Fri Jun 26 11:49:25 2015 +0200
Use cmake script instead of shell for tests (so it will run on Windows).
Also add tests for the 'cat' and 'fileinfo' subcommands.
---
CMakeLists.txt | 28 ++++++++++++++++++++---
cmake/run_test_compare_output.cmake | 44 +++++++++++++++++++++++++++++++++++++
test/cat/input1.osm | 6 +++++
test/cat/input2.osm | 6 +++++
test/cat/output-cat12.osm | 9 ++++++++
test/cat/output-cat21.osm | 9 ++++++++
test/fileinfo/fi1-result.txt | 27 +++++++++++++++++++++++
test/fileinfo/fi1.osm | 6 +++++
8 files changed, 132 insertions(+), 3 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 84a0bc3..3678b14 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -245,12 +245,19 @@ endif()
#-----------------------------------------------------------------------------
function(check_output _name _command _output)
- add_test(NAME ${_name} COMMAND sh -c "${_command} | cmp --quiet - ${_output}")
+ set(_cmd "${PROJECT_BINARY_DIR}/src/osmium ${_command}")
+ add_test(
+ NAME ${_name}
+ COMMAND ${CMAKE_COMMAND}
+ -Dcmd=${_cmd}
+ -Ddir=${PROJECT_SOURCE_DIR}/test
+ -Dreference=${_output}
+ -P ${CMAKE_SOURCE_DIR}/cmake/run_test_compare_output.cmake
+ )
endfunction()
function(check_time_filter _name _type _from _to _output)
- set(_tdir "${PROJECT_SOURCE_DIR}/test/time-filter")
- check_output(time-filter-${_name} "osmium time-filter --generator=test -f ${_type} ${_tdir}/input.osh ${_from} ${_to}" "${_tdir}/output-${_output}.${_type}")
+ check_output(time-filter-${_name} "time-filter --generator=test -f ${_type} time-filter/input.osh ${_from} ${_to}" "time-filter/output-${_output}.${_type}")
endfunction()
check_time_filter(last osm "" "" last)
@@ -269,6 +276,21 @@ check_time_filter(range-2-3a osh 2015-01-01T02:00:00Z 2015-01-01T03:01:00Z rang
check_time_filter(range-2-4 osh 2015-01-01T02:00:00Z 2015-01-01T04:00:00Z range-2-4)
+function(check_cat _name _in1 _in2 _output)
+ check_output(cat-${_name} "cat --generator=test -f osm cat/${_in1} cat/${_in2}" "cat/${_output}")
+endfunction()
+
+check_cat(cat12 input1.osm input2.osm output-cat12.osm)
+check_cat(cat21 input2.osm input1.osm output-cat21.osm)
+
+
+function(check_fileinfo _name _options _input _output)
+ check_output(fileinfo-${_name} "fileinfo ${_options} fileinfo/${_input}" "fileinfo/${_output}")
+endfunction()
+
+check_fileinfo(fi1 "--extended" fi1.osm fi1-result.txt)
+
+
#-----------------------------------------------------------------------------
include_directories(include)
diff --git a/cmake/run_test_compare_output.cmake b/cmake/run_test_compare_output.cmake
new file mode 100644
index 0000000..2f1f8ff
--- /dev/null
+++ b/cmake/run_test_compare_output.cmake
@@ -0,0 +1,44 @@
+#
+# Runs a test command given in the variable 'cmd' in directory 'dir'.
+# Checks that the return code is 0.
+# Checks that there is nothing on stderr.
+# Compares output on stdout with reference file in variable 'reference'.
+#
+
+if(NOT cmd)
+ message(FATAL_ERROR "Variable 'cmd' not defined")
+endif()
+
+if(NOT dir)
+ message(FATAL_ERROR "Variable 'dir' not defined")
+endif()
+
+if(NOT reference)
+ message(FATAL_ERROR "Variable 'reference' not defined")
+endif()
+
+separate_arguments(cmd)
+
+execute_process(
+ COMMAND ${cmd}
+ WORKING_DIRECTORY ${dir}
+ RESULT_VARIABLE result
+ OUTPUT_VARIABLE stdout
+ ERROR_VARIABLE stderr
+)
+
+if(result)
+ message(SEND_ERROR "Error when calling '${cmd}': ${result}")
+endif()
+
+if(NOT (stderr STREQUAL ""))
+ message(SEND_ERROR "Command tested wrote to stderr: ${_stderr}")
+endif()
+
+file(READ ${dir}/${reference} ref)
+
+if(NOT (ref STREQUAL stdout))
+ file(WRITE "test.stdout" ${stdout})
+ message(SEND_ERROR "Test output does not match '${reference}'. Output is in 'test.stdout'.")
+endif()
+
diff --git a/test/cat/input1.osm b/test/cat/input1.osm
new file mode 100644
index 0000000..8c94b0f
--- /dev/null
+++ b/test/cat/input1.osm
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version="0.6" generator="testdata" upload="false">
+ <node id="1" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
+ <node id="2" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
+ <node id="3" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
+</osm>
diff --git a/test/cat/input2.osm b/test/cat/input2.osm
new file mode 100644
index 0000000..1f6334b
--- /dev/null
+++ b/test/cat/input2.osm
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version="0.6" generator="testdata" upload="false">
+ <node id="4" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
+ <node id="5" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="5" lon="1"/>
+ <node id="6" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="6" lon="1"/>
+</osm>
diff --git a/test/cat/output-cat12.osm b/test/cat/output-cat12.osm
new file mode 100644
index 0000000..c4e62a9
--- /dev/null
+++ b/test/cat/output-cat12.osm
@@ -0,0 +1,9 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version="0.6" generator="test">
+ <node id="1" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
+ <node id="2" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
+ <node id="3" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
+ <node id="4" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
+ <node id="5" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="5" lon="1"/>
+ <node id="6" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="6" lon="1"/>
+</osm>
diff --git a/test/cat/output-cat21.osm b/test/cat/output-cat21.osm
new file mode 100644
index 0000000..107f0b4
--- /dev/null
+++ b/test/cat/output-cat21.osm
@@ -0,0 +1,9 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version="0.6" generator="test">
+ <node id="4" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
+ <node id="5" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="5" lon="1"/>
+ <node id="6" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="6" lon="1"/>
+ <node id="1" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
+ <node id="2" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
+ <node id="3" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
+</osm>
diff --git a/test/fileinfo/fi1-result.txt b/test/fileinfo/fi1-result.txt
new file mode 100644
index 0000000..c85c24a
--- /dev/null
+++ b/test/fileinfo/fi1-result.txt
@@ -0,0 +1,27 @@
+File:
+ Name: fileinfo/fi1.osm
+ Format: XML
+ Compression: none
+ Size: 438
+Header:
+ Bounding boxes:
+ With history: no
+ Options:
+ generator=testdata
+ version=0.6
+Data:
+ Bounding box: (1,1,1,3)
+ Timestamps:
+ First: 2015-01-01T01:00:00Z
+ Last: 2015-01-01T04:00:00Z
+ Objects ordered (by type and id): yes
+ Multiple versions of same object: no
+ CRC32: 7cb270e8
+ Number of changesets: 0
+ Number of nodes: 3
+ Number of ways: 0
+ Number of relations: 0
+ Largest changeset ID: 0
+ Largest node ID: 4
+ Largest way ID: 0
+ Largest relation ID: 0
diff --git a/test/fileinfo/fi1.osm b/test/fileinfo/fi1.osm
new file mode 100644
index 0000000..3a74057
--- /dev/null
+++ b/test/fileinfo/fi1.osm
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version="0.6" generator="testdata" upload="false">
+ <node id="1" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
+ <node id="2" version="1" timestamp="2015-01-01T02:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
+ <node id="4" version="1" timestamp="2015-01-01T04:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
+</osm>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/osmium-tool.git
More information about the Pkg-grass-devel
mailing list