MuseScore/mtest
2020-04-13 22:57:19 +02:00
..
biab fix #276978 crash during open .gpx file 2018-11-29 11:50:45 +01:00
bww/io fix various typos 2019-12-19 06:13:30 -05:00
capella fix #57791: WIP fix for importing chord symbol in capx 2020-04-05 20:36:28 +05:30
guitarpro rebase + isolate gp7-specific code 2020-03-27 13:41:24 +01:00
importmidi fix #294006: Symphony Orchestra template has wrong patches for pizzicato 2019-09-03 09:18:57 +02:00
libmscore fix #285434 : Certain 2.x frame texts imported with no style 2020-04-13 22:57:19 +02:00
mscore/workspaces fix tst_workspaces.cpp compilation 2019-12-18 10:18:08 +02:00
musicxml fix #298855: [MusicXML export] - trill on rest not exported 2020-03-14 19:17:23 +01:00
omr remove RCS IDs from (almost) all files 2018-11-02 23:53:21 +01:00
scripting Update and rework certain mtests 2019-12-04 11:11:45 +02:00
stringutils remove RCS IDs from (almost) all files 2018-11-02 23:53:21 +01:00
testoves remove RCS IDs from (almost) all files 2018-11-02 23:53:21 +01:00
testscript fix #302282: Note entry does not begin on first chord or rest in selected range 2020-03-12 18:41:07 -04:00
zerberus remove RCS IDs from (almost) all files 2018-11-02 23:53:21 +01:00
build.xml Initial commit 2012-05-26 14:49:10 +02:00
cmake.inc Make it possible to link mtests with mscoreapp 2019-12-04 11:11:31 +02:00
CMakeLists.txt moved all imports/exports to importexport module 2020-04-10 11:30:48 +02:00
config.h Fix build without SCRIPT_INTERFACE on Qt 5.7 2019-01-24 17:36:01 +03:00
mscoreappresources.cpp Make it possible to link mtests with mscoreapp 2019-12-04 11:11:31 +02:00
mtest.cpp Add a test for checking read/write and reset/undo operations 2018-11-26 00:31:08 +02:00
mtest.qrc Fix #235526: Update musicxml to 3.1 2017-09-27 09:24:47 +02:00
mtestglobals.cpp Make it possible to link mtests with mscoreapp 2019-12-04 11:11:31 +02:00
README.md improve mtest/README.md 2019-12-16 14:42:07 +08:00
test.mscx Update and rework certain mtests 2019-12-04 11:11:45 +02:00
testutils.cpp rebase + isolate gp7-specific code 2020-03-27 13:41:24 +01:00
testutils.h Improve testing infrastructure 2019-12-04 11:11:58 +02:00
updateReferences.sh update Articulations in mtest/guitarpro source scores 2019-02-04 16:28:56 +02:00

Automated tests

Building & running the tests

To build all tests:

Linux OSX Windows
make debug
sudo make installdebug
cd build.debug/mtest
make
make -f Makefile.osx debug
make -f Makefile.osx installdebug
cd build.debug/mtest
make -f Makefile.osx
mingw32-make -f Makefile.mingw debug
mingw32-make -f Makefile.mingw installdebug
cd build.debug\mtest
mingw32-make -f Makefile.mingw

To run all tests:

ctest

To run only one test (for debugging purposes):

cd libmscore/join/
./tst_join

To see how the CI environment is doing it check .travis.yml and build/run_tests.sh

Note: You need to have diff in your path. For Windows, get a copy of diffutils for Windows.

Test case conventions

Tests are grouped in directories by feature (like libmscore or mxl). In these directories, each subdirectory represents a test suite for a particular sub feature.

The name of a test suite directory should be descriptive. The CPP file for the tests should use the same name as the directory, for example tst_foo.cpp in directory foo. It's good practice to include a README file in a test suite directory.

Test suite CPP files contain one slot per test case. Each file should be called foo-XX with XX being an incrementing count. If a test case uses a file and a ref file, they should be called foo-XX and foo-XX-ref, with the extension .mscx. A test case should not reuse a file from another test case.

To create reference or original files, MuseScore can be run with the -t command line argument and it will save all the files in the session in test mode. Such files do not contain platform or version information and do contain extra data for tracing (for example, they contains pixel level position for beams).

How to write a test case

Import test

  • Open a short file containing an individual case in one of the formats supported by MuseScore
  • Save in MuseScore format
  • Compare with reference file

At first the test will fail because there is no reference file. Open the file created by the test case in MuseScore and try to edit it to be sure it's valid. If the file is valid, save it (without version number) as a reference file.

Object read write

Create a test case for all elements and all properties in each element. See libmscore/note.

  • Create an object
  • Set a property
  • Write and read the object
  • Check if the property has the right value

Action tests

See libmscore/join or libmscore/split for example.

  • Read a score file
  • Apply an action
  • Write the file
  • Compare with a reference
  • (Undo the action)
  • (Compare with original file)

Compatibility tests

Most of them are in mtest/libmscore/compat.

  • Read a score file from an older version of MuseScore
  • Write the file
  • Compare with a reference file