We have a list of Python UI tests that should be reimplemented as cppunit tests:
https://wiki.documentfoundation.org/UiTestsToCppUnittests

I completed my first conversion and thought it might be useful to write about my experience. The conversion commit is here:
https://git.libreoffice.org/core/commit/72186f02c118e9f5602e15c2bac9b3ac19987f93

I started by temporarily undoing the fix for the bug so the crash would reappear and the test would fail: https://git.libreoffice.org/core/commit/9ec2c77046901fdacca77753052b54c81e6bc82c
sw/source/core/text/txtfrm.cxx:

assert(nLen != TextFrameIndex(COMPLETE_STRING));
if (rFrame.IsFollow() && nPos < rFrame.GetOffset())
{
rFrame.ManipOfst( std::max(TextFrameIndex(0), op(rFrame.GetOffset(), nLen)) );
}

I created execute.sh for running the Python UI test:

export PYTHONPATH=/home/tonttu/libreoffice/instdir/program/
export URE_BOOTSTRAP=file:///home/tonttu/libreoffice/instdir/program/fundamentalrc
export SAL_USE_VCLPLUGIN=gen
rm -rf /tmp/libreoffice/4
SRCDIR="${SRCDIR:-$(pwd)}"
python "$SRCDIR"/uitest/test_main.py --debug --soffice=path:"$SRCDIR"/instdir/program/soffice --userdir=file:///tmp/libreoffice/4 --file="$SRCDIR"/sw/qa/uitest/writer_tests7/tdf127652.py

I ran execute.sh while in the core directory and confirmed that the UI test failed.

I copied the test document from sw/qa/uitest/writer_tests7/data to sw/qa/extras/uiwriter/data3

I started creating the cppunit test in sw/qa/extras/uiwriter/uiwriter3.cxx

Command for running the cppunit test:
CPPUNIT_TEST_NAME="testTdf127652" make CppunitTest_sw_uiwriter

I had no idea how to convert the Python methods for moving the cursor, deleting and checking the current page. For figuring things out, I had to do web searches against https://docs.libreoffice.org/ and to grep the code in sw as well as the existing Writer cppunit tests found in sw/qa

For example, hoping for the best I tried grepping 'current page' in sw/, found useful stuff and continued in a similar manner.

For searching I used ripgrep, but you can use whatever you feel comfortable with (like git grep).

Examples with ripgrep, ran in the core directory:

rg --pretty 'DelRight' sw/qa --glob '*.cxx' | less -RK
rg --pretty --ignore-case 'jumpto' sw/qa --glob '*.cxx' | less -RK

Clang-format was not happy with the old skool indentation, so it was fixed with:

clang-format -i sw/qa/extras/uiwriter/uiwriter3.cxx

Ilmari
_______________________________________________
List Name: Libreoffice-qa mailing list
Mail address: Libreoffice-qa@lists.freedesktop.org
Change settings: https://lists.freedesktop.org/mailman/listinfo/libreoffice-qa
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://lists.freedesktop.org/archives/libreoffice-qa/

Reply via email to