diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e00b2c7c8f..4864dfc27d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,6 +21,7 @@ fedora-meson: name: "gtk3-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" paths: - "_build/meson-logs" + - "_build/testsuite/reftests/output" msys2-mingw32-meson: variables: diff --git a/.gitlab-ci/test-docker-meson.sh b/.gitlab-ci/test-docker-meson.sh index 40c0f51414..b7ac83e091 100755 --- a/.gitlab-ci/test-docker-meson.sh +++ b/.gitlab-ci/test-docker-meson.sh @@ -12,6 +12,7 @@ python3 -m pip install --user meson==0.49.2 meson \ -Dgtk_doc=true \ -Dman=true \ + -Dinstalled_tests=true \ -Dbroadway_backend=true \ -Dxinerama=yes \ -Dprint_backends="file,lpr,test,cloudprint,cups" \ diff --git a/testsuite/a11y/meson.build b/testsuite/a11y/meson.build index d8168ffb04..fa8b045030 100644 --- a/testsuite/a11y/meson.build +++ b/testsuite/a11y/meson.build @@ -46,6 +46,8 @@ skipped_tests = [ a11y_dump_bin = executable('accessibility-dump', 'accessibility-dump.c', dependencies: libgtk_dep, + install: get_option('installed_tests'), + install_dir: installed_test_bindir, ) foreach t: a11y_state_tests @@ -85,6 +87,8 @@ foreach t: a11y_tests test (t, executable (t, '@0@.c'.format(t), + install: get_option('installed_tests'), + install_dir: installed_test_bindir, dependencies: libgtk_dep), args: [ '--tap', '-k', ], timeout: 120, @@ -99,4 +103,106 @@ foreach t: a11y_tests suite: 'a11y') endforeach +installed_test_data = [ + 'hello-world.ui', + 'hello-world.txt', + 'mnemonic.ui', + 'mnemonic.txt', + 'accessible-name.ui', + 'accessible-name.txt', + 'notebook.ui', + 'notebook.txt', + 'range.ui', + 'range.txt', + 'link.ui', + 'link.txt', + 'text.ui', + 'text.txt', + 'buttons.ui', + 'buttons.txt', + 'colorchooser.ui', + 'colorchooser.txt', + 'about.ui', + 'about.txt', + 'messagedialog.ui', + 'messagedialog.txt', + 'expander.ui', + 'expander.txt', + 'assistant.ui', + 'assistant.txt', + 'pickers.ui', + 'pickers.txt', + 'label.ui', + 'label.txt', + 'lockbutton.ui', + 'lockbutton.txt', + 'spinner.ui', + 'spinner.txt', + 'progress.ui', + 'progress.txt', + 'infobar.ui', + 'infobar.txt', + 'calendar.ui', + 'calendar.txt', + 'statusbar.ui', + 'statusbar.txt', + 'paned.ui', + 'paned.txt', + 'iconview.ui', + 'iconview.txt', + 'entries.ui', + 'entries.txt', + 'scale-drawvalue.ui', + 'scale-drawvalue.txt', + 'placeholder-text.ui', + 'placeholder-text.txt', + 'menu.ui', + 'menu.txt', + 'menubutton.ui', + 'menubutton.txt', + 'menubutton2.ui', + 'menubutton2.txt', + 'menubutton3.ui', + 'menubutton3.txt', + 'combos.ui', + 'combos.txt', + 'listbox.ui', + 'listbox.txt', + 'stack.ui', + 'stack.txt', + 'headerbar.ui', + 'headerbar.txt', + 'tree.ui', + 'tree.txt', + 'actionbar.ui', + 'actionbar.txt', + 'tooltips.ui', + 'tooltips.txt', +] + +a11y_installed_tests = [ + 'a11ytests.test', + 'a11ychildren.test', + 'a11ytree.test', + 'a11yvalue.test', + 'a11yderive.test', + 'a11ytext.test', + 'a11yutil.test', + 'a11ymisc.test', +] + +if get_option('installed_tests') + test_cdata = configuration_data() + test_cdata.set('libexecdir', gtk_libexecdir) + + foreach t: a11y_installed_tests + configure_file(input: '@0@.in'.format(t), + output: t, + configuration: test_cdata, + install_dir: installed_test_datadir) + endforeach + + install_data(installed_test_data, install_dir: join_paths(installed_test_bindir, 'a11ytests')) +endif + subdir('state') diff --git a/testsuite/a11y/state/Makefile.am b/testsuite/a11y/state/Makefile.am index 4ff4dfdab6..b0e265a6c5 100644 --- a/testsuite/a11y/state/Makefile.am +++ b/testsuite/a11y/state/Makefile.am @@ -28,7 +28,9 @@ testdata = \ focus1.ui focus1.in focus1.out \ focus2.ui focus2.in focus2.out -EXTRA_DIST += $(testdata) meson.build +EXTRA_DIST += $(testdata) \ + meson.build \ + a11ystate.test.in if BUILDOPT_INSTALL_TESTS insttestdir = $(libexecdir)/installed-tests/$(PACKAGE) diff --git a/testsuite/a11y/state/a11ystate.test.in b/testsuite/a11y/state/a11ystate.test.in new file mode 100644 index 0000000000..52755decbf --- /dev/null +++ b/testsuite/a11y/state/a11ystate.test.in @@ -0,0 +1,4 @@ +[Test] +Type=session-exclusive +Output=TAP +Exec=env G_ENABLE_DIAGNOSTIC=0 @libexecdir@/installed-tests/gtk+/state-record --tap --directory @libexecdir@/installed-tests/gtk+/state diff --git a/testsuite/a11y/state/meson.build b/testsuite/a11y/state/meson.build index 0c792f6d00..782649ef3f 100644 --- a/testsuite/a11y/state/meson.build +++ b/testsuite/a11y/state/meson.build @@ -1,4 +1,35 @@ a11y_state_record_bin = executable('state-record', 'state-record.c', dependencies: libgtk_dep, + install: get_option('installed_tests'), + install_dir: installed_test_bindir, ) + +test_data = [ + 'focus1.in', + 'focus1.out', + 'focus1.ui', + 'focus2.in', + 'focus2.out', + 'focus2.ui', +] + + +a11y_installed_tests = [ + 'a11ystate.test', +] + +if get_option('installed_tests') + test_cdata = configuration_data() + test_cdata.set('libexecdir', gtk_libexecdir) + + foreach t: a11y_installed_tests + configure_file(input: '@0@.in'.format(t), + output: t, + configuration: test_cdata, + install: true, + install_dir: installed_test_datadir) + endforeach + + install_data(test_data, install_dir: join_paths(installed_test_bindir, 'state')) +endif \ No newline at end of file diff --git a/testsuite/css/meson.build b/testsuite/css/meson.build index e90cd77c96..ba19185275 100644 --- a/testsuite/css/meson.build +++ b/testsuite/css/meson.build @@ -2,5 +2,20 @@ subdir('parser') subdir('nodes') subdir('style') -test_api = executable('api', 'api.c', dependencies: libgtk_dep) +testexecdir = join_paths(installed_test_bindir, 'css') +testdatadir = join_paths(installed_test_datadir, 'css') + +test_api = executable('api', 'api.c', + dependencies: libgtk_dep, + install: get_option('installed_tests'), + install_dir: testexecdir) test('css/api', test_api) + +if get_option('installed_tests') + conf = configuration_data() + conf.set('libexecdir', gtk_libexecdir) + configure_file(input: 'api.test.in', + output: 'api.test', + configuration: conf, + install_dir: testdatadir) +endif diff --git a/testsuite/css/nodes/meson.build b/testsuite/css/nodes/meson.build index a7d5050abd..8eae38583f 100644 --- a/testsuite/css/nodes/meson.build +++ b/testsuite/css/nodes/meson.build @@ -1,3 +1,76 @@ +testexecdir = join_paths(installed_test_bindir, 'css', 'nodes') +testdatadir = join_paths(installed_test_datadir, 'css', 'nodes') -test_nodes = executable('test-css-nodes', 'test-css-nodes.c', dependencies: libgtk_dep) +test_nodes = executable('test-css-nodes', 'test-css-nodes.c', + install: get_option('installed_tests'), + install_dir: testexecdir, + dependencies: libgtk_dep) test('css/nodes/test-nodes', test_nodes) + +test_data = [ + 'box.ltr.nodes', + 'box.ltr.ui', + 'box.rtl.nodes', + 'box.rtl.ui', + 'box-packing.ltr.nodes', + 'box-packing.ltr.ui', + 'box-packing.rtl.nodes', + 'box-packing.rtl.ui', + 'buttons.nodes', + 'buttons.ui', + 'checkbutton.ltr.nodes', + 'checkbutton.ltr.ui', + 'checkbutton.rtl.nodes', + 'checkbutton.rtl.ui', + 'combobox.nodes', + 'combobox.ui', + 'entries.nodes', + 'entries.ui', + 'expander.ltr.nodes', + 'expander.ltr.ui', + 'expander.rtl.nodes', + 'expander.rtl.ui', + 'levelbar.ltr.nodes', + 'levelbar.ltr.ui', + 'levelbar.rtl.nodes', + 'levelbar.rtl.ui', + 'notebook-arrows2.nodes', + 'notebook-arrows2.ui', + 'notebook-arrows.nodes', + 'notebook-arrows.ui', + 'notebook.bottom.ltr.nodes', + 'notebook.bottom.ltr.ui', + 'notebook.bottom.rtl.nodes', + 'notebook.bottom.rtl.ui', + 'notebook.left.ltr.nodes', + 'notebook.left.ltr.ui', + 'notebook.left.rtl.nodes', + 'notebook.left.rtl.ui', + 'notebook.right.ltr.nodes', + 'notebook.right.ltr.ui', + 'notebook.right.rtl.nodes', + 'notebook.right.rtl.ui', + 'notebook.top.ltr.nodes', + 'notebook.top.ltr.ui', + 'notebook.top.rtl.nodes', + 'notebook.top.rtl.ui', + 'paned.ltr.nodes', + 'paned.ltr.ui', + 'paned.rtl.nodes', + 'paned.rtl.ui', + 'progressbar.nodes', + 'progressbar.ui', + 'scale.nodes', + 'scale.ui', +] + +if get_option('installed_tests') + conf = configuration_data() + conf.set('libexecdir', gtk_libexecdir) + configure_file(input: 'test-css-nodes.test.in', + output: 'test-css-nodes.test', + configuration: conf, + install_dir: testdatadir) + + install_data(test_data, install_dir: testexecdir) +endif diff --git a/testsuite/css/parser/Makefile.am b/testsuite/css/parser/Makefile.am index 63cad9e1dc..03aa9b638a 100644 --- a/testsuite/css/parser/Makefile.am +++ b/testsuite/css/parser/Makefile.am @@ -334,6 +334,11 @@ test_data = \ declarations-valid-24.ref.css \ declarations-valid-25.css \ declarations-valid-25.ref.css \ + declarations-valid-26.css \ + declarations-valid-26.ref.css \ + deprecated.css \ + deprecated.errors \ + deprecated.ref.css \ does-not-exist.css \ does-not-exist.errors \ does-not-exist.ref.css \ diff --git a/testsuite/css/parser/meson.build b/testsuite/css/parser/meson.build index fee149a7c0..7e60bb8b41 100644 --- a/testsuite/css/parser/meson.build +++ b/testsuite/css/parser/meson.build @@ -1,3 +1,467 @@ +testexecdir = join_paths(installed_test_bindir, 'css', 'parser') +testdatadir = join_paths(installed_test_datadir, 'css', 'parser') -test_parser = executable('test-css-parser', 'test-css-parser.c', dependencies: libgtk_dep) +test_parser = executable('test-css-parser', 'test-css-parser.c', + install: get_option('installed_tests'), + install_dir: testexecdir, + dependencies: libgtk_dep) test('css/parser/css-parser', test_parser) + +test_data = [ + 'animation-crash-3.12.css', + 'animation-crash-3.12.errors', + 'animation-crash-3.12.ref.css', + 'animation-delay.css', + 'animation-delay.ref.css', + 'animation-direction.css', + 'animation-direction.ref.css', + 'animation-duration.css', + 'animation-duration.ref.css', + 'animation-fill-mode.css', + 'animation-fill-mode.ref.css', + 'animation-iteration-count.css', + 'animation-iteration-count.ref.css', + 'animation-name.css', + 'animation-name.ref.css', + 'animation-play-state.css', + 'animation-play-state.ref.css', + 'animation-shorthand-crash.css', + 'animation-shorthand-crash.ref.css', + 'animation-timing-function.css', + 'animation-timing-function.ref.css', + 'at-invalid-01.css', + 'at-invalid-01.errors', + 'at-invalid-01.ref.css', + 'at-invalid-02.css', + 'at-invalid-02.errors', + 'at-invalid-02.ref.css', + 'at-invalid-03.css', + 'at-invalid-03.errors', + 'at-invalid-03.ref.css', + 'at-invalid-04.css', + 'at-invalid-04.errors', + 'at-invalid-04.ref.css', + 'at-invalid-05.css', + 'at-invalid-05.errors', + 'at-invalid-05.ref.css', + 'at-invalid-06.css', + 'at-invalid-06.errors', + 'at-invalid-06.ref.css', + 'at-invalid-07.css', + 'at-invalid-07.errors', + 'at-invalid-07.ref.css', + 'at-invalid-08.css', + 'at-invalid-08.errors', + 'at-invalid-08.ref.css', + 'at-invalid-09.css', + 'at-invalid-09.errors', + 'at-invalid-09.ref.css', + 'at-invalid-10.css', + 'at-invalid-10.errors', + 'at-invalid-10.ref.css', + 'at-invalid-11.css', + 'at-invalid-11.errors', + 'at-invalid-11.ref.css', + 'at-invalid-12.css', + 'at-invalid-12.errors', + 'at-invalid-12.ref.css', + 'at-invalid-13.css', + 'at-invalid-13.errors', + 'at-invalid-13.ref.css', + 'at-invalid-14.css', + 'at-invalid-14.errors', + 'at-invalid-14.ref.css', + 'at-invalid-15.css', + 'at-invalid-15.errors', + 'at-invalid-15.ref.css', + 'at-invalid-16.css', + 'at-invalid-16.errors', + 'at-invalid-16.ref.css', + 'at-invalid-17.css', + 'at-invalid-17.errors', + 'at-invalid-17.ref.css', + 'at-invalid-18.css', + 'at-invalid-18.errors', + 'at-invalid-18.ref.css', + 'at-invalid-19.css', + 'at-invalid-19.errors', + 'at-invalid-19.ref.css', + 'at-invalid-20.css', + 'at-invalid-20.errors', + 'at-invalid-20.ref.css', + 'at-invalid-21.css', + 'at-invalid-21.errors', + 'at-invalid-21.ref.css', + 'at-invalid-22.css', + 'at-invalid-22.errors', + 'at-invalid-22.ref.css', + 'at-invalid-23.css', + 'at-invalid-23.errors', + 'at-invalid-23.ref.css', + 'at-invalid-24.css', + 'at-invalid-24.errors', + 'at-invalid-24.ref.css', + 'at-invalid-25.css', + 'at-invalid-25.errors', + 'at-invalid-25.ref.css', + 'at-invalid-26.css', + 'at-invalid-26.errors', + 'at-invalid-26.ref.css', + 'at-invalid-27.css', + 'at-invalid-27.errors', + 'at-invalid-27.ref.css', + 'at-valid-01.css', + 'at-valid-01.ref.css', + 'at-valid-02.css', + 'at-valid-02.ref.css', + 'at-valid-03.css', + 'at-valid-03.ref.css', + 'at-valid-04.css', + 'at-valid-04.ref.css', + 'at-valid-05.css', + 'at-valid-05.ref.css', + 'at-valid-06.css', + 'at-valid-06.ref.css', + 'at-valid-07.css', + 'at-valid-08.css', + 'at-valid-08.ref.css', + 'at-valid-09.css', + 'at-valid-09.ref.css', + 'at-valid-10.css', + 'at-valid-10.ref.css', + 'at-valid-11.css', + 'at-valid-11.ref.css', + 'at-valid-12.css', + 'at-valid-12.ref.css', + 'at-valid-13.css', + 'at-valid-13.ref.css', + 'at-valid-14.css', + 'at-valid-14.ref.css', + 'at-valid-15.css', + 'at-valid-15.ref.css', + 'at-valid-16.css', + 'at-valid-16.ref.css', + 'at-valid-17.css', + 'at-valid-18.css', + 'at-valid-18.ref.css', + 'at-valid-19.css', + 'at-valid-19.errors', + 'at-valid-19.ref.css', + 'at-valid-20.css', + 'at-valid-20.errors', + 'at-valid-20.ref.css', + 'at-valid-21.css', + 'at-valid-21.errors', + 'at-valid-21.ref.css', + 'background-blend-mode.css', + 'background-blend-mode.ref.css', + 'background-clip.css', + 'background-clip.ref.css', + 'background-image.css', + 'background-image.ref.css', + 'background-origin.css', + 'background-origin.ref.css', + 'background-position-errors.css', + 'background-position-errors.errors', + 'background-position-errors.ref.css', + 'background-position.css', + 'background-position.errors', + 'background-position.ref.css', + 'background-repeat.css', + 'background-repeat.ref.css', + 'background-shorthand-single.css', + 'background-shorthand-single.ref.css', + 'background-shorthand.css', + 'background-shorthand.ref.css', + 'background-size.css', + 'background-size.ref.css', + 'background-win32-color-is-no-error.css', + 'background-win32-color-is-no-error.ref.css', + 'border-color-currentcolor.css', + 'border-color-currentcolor.ref.css', + 'border-color.css', + 'border-color.ref.css', + 'border-image-repeat.css', + 'border-image-repeat.ref.css', + 'border-image-slice.css', + 'border-image-slice.ref.css', + 'border-image-source.css', + 'border-image-source.ref.css', + 'border-image-width.css', + 'border-image-width.ref.css', + 'border-infloop-3.12.css', + 'border-infloop-3.12.errors', + 'border-infloop-3.12.ref.css', + 'border-radius-shorthand.css', + 'border-radius-shorthand.errors', + 'border-radius-shorthand.ref.css', + 'border-radius.css', + 'border-radius.ref.css', + 'border-shorthand.css', + 'border-shorthand.ref.css', + 'border-style.css', + 'border-style.ref.css', + 'border-width.css', + 'border-width.ref.css', + 'border.css', + 'border.errors', + 'border.ref.css', + 'box-shadow.css', + 'box-shadow.ref.css', + 'calc-errors.css', + 'calc-errors.errors', + 'calc-errors.ref.css', + 'calc-simple.css', + 'calc-simple.ref.css', + 'calc.css', + 'calc.ref.css', + 'close-at-end-of-file.css', + 'close-at-end-of-file.errors', + 'close-at-end-of-file.ref.css', + 'color.css', + 'color.ref.css', + 'colors-errors.css', + 'colors-errors.errors', + 'colors-errors.ref.css', + 'colors-red.css', + 'colors-red.ref.css', + 'comment-detection.css', + 'comment-detection.ref.css', + 'cross-fade-basic.css', + 'css-21-malformed-declarations.css', + 'css-21-malformed-declarations.errors', + 'css-21-malformed-declarations.ref.css', + 'css-21-malformed-statements.css', + 'css-21-malformed-statements.errors', + 'css-21-malformed-statements.ref.css', + 'currentcolor-everywhere.css', + 'declarations-invalid-01.css', + 'declarations-invalid-01.errors', + 'declarations-invalid-01.ref.css', + 'declarations-invalid-02.css', + 'declarations-invalid-02.errors', + 'declarations-invalid-02.ref.css', + 'declarations-invalid-03.css', + 'declarations-invalid-03.errors', + 'declarations-invalid-03.ref.css', + 'declarations-invalid-04.css', + 'declarations-invalid-04.errors', + 'declarations-invalid-04.ref.css', + 'declarations-invalid-05.css', + 'declarations-invalid-05.errors', + 'declarations-invalid-05.ref.css', + 'declarations-invalid-06.css', + 'declarations-invalid-06.errors', + 'declarations-invalid-06.ref.css', + 'declarations-invalid-07.css', + 'declarations-invalid-07.errors', + 'declarations-invalid-07.ref.css', + 'declarations-invalid-08.css', + 'declarations-invalid-08.errors', + 'declarations-invalid-08.ref.css', + 'declarations-valid-01.css', + 'declarations-valid-01.ref.css', + 'declarations-valid-02.css', + 'declarations-valid-02.ref.css', + 'declarations-valid-03.css', + 'declarations-valid-03.ref.css', + 'declarations-valid-04.css', + 'declarations-valid-04.ref.css', + 'declarations-valid-05.css', + 'declarations-valid-05.ref.css', + 'declarations-valid-06.css', + 'declarations-valid-06.ref.css', + 'declarations-valid-07.css', + 'declarations-valid-07.ref.css', + 'declarations-valid-08.css', + 'declarations-valid-08.ref.css', + 'declarations-valid-09.css', + 'declarations-valid-09.ref.css', + 'declarations-valid-10.css', + 'declarations-valid-10.ref.css', + 'declarations-valid-11.css', + 'declarations-valid-11.ref.css', + 'declarations-valid-12.css', + 'declarations-valid-12.ref.css', + 'declarations-valid-13.css', + 'declarations-valid-13.ref.css', + 'declarations-valid-14.css', + 'declarations-valid-14.ref.css', + 'declarations-valid-15.css', + 'declarations-valid-15.ref.css', + 'declarations-valid-16.css', + 'declarations-valid-16.ref.css', + 'declarations-valid-17.css', + 'declarations-valid-17.ref.css', + 'declarations-valid-18.css', + 'declarations-valid-18.ref.css', + 'declarations-valid-19.css', + 'declarations-valid-19.ref.css', + 'declarations-valid-20.css', + 'declarations-valid-20.ref.css', + 'declarations-valid-21.css', + 'declarations-valid-21.ref.css', + 'declarations-valid-22.css', + 'declarations-valid-22.ref.css', + 'declarations-valid-23.css', + 'declarations-valid-23.ref.css', + 'declarations-valid-24.css', + 'declarations-valid-24.ref.css', + 'declarations-valid-25.css', + 'declarations-valid-25.ref.css', + 'declarations-valid-26.css', + 'declarations-valid-26.ref.css', + 'declarations.css', + 'declarations.errors', + 'declarations.ref.css', + 'deprecated.css', + 'deprecated.errors', + 'deprecated.ref.css', + 'does-not-exist.css', + 'does-not-exist.errors', + 'does-not-exist.ref.css', + 'doubled.css', + 'doubled.ref.css', + 'empty.css', + 'font-family.css', + 'font-family.ref.css', + 'font-size.css', + 'font-size.ref.css', + 'font-stretch.css', + 'font-stretch.ref.css', + 'font-style.css', + 'font-style.ref.css', + 'font-variant.css', + 'font-variant.ref.css', + 'font-weight.css', + 'font-weight.ref.css', + 'freed-string-in-error-messages.css', + 'freed-string-in-error-messages.errors', + 'freed-string-in-error-messages.ref.css', + 'import-cyclic-1.css', + 'import-cyclic-1.errors', + 'import-cyclic-1.ref.css', + 'import-cyclic-2.css', + 'import-cyclic-2.errors', + 'import-cyclic-2.ref.css', + 'import-cyclic-3.css', + 'import-cyclic-3.errors', + 'import-cyclic-3.ref.css', + 'import-nonexistant.css', + 'import-nonexistant.errors', + 'import-nonexistant.ref.css', + 'import-recursive.css', + 'import-recursive.errors', + 'import-recursive.ref.css', + 'integer.css', + 'integer.errors', + 'integer.ref.css', + 'keyframes-empty.css', + 'keyframes-empty.ref.css', + 'keyframes-ordering.css', + 'keyframes-ordering.ref.css', + 'letter-spacing.css', + 'letter-spacing.ref.css', + 'linear-gradient.css', + 'linear-gradient.ref.css', + 'margin.css', + 'margin.ref.css', + 'min-height.css', + 'min-height.ref.css', + 'min-width.css', + 'min-width.ref.css', + 'no-semicolon.css', + 'no-semicolon.ref.css', + 'not.css', + 'not.ref.css', + 'nth-child.css', + 'nth-child.ref.css', + 'opacity.css', + 'opacity.ref.css', + 'outline-color.css', + 'outline-color.ref.css', + 'outline-offset.css', + 'outline-offset.ref.css', + 'outline-radius.css', + 'outline-radius.ref.css', + 'outline-style.css', + 'outline-style.ref.css', + 'outline-width.css', + 'outline-width.ref.css', + 'padding.css', + 'padding.ref.css', + 'property-name-errors.css', + 'property-name-errors.errors', + 'property-name-errors.ref.css', + 'pseudo-classes-known.css', + 'pseudo-classes-known.errors', + 'pseudo-classes-known.ref.css', + 'pseudo-classes-unknown.css', + 'pseudo-classes-unknown.errors', + 'pseudo-classes-unknown.ref.css', + 'radial-background-position-error.css', + 'radial-background-position-error.errors', + 'radial-background-position-error.ref.css', + 'radial-positions.css', + 'radial-positions.errors', + 'radial-positions.ref.css', + 'radial.css', + 'radial.ref.css', + 'selector.css', + 'selector.ref.css', + 'shadow.css', + 'shadow.ref.css', + 'shorthand.css', + 'shorthand.ref.css', + 'simple.css', + 'single-slash.css', + 'single-slash.errors', + 'single-slash.ref.css', + 'string-values.css', + 'string-values.ref.css', + 'test.png', + 'text-decoration-color.css', + 'text-decoration-color.ref.css', + 'text-decoration-line.css', + 'text-decoration-line.ref.css', + 'text-decoration-style.css', + 'text-decoration-style.ref.css', + 'text-shadow-invalid-but-worked-in-3.12.css', + 'text-shadow-invalid-but-worked-in-3.12.errors', + 'text-shadow-invalid-but-worked-in-3.12.ref.css', + 'text-shadow.css', + 'text-shadow.ref.css', + 'transition-delay.css', + 'transition-delay.ref.css', + 'transition-duration.css', + 'transition-duration.ref.css', + 'transition-property.css', + 'transition-property.ref.css', + 'transition-timing-function.css', + 'transition-timing-function.ref.css', + 'transition.css', + 'transition.ref.css', + 'value-inherit-shorthand.css', + 'value-inherit-shorthand.ref.css', + 'value-inherit.css', + 'value-inherit.errors', + 'value-initial-shorthand.css', + 'value-initial-shorthand.ref.css', + 'value-initial.css', + 'value-initial.errors', + 'value-none.css', + 'value-none.errors', + 'value-none.ref.css', + 'widget-style-property.css', +] + +if get_option('installed_tests') + conf = configuration_data() + conf.set('libexecdir', gtk_libexecdir) + configure_file(input: 'test-css-parser.test.in', + output: 'test-css-parser.test', + configuration: conf, + install_dir: testdatadir) + + install_data(test_data, install_dir: testexecdir) +endif diff --git a/testsuite/css/style/meson.build b/testsuite/css/style/meson.build index db3766a5e3..9045d45e47 100644 --- a/testsuite/css/style/meson.build +++ b/testsuite/css/style/meson.build @@ -1,3 +1,5 @@ +testexecdir = join_paths(installed_test_bindir, 'css', 'style') +testdatadir = join_paths(installed_test_datadir, 'css', 'style') cssresources = gnome.compile_resources( 'cssresources', @@ -10,5 +12,45 @@ test_style = executable( 'test-css-style.c', cssresources, dependencies: libgtk_dep, + install: get_option('installed_tests'), + install_dir: testexecdir, ) test('css/style/test-style', test_style) + +test_data = [ + 'adjacent-states.css', + 'adjacent-states.nodes', + 'adjacent-states.ui', + 'colornames.css', + 'colornames.nodes', + 'colornames.ui', + 'currentcolor.css', + 'currentcolor.nodes', + 'currentcolor.ui', + 'font.css', + 'font.nodes', + 'font.ui', + 'gradient.css', + 'gradient.nodes', + 'gradient.ui', + 'inherit.css', + 'inherit.nodes', + 'inherit.ui', + 'label.css', + 'label.nodes', + 'label.ui', + 'nth-child.css', + 'nth-child.nodes', + 'nth-child.ui', +] + +if get_option('installed_tests') + conf = configuration_data() + conf.set('libexecdir', gtk_libexecdir) + configure_file(input: 'test-css-style.test.in', + output: 'test-css-style.test', + configuration: conf, + install_dir: testdatadir) + + install_data(test_data, install_dir: testexecdir) +endif \ No newline at end of file diff --git a/testsuite/gdk/meson.build b/testsuite/gdk/meson.build index ca84758e4f..9c8480d3c7 100644 --- a/testsuite/gdk/meson.build +++ b/testsuite/gdk/meson.build @@ -11,7 +11,9 @@ tests = [ foreach t : tests test_exe = executable(t, '@0@.c'.format(t), - dependencies: libgtk_dep) + dependencies: libgtk_dep, + install: get_option('installed_tests'), + install_dir: installed_test_bindir) test(t, test_exe, args: [ '--tap', '-k' ], diff --git a/testsuite/gtk/Makefile.am b/testsuite/gtk/Makefile.am index 859f674f79..843a5156a7 100644 --- a/testsuite/gtk/Makefile.am +++ b/testsuite/gtk/Makefile.am @@ -266,6 +266,7 @@ EXTRA_DIST += \ $(test_icontheme) \ $(test_ui) \ meson.build \ + gtk.test.in \ $(NULL) GTK_GSETTINGS_SCHEMAS = \ diff --git a/testsuite/gtk/gtk.test.in b/testsuite/gtk/gtk.test.in new file mode 100644 index 0000000000..65dc61bbd1 --- /dev/null +++ b/testsuite/gtk/gtk.test.in @@ -0,0 +1,4 @@ +[Test] +Type=session +Output=TAP +Exec=env G_ENABLE_DIAGNOSTIC=0 @testexecdir@/@test@ --tap \ No newline at end of file diff --git a/testsuite/gtk/meson.build b/testsuite/gtk/meson.build index 7cf67be39d..5f3556092a 100644 --- a/testsuite/gtk/meson.build +++ b/testsuite/gtk/meson.build @@ -73,7 +73,9 @@ foreach t : tests test_exe = executable(test_name, test_srcs, c_args : test_cargs + test_extra_cargs, link_args : test_extra_ldflags, - dependencies : libgtk_dep) + dependencies : libgtk_dep, + install: get_option('installed_tests'), + install_dir: installed_test_bindir) test(test_name, test_exe, args: [ '--tap', '-k' ], @@ -95,7 +97,9 @@ if add_languages('cpp', required: false) test_exe = executable('autotestkeywords', 'autotestkeywords.cc', c_args : test_cargs + ['-Idummy-headers'], - dependencies : libgtk_dep) + dependencies : libgtk_dep, + install: get_option('installed_tests'), + install_dir: installed_test_bindir) test('c++ keywords', test_exe, args: [ '--tap', '-k' ], env: [ 'GIO_USE_VOLUME_MONITOR=unix', @@ -107,4 +111,32 @@ if add_languages('cpp', required: false) 'GSETTINGS_SCHEMA_DIR=@0@'.format(gtk_schema_build_dir), ], suite: 'gtk') + + if get_option('installed_tests') + conf = configuration_data() + conf.set('testexecdir', installed_test_bindir) + conf.set('test', 'autotestkeywords') + configure_file(input: 'gtk.test.in', + output: 'autotestkeywords.test', + configuration: conf, + install_dir: installed_test_datadir) + endif endif + + +if get_option('installed_tests') + foreach t : tests + test_name = t.get(0) + conf = configuration_data() + conf.set('testexecdir', installed_test_bindir) + conf.set('test', test_name) + configure_file(input: 'gtk.test.in', + output: '@0@.test'.format(test_name), + configuration: conf, + install_dir: installed_test_datadir) + endforeach + + install_subdir('icons', install_dir: installed_test_bindir) + install_subdir('icons2', install_dir: installed_test_bindir) + install_subdir('ui', install_dir: installed_test_bindir) +endif \ No newline at end of file diff --git a/testsuite/meson.build b/testsuite/meson.build index 7b855c8a48..289f2725e1 100644 --- a/testsuite/meson.build +++ b/testsuite/meson.build @@ -1,9 +1,10 @@ -if get_option('installed_tests') - error('installed tests haven\'t been ported to meson yet') -endif +gtk_libexecdir = join_paths(gtk_prefix, get_option('libexecdir')) +installed_test_bindir = join_paths(gtk_libexecdir, 'installed-tests', 'gtk+') +installed_test_datadir = join_paths(gtk_datadir, 'installed-tests', 'gtk+') subdir('gtk') subdir('gdk') subdir('css') subdir('a11y') subdir('tools') +subdir('reftests') diff --git a/testsuite/reftests/Makefile.am b/testsuite/reftests/Makefile.am index dda89a6471..147d10ea50 100644 --- a/testsuite/reftests/Makefile.am +++ b/testsuite/reftests/Makefile.am @@ -68,6 +68,7 @@ clean-local: EXTRA_DIST += \ align-expand.sh \ + meson.build \ $(NULL) testdata = \ diff --git a/testsuite/reftests/gtk-reftest.c b/testsuite/reftests/gtk-reftest.c index 6400b26ecf..585e1c393d 100644 --- a/testsuite/reftests/gtk-reftest.c +++ b/testsuite/reftests/gtk-reftest.c @@ -78,7 +78,8 @@ parse_command_line (int *argc, char ***argv) /* g_test_build_filename must be called after gtk_test_init */ schema_dir = g_test_build_filename (G_TEST_BUILT, "", NULL); - g_setenv ("GSETTINGS_SCHEMA_DIR", schema_dir, TRUE); + if (g_getenv ("GTK_TEST_MESON") == NULL) + g_setenv ("GSETTINGS_SCHEMA_DIR", schema_dir, TRUE); g_free (schema_dir); if (g_strcmp0 (arg_direction, "rtl") == 0) @@ -88,6 +89,8 @@ parse_command_line (int *argc, char ***argv) else if (arg_direction != NULL) g_printerr ("Invalid argument passed to --direction argument. Valid arguments are 'ltr' and 'rtl'\n"); + g_type_ensure (G_TYPE_THEMED_ICON); + return TRUE; } diff --git a/testsuite/reftests/meson.build b/testsuite/reftests/meson.build new file mode 100644 index 0000000000..dd72ced5e5 --- /dev/null +++ b/testsuite/reftests/meson.build @@ -0,0 +1,486 @@ +testexecdir = join_paths(installed_test_bindir, 'reftests') + +libgtkreftestprivate = shared_library('gtkreftestprivate', [ + 'reftest-compare.c', + 'reftest-module.c', + 'reftest-snapshot.c'], + dependencies : libgtk_dep) + +libreftest = shared_library('reftest', + [ 'expand-expander.c', + 'frame-inhibitor.c', + 'image-recording-surface.c', + 'letter-spacing.c', + 'set-default-direction.c', + 'statusbar-remove-all.c', + 'textview-border-windows.c', + 'textview-tags.c', + 'animation-direction.c', + ], + link_with: libgtkreftestprivate, + dependencies : libgtk_dep) + +gtk_reftest = executable('gtk-reftest', 'gtk-reftest.c', + link_with : [libgtkreftestprivate, libreftest], + dependencies : libgtk_dep, + install: get_option('installed_tests'), + install_dir: installed_test_bindir) + +test_data = [ + '721800-0px-dotted-border.css', + '721800-0px-dotted-border.ref.ui', + '721800-0px-dotted-border.ui', + 'actionbar.css', + 'actionbar.ref.ui', + 'actionbar.ui', + 'alignment-props.css', + 'alignment-props.ref.ui', + 'alignment-props.ui', + 'animation-direction.css', + 'animation-direction.ref.ui', + 'animation-direction.ui', + 'animation-fill-mode-iteration-count.css', + 'animation-fill-mode-iteration-count.ref.ui', + 'animation-fill-mode-iteration-count.ui', + 'background-area.css', + 'background-area.ref.ui', + 'background-area.ui', + 'background-blend-mode-clip-interaction.css', + 'background-blend-mode-clip-interaction.ref.ui', + 'background-blend-mode-clip-interaction.ui', + 'background-color-transparent.css', + 'background-color-transparent.ref.ui', + 'background-color-transparent.ui', + 'background-image-multiple.css', + 'background-image-multiple.ref.ui', + 'background-image-multiple.ui', + 'background-origin.css', + 'background-origin.ref.ui', + 'background-origin.ui', + 'background-positioning-area-empty.ref.ui', + 'background-positioning-area-empty.ui', + 'background-position.css', + 'background-position.ref.ui', + 'background-position.ui', + 'background-position-repeat.css', + 'background-position-repeat.ref.ui', + 'background-position-repeat.ui', + 'background-position-repeat-bg.png', + 'background-position-simple.css', + 'background-position-simple.ref.ui', + 'background-position-simple.ui', + 'background-size.css', + 'background-size.ref.ui', + 'background-size.ui', + 'background-size-keywords.css', + 'background-size-keywords.ref.ui', + 'background-size-keywords.ui', + 'background-size-zero.css', + 'background-size-zero.ref.ui', + 'background-size-zero.ui', + 'background-window-transparent.css', + 'background-window-transparent.ref.ui', + 'background-window-transparent.ui', + 'bad-color-names.css', + 'bad-color-names.ref.ui', + 'bad-color-names.ui', + 'reference-background-origin.png', + 'border-color-default.css', + 'border-color-default.ref.ui', + 'border-color-default.ui', + 'border-corner-zero-width-rendering.css', + 'border-corner-zero-width-rendering.ref.ui', + 'border-corner-zero-width-rendering.ui', + 'border-half-pixel.css', + 'border-half-pixel.ref.ui', + 'border-half-pixel.ui', + 'border-image-ball-green.png', + 'border-image-ball-red.png', + 'border-image-ball-yellow.png', + 'border-image-balls.png', + 'border-image-3-balls-green.png', + 'border-image-3-balls-green-squished.png', + 'border-image-3-balls-yellow.png', + 'border-image-3-balls-yellow-squished.png', + 'border-image-excess-size.css', + 'border-image-excess-size.ref.ui', + 'border-image-excess-size.ui', + 'border-image-gradient.css', + 'border-image-gradient.ref.ui', + 'border-image-gradient.ui', + 'border-image-url-scaled.css', + 'border-image-url-scaled.ref.ui', + 'border-image-url-scaled.ui', + 'border-image-url.css', + 'border-image-url.ref.ui', + 'border-image-url.ui', + 'border-radius-clamp.css', + 'border-radius-clamp.ref.ui', + 'border-radius-clamp.ui', + 'border-rgb.png', + 'border-rgb@2.png', + 'border-style-none.css', + 'border-style-none.ref.ui', + 'border-style-none.ui', + 'border-style.css', + 'border-style.ref.ui', + 'border-style.ui', + 'box-child-expand.ref.ui', + 'box-child-expand.ui', + 'box-order.css', + 'box-order.ref.ui', + 'box-order.ui', + 'box-packing.css', + 'box-packing.ref.ui', + 'box-packing.ui', + 'box-pseudo-classes.css', + 'box-pseudo-classes.ref.ui', + 'box-pseudo-classes.ui', + 'box-shadow-changes-modify-clip.css', + 'box-shadow-changes-modify-clip.ref.ui', + 'box-shadow-changes-modify-clip.ui', + 'box-shadow-spec-inset.css', + 'box-shadow-spec-inset.ref.ui', + 'box-shadow-spec-inset.ui', + 'box-shadow-spread.css', + 'box-shadow-spread.ref.ui', + 'box-shadow-spread.ui', + 'box-shadow-with-blend-mode.css', + 'box-shadow-with-blend-mode.ref.ui', + 'box-shadow-with-blend-mode.ui', + 'button-wrapping.ui', + 'button-wrapping.ref.ui', + 'cellrenderer-pixbuf-stock-rtl.css', + 'cellrenderer-pixbuf-stock-rtl.ui', + 'cellrenderer-pixbuf-stock-rtl.ref.ui', + 'color-transition.css', + 'color-transition.ref.ui', + 'color-transition.ui', + 'css-em-label-size.css', + 'css-em-label-size.ui', + 'css-em-label-size.ref.ui', + 'css-currentcolor-alpha.css', + 'css-currentcolor-alpha.ui', + 'css-currentcolor-alpha.ref.ui', + 'css-image-aspect-ratio.css', + 'css-image-aspect-ratio.ui', + 'css-image-aspect-ratio.ref.ui', + 'css-image-color-aspect-ratio.css', + 'css-image-color-aspect-ratio.ui', + 'css-image-color-aspect-ratio.ref.ui', + 'css-match-class.css', + 'css-match-class.ref.ui', + 'css-match-class.ui', + 'css-match-descendant-later.css', + 'css-match-descendant-later.ref.ui', + 'css-match-descendant-later.ui', + 'css-match-exact.css', + 'css-match-exact.ref.ui', + 'css-match-exact.ui', + 'css-match-import.css', + 'css-match-import-import.css', + 'css-match-import.ui', + 'css-match-import.ref.ui', + 'css-match-inherit.css', + 'css-match-inherit.ref.ui', + 'css-match-inherit.ui', + 'css-match-inherit-different-state.css', + 'css-match-inherit-different-state.ref.ui', + 'css-match-inherit-different-state.ui', + 'css-match-name.css', + 'css-match-name.ref.ui', + 'css-match-name.ui', + 'css-match-siblings.css', + 'css-match-siblings.ref.ui', + 'css-match-siblings.ui', + 'css-match-type.css', + 'css-match-type.ref.ui', + 'css-match-type.ui', + 'css-multi-state.css', + 'css-multi-state.ref.ui', + 'css-multi-state.ui', + 'fixed-widget-stacking.ref.ui', + 'fixed-widget-stacking.ui', + 'flipping-icons.ref.ui', + 'flipping-icons.ui', + 'font-sizes-names.css', + 'font-sizes-names.ref.ui', + 'font-sizes-names.ui', + 'gtk-image-effect-inherit.css', + 'gtk-image-effect-inherit.ref.ui', + 'gtk-image-effect-inherit.ui', + 'green-20x20.png', + 'grid-empty-with-spacing.ref.ui', + 'grid-empty-with-spacing.ui', + 'grid-expand.css', + 'grid-expand.ref.ui', + 'grid-expand.ui', + 'grid-wfh.ui', + 'grid-wfh.ref.ui', + 'grid-homogeneous.css', + 'grid-homogeneous.ref.ui', + 'grid-homogeneous.ui', + 'grid-spacing1.ref.ui', + 'grid-spacing1.ui', + 'grid-spacing2.ref.ui', + 'grid-spacing2.ui', + 'grid-spacing3.css', + 'grid-spacing3.ref.ui', + 'grid-spacing3.ui', + 'gtk-icontheme-sizing.css', + 'gtk-icontheme-sizing.ref.ui', + 'gtk-icontheme-sizing.ui', + 'icon-effect-missing.css', + 'icon-effect-missing.ref.ui', + 'icon-effect-missing.ui', + 'icon-shadow-no-transform.css', + 'icon-shadow-no-transform.ref.ui', + 'icon-shadow-no-transform.ui', + 'icon-style-basics.css', + 'icon-style-basics.ref.ui', + 'icon-style-basics.ui', + 'icon-vfuncs.css', + 'icon-vfuncs.ref.ui', + 'icon-vfuncs.ui', + 'iconview-empty.css', + 'iconview-empty.ui', + 'iconview-empty.ref.ui', + 'image-icon-name-use-fallback.ui', + 'image-icon-name-use-fallback.ref.ui', + 'image-icon-shadow-clipping.css', + 'image-icon-shadow-clipping.ref.ui', + 'image-icon-shadow-clipping.ui', + 'image-load-from-file.css', + 'image-load-from-file.ref.ui', + 'image-load-from-file.ui', + 'image-recording-surface.ref.ui', + 'image-recording-surface.ui', + 'info-bar-message-types.css', + 'info-bar-message-types.ref.ui', + 'info-bar-message-types.ui', + 'inherit-and-initial.css', + 'inherit-and-initial.ref.ui', + 'inherit-and-initial.ui', + 'label-attribute-preference.css', + 'label-attribute-preference.ref.ui', + 'label-attribute-preference.ui', + 'label-background.css', + 'label-background.ref.ui', + 'label-background.ui', + 'label-box-shadow-clip.css', + 'label-box-shadow-clip.ref.ui', + 'label-box-shadow-clip.ui', + 'label-clipping.css', + 'label-clipping.ref.ui', + 'label-clipping.ui', + 'label-ellipsize-small.ref.ui', + 'label-ellipsize-small.ui', + 'label-ellipsize-with-big.ref.ui', + 'label-ellipsize-with-big.ui', + 'label-fonts.css', + 'label-fonts.ref.ui', + 'label-fonts.ui', + 'label-shadows.css', + 'label-shadows.ref.ui', + 'label-shadows.ui', + 'label-sizing.css', + 'label-sizing.ref.ui', + 'label-sizing.ui', + 'label-small-ellipsized.ref.ui', + 'label-small-ellipsized.ui', + 'label-text-shadow-clipping.css', + 'label-text-shadow-clipping.ref.ui', + 'label-text-shadow-clipping.ui', + 'label-text-shadow-changes-modify-clip.css', + 'label-text-shadow-changes-modify-clip.ref.ui', + 'label-text-shadow-changes-modify-clip.ui', + 'label-width-chars-dont-shrink.ref.ui', + 'label-width-chars-dont-shrink.ui', + 'label-wrap-justify.ref.ui', + 'label-wrap-justify.ui', + 'letter-spacing.css', + 'letter-spacing.ui', + 'letter-spacing.ref.ui', + 'linear-gradient.css', + 'linear-gradient.ref.ui', + 'linear-gradient.ui', + 'linear-gradient-transition-to-other.css', + 'linear-gradient-transition-to-other.ref.ui', + 'linear-gradient-transition-to-other.ui', + 'link-coloring.css', + 'link-coloring.ref.ui', + 'link-coloring.ui', + 'marble.xpm', + 'messagedialog-secondarytext.ui', + 'messagedialog-secondarytext.ref.ui', + 'misc-alignment.css', + 'misc-alignment.ref.ui', + 'misc-alignment.ui', + 'named-colors.css', + 'named-colors.ref.ui', + 'named-colors.ui', + 'no-colors.css', + 'no-colors.ref.ui', + 'no-colors.ui', + 'nonresizable-size.ref.ui', + 'nonresizable-size.ui', + 'notebook-childproperties.css', + 'notebook-childproperties.ui', + 'notebook-childproperties.ref.ui', + 'notebook-tab-position.css', + 'notebook-tab-position.ui', + 'notebook-tab-position.ref.ui', + 'nth-child.css', + 'nth-child.ref.ui', + 'nth-child.ui', + 'opacity.css', + 'opacity.ui', + 'opacity.ref.ui', + 'opacity-initial.css', + 'opacity-initial.ref.ui', + 'opacity-initial.ui', + 'overlay-no-main-widget.ref.ui', + 'overlay-no-main-widget.ui', + 'paned-undersized.css', + 'paned-undersized.ref.ui', + 'paned-undersized.ui', + 'pseudoclass-on-box.css', + 'pseudoclass-on-box.ref.ui', + 'pseudoclass-on-box.ui', + 'pseudoclass-on-parent.css', + 'pseudoclass-on-parent.ref.ui', + 'pseudoclass-on-parent.ui', + 'quit-mnemonic.css', + 'quit-mnemonic.ref.ui', + 'quit-mnemonic.ui', + 'reset-to-defaults.css', + 'revealer-extra-size.ref.ui', + 'revealer-extra-size.ui', + 'revealer-wrappable-contents.ref.ui', + 'revealer-wrappable-contents.ui', + 'rotated-layout.ref.ui', + 'rotated-layout.ui', + 'separator-size.css', + 'separator-size.ref.ui', + 'separator-size.ui', + 'set-default-direction.ui', + 'set-default-direction.ref.ui', + 'shadow-clip-rounding.css', + 'shadow-clip-rounding.ref.ui', + 'shadow-clip-rounding.ui', + 'shorthand-entry-border.css', + 'shorthand-entry-border.ref.ui', + 'shorthand-entry-border.ui', + 'sibling-pseudoclasses.css', + 'sibling-pseudoclasses.ref.ui', + 'sibling-pseudoclasses.ui', + 'simple.ref.ui', + 'simple.ui', + 'sizegroups-basics.css', + 'sizegroups-basics.ui', + 'sizegroups-basics.ref.ui', + 'sizegroups-evolution-identity-page.ui', + 'sizegroups-evolution-identity-page.ref.ui', + 'sizegroups-get-preferred-null.ui', + 'sizegroups-get-preferred-null.ref.ui', + 'statusbar-remove-all.ref.ui', + 'statusbar-remove-all.ui', + 'style-context-save-inheritance.css', + 'style-context-save-inheritance.ref.ui', + 'style-context-save-inheritance.ui', + 'style-properties-nth-child.css', + 'style-properties-nth-child.ref.ui', + 'style-properties-nth-child.ui', + 'style-properties-only-child.css', + 'style-properties-only-child.ref.ui', + 'style-properties-only-child.ui', + 'symbolic-icon-translucent-color.css', + 'symbolic-icon-translucent-color.ref.ui', + 'symbolic-icon-translucent-color.ui', + 'textview-border-windows.css', + 'textview-border-windows.ref.ui', + 'textview-border-windows.ui', + 'textview-margins.css', + 'textview-margins.ref.ui', + 'textview-margins.ui', + 'textview-tags.ref.ui', + 'textview-tags.ui', + 'toplevel-vs-popup.ref.ui', + 'toplevel-vs-popup.ui', + 'treeview-crash-too-wide.ref.ui', + 'treeview-crash-too-wide.ui', + 'treeview-fixed-height.css', + 'treeview-fixed-height.ref.ui', + 'treeview-fixed-height.ui', + 'treeview-headers-hidden.ref.ui', + 'treeview-headers-hidden.ui', + 'unresolvable.css', + 'unresolvable.ref.ui', + 'unresolvable.ui', + 'window-border-width.ref.ui', + 'window-border-width.ui', + 'window-default-size.ref.ui', + 'window-default-size.ui', + 'window-height-for-width.ref.ui', + 'window-height-for-width.ui', + 'window-show-contents-on-map.ref.ui', + 'window-show-contents-on-map.ui', +] + +# Depending on the environment these fail, feel free to fix them +somehow_broken = [ + 'label-sizing.ui', + 'flipping-icons.ui', + 'window-height-for-width.ui', + 'cellrenderer-pixbuf-stock-rtl.ui', + 'label-wrap-justify.ui', + 'symbolic-icon-translucent-color.ui', +] + +foreach testname : test_data + if testname.endswith('.ui') and not testname.endswith('.ref.ui') + # reftests fail when multiple windows open at the same time stealing the focus, + # so set is_parallel to false + test('reftest ' + testname, gtk_reftest, + args: [ '--tap', + '-k', + '--verbose', + '-o', join_paths(meson.current_build_dir(), 'output'), + join_paths(meson.current_source_dir(), testname), + ], + env: [ 'GTK_IM_MODULE=gtk-im-context-simple', + 'GSETTINGS_BACKEND=memory', + 'GSETTINGS_SCHEMA_DIR=@0@'.format(gtk_schema_build_dir), + 'GTK_TEST_MESON=1', + 'GTK_CSD=0', + 'G_ENABLE_DIAGNOSTIC=0', + 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), + 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), + 'REFTEST_MODULE_DIR=@0@'.format(meson.current_build_dir()), + ], + suite: 'reftest', + should_fail: somehow_broken.contains(testname), + is_parallel: false) + endif +endforeach + +reftests_installed_tests = [ + 'reftests-dark.test', + 'reftests-hc.test', + 'reftests-hci.test', + 'reftests.test', +] + +if get_option('installed_tests') + test_cdata = configuration_data() + test_cdata.set('libexecdir', gtk_libexecdir) + + foreach t: reftests_installed_tests + configure_file(input: '@0@.in'.format(t), + output: t, + configuration: test_cdata, + install_dir: installed_test_datadir) + endforeach + + install_data(test_data, install_dir: testexecdir) +endif \ No newline at end of file diff --git a/testsuite/tools/Makefile.am b/testsuite/tools/Makefile.am index a9996a4491..6893736d38 100644 --- a/testsuite/tools/Makefile.am +++ b/testsuite/tools/Makefile.am @@ -17,6 +17,7 @@ EXTRA_DIST += \ $(test_simplify) \ test-simplify.in \ test-settings.in \ + tools.test.in \ meson.build \ $(NULL) diff --git a/testsuite/tools/meson.build b/testsuite/tools/meson.build index 267b96639e..86ecff304b 100644 --- a/testsuite/tools/meson.build +++ b/testsuite/tools/meson.build @@ -1,11 +1,21 @@ +testexecdir = join_paths(installed_test_bindir) +testdatadir = join_paths(installed_test_datadir) + bash = find_program('bash', required : false) if bash.found() test_env = environment() foreach t : ['test-simplify', 'test-settings'] - configure_file(output: t, - input: '@0@.in'.format(t), - copy: true) + if get_option('installed_tests') + configure_file(output: t, + input: '@0@.in'.format(t), + copy: true, + install_dir: testexecdir) + else + configure_file(output: t, + input: '@0@.in'.format(t), + copy: true) + endif test(t, bash, args: t, workdir: meson.current_build_dir(), @@ -21,3 +31,17 @@ if bash.found() suite: 'tools') endforeach endif + +if get_option('installed_tests') + foreach t : ['test-simplify', 'test-settings'] + test_conf = configuration_data() + test_conf.set('testexecdir', testexecdir) + test_conf.set('test', t) + configure_file(output: '@0@.test'.format(t), + input: 'tools.test.in', + configuration: test_conf, + install_dir: testdatadir) + endforeach + + install_subdir('simplify', install_dir: testexecdir) +endif diff --git a/testsuite/tools/tools.test.in b/testsuite/tools/tools.test.in new file mode 100644 index 0000000000..5f6ff63f8b --- /dev/null +++ b/testsuite/tools/tools.test.in @@ -0,0 +1,4 @@ +[Test] +Type=session +Output=TAP +Exec=env G_ENABLE_DIAGNOSTIC=0 TEST_DATA_DIR="@testexecdir@/simplify" @testexecdir@/@test@