aboutsummaryrefslogtreecommitdiffstats
path: root/README_TESTING.md
diff options
context:
space:
mode:
authorGravatar jan Iversen <jan@casacondor.com>2019-12-24 21:50:04 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-12-27 03:38:05 +0900
commit7198b2efc67224e305948b13f9b2a4aeffc7accf (patch)
tree935fd5953448771adae33a2156121dcf147a4d36 /README_TESTING.md
parentc8a2f680b9e9521eb930c18d41ffd970db92e5a5 (diff)
downloadsubsurface-7198b2efc67224e305948b13f9b2a4aeffc7accf.tar.gz
documentation: updated text for testing.
Update text to reflect how the build works now Signed-off-by: Jan Iversen <jan@casacondor.com>
Diffstat (limited to 'README_TESTING.md')
-rw-r--r--README_TESTING.md79
1 files changed, 45 insertions, 34 deletions
diff --git a/README_TESTING.md b/README_TESTING.md
index a8b96655d..c200bd6fe 100644
--- a/README_TESTING.md
+++ b/README_TESTING.md
@@ -1,27 +1,41 @@
Testing subsurface:
-Right now to test subsurface you need to have the 'cmake' executable
-to compile the source code of the tests and run them.
+Subsurface contains a number of tests to ensure the stability of the product, these tests can be used
+manually as they are in the build process.
-1 - create a folder 'build-tests' on the project root directory
-2 - run cmake ( cmake .. )
-3 - compile the software by invoking make
-4 - run the tests by invoking make test
-(optional 5) if the tests are failing, a better way to see what's
-happening is to run ctest -V , this way the tests will still fail,
-but more verbosely - easier to track them down.
+Making the tests available is automatic, whenever building either desktop or mobile (for desktop)
+the tests are created.
-to create a new test, just implement copy the one provided by
-example in the tests folder and add the last three lines of the CMakeLists.txt file
-adapted to your test.
+The source code for the tests are found in
+- subsurface/tests
+and the executables are (after creation) found in
+- subsurface/build/tests
+or
+- subsurface/build-mobile/tests
-If you have multiple versions of Qt installed, you might get a "plugin missing error", you can fix that by doing
+To run a specific test do as in this example:
+cd subsurface/<build directory>/tests
+./TestTagList
+
+To run the whole suite do:
+cd subsurface/<build directory>/tests
+ctest
+
+To get more verbose (a lot more) do:
+cd subsurface/<build directory>/tests
+ctest -V
+
+hint try "man ctest" or "ctest --help"
+
+If you have multiple versions of Qt installed,
+you might get a "plugin missing error", you can fix that by doing
export QT_QPA_PLATFORM_PLUGIN_PATH=~/Qt/5.13.2/clang_64/plugins
(of course substitute 5.13.2 with your preferred version)
-To create a new test you can do one of the following (information
-provided by Tomaz on IRC):
+We need more tests so please have fun.
+
+if you just want to create a new test case:
1) Create a new private slot on an already created test class
2) Implement the test there, and compare the expected result with the
@@ -35,9 +49,21 @@ testRedCeiling()
QCOMPARE( dive->ceiling->color(), QColor("red"));
}
-3) Run the test case and see result
+3) build the system
+4) Run the test case and see result
+
+if you want to create a new test
-$ make test
+1) amend subsurface/tests/CMakeLists.txt
+1.1) there are 3 places where the test needs to be added
+1.1.1) simplest way is to search for e.g. TestPlannerShared and add your test in a similar way
+2) Create the source files (.h and .cpp all lowercase)
+2.1) simplest way is to copy one of the other test sources
+3) build system
+4) correct any errors
+5) run test
+5.1) subsurface/<build directory>/tests/Test<name>
+6) Fix the test case
If the color is not QColor("red"), when you run the test you will get a
failure. Then you run a command to get a more verbose output and see in
@@ -45,27 +71,16 @@ which part the test fails.
$ ctest -V
-4) Fix the test case
+7) submit PR to get the test merged into the product.
-5) Look at the existing test cases if you run into trouble or need more
+Hint look at the existing test cases if you run into trouble or need more
ideas. E.g. running following command will show the first test cases
written for unit conversions:
-$ git show 019edd065fd1eefd5f705c42bce23255bb5e20ac
-
Also the Qt documentation is good source for more information:
-http://qt-project.org/doc/qt-4.8/qtest.html
http://qt-project.org/doc/qt-5/qtest.html
-6) To create a new test class, copy the last three lines of the CMake,
-and duplicate it with the new class / file.
-
-Each "test" can have N test cases on it (each private slot counts as one
-test) and is executable. When one runs make, these test cases are
-compiled and when running "make test" they will be executed. Of course,
-the test cases can be run manually as well.
-
There are three main test macros that we use, but of course many more
are available (check the Qt documentation):
@@ -76,7 +91,3 @@ QVERIFY2(boolean, "error message on fail")
If expecting a test case to fail, use
QEXPECT_FAIL("", "This test case fails, as it is not yet fully implemented", Continue);
-
-To link libraries, use the following macro:
-
-TARGET_LINK_LIBRARIES(TestCaseName ${QT_LIBRARIES} subsurface_corelib)