[vala/wip/meson: 20/22] WIP meson: Add tests



commit d1b1efdb5c9ce73451fd3c9b2df92fbcc39ddabc
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Sun Feb 10 19:58:46 2019 +0100

    WIP meson: Add tests

 meson.build               |  12 +
 tests/meson.build         | 980 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/prepare-test.py     |  17 +
 valadoc/meson.build       |   1 +
 valadoc/tests/meson.build |  70 ++++
 5 files changed, 1080 insertions(+)
---
diff --git a/meson.build b/meson.build
index 2dea08c28..7b38ffee4 100644
--- a/meson.build
+++ b/meson.build
@@ -145,6 +145,17 @@ if valadoc_enabled and cc.run('''#include <gvc.h>
        add_project_arguments('-D', 'WITH_CGRAPH', language: 'vala')
 endif
 
+add_test_setup('default', is_default: true, env: 'G_SLICE=debug-blocks G_DEBUG=fatal-warnings')
+
+vg = find_program('valgrind', required: false)
+if (vg.found())
+       add_test_setup('valgrind',
+               env: 'G_SLICE=always-malloc G_DEBUG=fatal-warnings',
+               exe_wrapper: [vg, '--error-exitcode=1', '--leak-check=full', '--track-origins=yes'],
+               timeout_multiplier: 100,
+       )
+endif
+
 subdir('gobject-introspection')
 subdir('gee')
 subdir('vala')
@@ -160,5 +171,6 @@ if valadoc_enabled
 endif
 
 subdir('doc')
+subdir('tests')
 
 install_data('vala.m4', install_dir: join_paths('share', 'aclocal'))
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 000000000..047ed555b
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,980 @@
+test_cases = [
+       'basic-types/integers.vala',
+       'basic-types/escape-chars.vala',
+       'basic-types/floats.vala',
+       'basic-types/custom-types.vala',
+       'basic-types/default-gtype.vala',
+       'basic-types/strings.vala',
+       'basic-types/arrays.vala',
+       'basic-types/arrays-fixed-assignment.vala',
+       'basic-types/array-uint8-uchar-compat.vala',
+       'basic-types/pointers.vala',
+       'basic-types/sizeof.vala',
+       'basic-types/garray.vala',
+       'basic-types/glists.vala',
+       'basic-types/gptrarray.vala',
+       'basic-types/gvariants.vala',
+       'basic-types/gvariants-unboxing-safe.vala',
+       'basic-types/bug570846.test',
+       'basic-types/bug571486.vala',
+       'basic-types/bug591552.vala',
+       'basic-types/bug595751.vala',
+       'basic-types/bug596637.vala',
+       'basic-types/bug596785.vala',
+       'basic-types/bug604371.vala',
+       'basic-types/bug604589.test',
+       'basic-types/bug610660.vala',
+       'basic-types/bug622178.vala',
+       'basic-types/bug632322.vala',
+       'basic-types/bug641308.test',
+       'basic-types/bug643612.vala',
+       'basic-types/bug644046.vala',
+       'basic-types/bug647222.vala',
+       'basic-types/bug648364.vala',
+       'basic-types/bug650993.vala',
+       'basic-types/bug652380.vala',
+       'basic-types/bug655908.vala',
+       'basic-types/bug659975.vala',
+       'basic-types/bug678791.vala',
+       'basic-types/bug686336.vala',
+       'basic-types/bug729907.vala',
+       'basic-types/bug731017.vala',
+       'basic-types/bug744923.test',
+       'basic-types/bug756376.vala',
+       'basic-types/bug761307.vala',
+       'basic-types/bug761736.vala',
+       'basic-types/bug771626.test',
+       'basic-types/bug772426.vala',
+       'basic-types/bug777697.test',
+       'basic-types/bug787152.vala',
+       'basic-types/bug788775.vala',
+       'constants/glog.vala',
+       'arrays/cast-silent-invalid.test',
+       'arrays/class-field-length-cname.vala',
+       'arrays/expression-bracket.test',
+       'arrays/field-global-length-cname.vala',
+       'arrays/fixed-length-concat-invalid.test',
+       'arrays/fixed-length-non-const.test',
+       'arrays/fixed-length-resize-invalid.test',
+       'arrays/struct-field-length-cname.vala',
+       'arrays/incompatible-integer-elements.test',
+       'arrays/slice-invalid-start.test',
+       'arrays/slice-invalid-stop.test',
+       'arrays/slice-no-array.test',
+       'chainup/base-class-invalid.test',
+       'chainup/base-enum-invalid.test',
+       'chainup/base-invalid.test',
+       'chainup/base-struct-invalid.test',
+       'chainup/class-base.vala',
+       'chainup/class-base-foo.vala',
+       'chainup/class-object.vala',
+       'chainup/class-this.vala',
+       'chainup/class-this-foo.vala',
+       'chainup/method-lambda-base.vala',
+       'chainup/no-chainup.vala',
+       'chainup/signal-default-handler.vala',
+       'chainup/struct-base.vala',
+       'chainup/struct-base-foo.vala',
+       'chainup/struct-this.vala',
+       'chainup/struct-this-foo.vala',
+       'chainup/bug791785.vala',
+       'pointers/bug590641.vala',
+       'methods/lambda.vala',
+       'methods/closures.vala',
+       'methods/contains.vala',
+       'methods/extern.vala',
+       'methods/iterator.vala',
+       'methods/prepostconditions.vala',
+       'methods/same-name.vala',
+       'methods/symbolresolution.vala',
+       'methods/bug540483.vala',
+       'methods/bug595538.vala',
+       'methods/bug596726.vala',
+       'methods/bug597426.vala',
+       'methods/bug598738.vala',
+       'methods/bug599892.vala',
+       'methods/bug613483.vala',
+       'methods/bug615450.test',
+       'methods/bug620673.test',
+       'methods/bug620673.vala',
+       'methods/bug622570.vala',
+       'methods/bug626783.vala',
+       'methods/bug634753.vala',
+       'methods/bug639054.vala',
+       'methods/bug642350.vala',
+       'methods/bug642885.vala',
+       'methods/bug642899.vala',
+       'methods/bug643088.test',
+       'methods/bug646345.vala',
+       'methods/bug648030.test',
+       'methods/bug648320.vala',
+       'methods/bug649562.vala',
+       'methods/bug652098.vala',
+       'methods/bug653391.vala',
+       'methods/bug653908.vala',
+       'methods/bug663210.vala',
+       'methods/bug699956.vala',
+       'methods/bug710862.vala',
+       'methods/bug723009.vala',
+       'methods/bug723195.vala',
+       'methods/bug726347.vala',
+       'methods/bug736235.vala',
+       'methods/bug737222.vala',
+       'methods/bug743877.vala',
+       'methods/bug771964.vala',
+       'methods/bug774060.vala',
+       'methods/bug775466.test',
+       'methods/bug781061.vala',
+       'methods/bug784691.vala',
+       'methods/bug791215.vala',
+       'methods/bug791283.vala',
+       'methods/argument-array-initilizer.vala',
+       'methods/generics.vala',
+       'methods/print-attribute.vala',
+       'methods/print-attribute-invalid.test',
+       'methods/printf-invalid.test',
+       'methods/printf-constructor.vala',
+       'methods/printf-constructor-invalid.test',
+       'methods/varargs-delegate.vala',
+       'methods/varargs-delegate-without-target.vala',
+       'methods/varargs-gvalue.vala',
+       'methods/varargs-out.vala',
+       'methods/varargs-struct.vala',
+       'control-flow/assigned-local-variable.vala',
+       'control-flow/break.vala',
+       'control-flow/break-invalid.test',
+       'control-flow/continue-invalid.test',
+       'control-flow/double-catch.test',
+       'control-flow/expressions-conditional.vala',
+       'control-flow/finally-return.test',
+       'control-flow/for.vala',
+       'control-flow/for-switch-continue.vala',
+       'control-flow/foreach.vala',
+       'control-flow/missing-break.test',
+       'control-flow/missing-return.test',
+       'control-flow/nested-conditional.vala',
+       'control-flow/switch.vala',
+       'control-flow/sideeffects.vala',
+       'control-flow/unassigned-captured-local-variable.test',
+       'control-flow/unassigned-local-block-variable.test',
+       'control-flow/unassigned-local-variable.test',
+       'control-flow/unassigned-local-variable-2.test',
+       'control-flow/unassigned-local-variable-3.test',
+       'control-flow/unassigned-local-variable-while.test',
+       'control-flow/while-false.vala',
+       'control-flow/bug628336.vala',
+       'control-flow/bug639482.vala',
+       'control-flow/bug652549.vala',
+       'control-flow/bug661985.vala',
+       'control-flow/bug665904.vala',
+       'control-flow/bug691514.vala',
+       'control-flow/bug736774-1.vala',
+       'control-flow/bug736774-2.vala',
+       'control-flow/bug790903.test',
+       'control-flow/bug790903-2.test',
+       'control-semantic/argument-extra.test',
+       'control-semantic/argument-incompatible-type-out.test',
+       'control-semantic/argument-incompatible-type-ref.test',
+       'control-semantic/argument-missing.test',
+       'control-semantic/argument-named.test',
+       'control-semantic/argument-no-out.test',
+       'control-semantic/argument-no-ref.test',
+       'control-semantic/argument-null-ref.test',
+       'control-semantic/argument-owned-out.test',
+       'control-semantic/argument-owned-ref.test',
+       'control-semantic/argument-value-out.test',
+       'control-semantic/argument-value-ref.test',
+       'control-semantic/condition-not-boolean.test',
+       'control-semantic/expression-not-boolean.test',
+       'control-semantic/literal-immutable.test',
+       'control-semantic/member-incompatible-type.test',
+       'control-semantic/member-invalid.test',
+       'control-semantic/member-private.test',
+       'control-semantic/member-readonly.test',
+       'control-semantic/printf-too-few.test',
+       'control-semantic/printf-too-many.test',
+       'control-semantic/this-assignment.test',
+       'control-semantic/variadic-argument-invalid.test',
+       'enums/default-gtype.vala',
+       'enums/enum_only.vala',
+       'enums/enum-no-gtype.vala',
+       'enums/enums.vala',
+       'enums/flags.vala',
+       'enums/from-0-literal.vala',
+       'enums/no_gtype_to_string.vala',
+       'enums/bug666035.vala',
+       'enums/bug666035-1.test',
+       'enums/bug666035-2.test',
+       'enums/bug673879.vala',
+       'enums/bug763831.vala',
+       'enums/bug780050.vala',
+       'structs/struct_only.vala',
+       'structs/struct-base-types.vala',
+       'structs/struct-empty-still.test',
+       'structs/struct-no-gtype.vala',
+       'structs/struct-static-field-initializer.vala',
+       'structs/struct-static-field-initializer.test',
+       'structs/struct-static-property-initializer.test',
+       'structs/structs.vala',
+       'structs/constructor-wrong-name.test',
+       'structs/default-gtype.vala',
+       'structs/gmutex.vala',
+       'structs/gvalue.vala',
+       'structs/gvalue-implicit-comparison.vala',
+       'structs/bug530605.vala',
+       'structs/bug572091.vala',
+       'structs/bug583603.vala',
+       'structs/bug595587.vala',
+       'structs/bug596144.vala',
+       'structs/bug603056.vala',
+       'structs/bug606202.vala',
+       'structs/bug609642.vala',
+       'structs/bug613513.vala',
+       'structs/bug613825.vala',
+       'structs/bug621176.vala',
+       'structs/bug622422.vala',
+       'structs/bug623092.vala',
+       'structs/bug651441.vala',
+       'structs/bug654646.vala',
+       'structs/bug654753.vala',
+       'structs/bug656693.vala',
+       'structs/bug657378.vala',
+       'structs/bug658048.vala',
+       'structs/bug660426.vala',
+       'structs/bug661945.vala',
+       'structs/bug667890.vala',
+       'structs/bug669580.vala',
+       'structs/bug685177.vala',
+       'structs/bug686190.vala',
+       'structs/bug688732.vala',
+       'structs/bug690380.vala',
+       'structs/bug694140.vala',
+       'structs/bug749952.vala',
+       'structs/bug764041.test',
+       'structs/bug775761.vala',
+       'structs/bug777194.vala',
+       'structs/bug777194-2.vala',
+       'delegates/casting.vala',
+       'delegates/compatible.vala',
+       'delegates/delegate_only.vala',
+       'delegates/delegates.vala',
+       'delegates/delegates-error.test',
+       'delegates/error-pos.vala',
+       'delegates/fields.vala',
+       'delegates/fields-no-target.vala',
+       'delegates/gclosure-conversion.vala',
+       'delegates/incompatible.test',
+       'delegates/incompatible-assignment.test',
+       'delegates/incompatible-initializer.test',
+       'delegates/incompatible-target.test',
+       'delegates/instance-method-to-no-target.test',
+       'delegates/instance-method-to-no-target-2.test',
+       'delegates/lambda-mixed-instance-static.vala',
+       'delegates/lambda-shared-closure.vala',
+       'delegates/member-target-destroy.vala',
+       'delegates/reference_transfer.vala',
+       'delegates/return-array-null-terminated.vala',
+       'delegates/wrapper.vala',
+       'delegates/bug519949.test',
+       'delegates/bug539166.vala',
+       'delegates/bug595610.vala',
+       'delegates/bug595639.vala',
+       'delegates/bug598869.test',
+       'delegates/bug632017.test',
+       'delegates/bug638415.vala',
+       'delegates/bug639751.vala',
+       'delegates/bug659778.vala',
+       'delegates/bug683925.vala',
+       'delegates/bug703804.vala',
+       'delegates/bug761360.vala',
+       'delegates/bug772204.test',
+       'delegates/bug792077.vala',
+       'objects/chainup.vala',
+       'objects/class_only.vala',
+       'objects/class-destroysinstance.vala',
+       'objects/class-inner-types.vala',
+       'objects/classes.vala',
+       'objects/classes-interfaces.vala',
+       'objects/classes-interfaces-virtuals.vala',
+       'objects/classes-implicit-implementation.vala',
+       'objects/compact-class.vala',
+       'objects/compact-class-destructor.vala',
+       'objects/compact-class-refcount.vala',
+       'objects/compact-class-custom-ref.vala',
+       'objects/constructor-abstract-public.test',
+       'objects/constructor-variadic.test',
+       'objects/constructor-wrong-name.test',
+       'objects/constructors.vala',
+       'objects/destructors.vala',
+       'objects/duplicating-instance-invalid.test',
+       'objects/dynamic.vala',
+       'objects/generics.vala',
+       'objects/initially-unowned.vala',
+       'objects/field-leading-digit.test',
+       'objects/fields.vala',
+       'objects/gsource.vala',
+       'objects/instance-comparison.vala',
+       'objects/interface_only.vala',
+       'objects/interface-async-base-access.vala',
+       'objects/interface-base-access.vala',
+       'objects/interface-inner-types.vala',
+       'objects/interfaces.vala',
+       'objects/interface-generics.vala',
+       'objects/interface-property-base-access.vala',
+       'objects/interface-property-delegate.vala',
+       'objects/interface-virtual-override.vala',
+       'objects/methods.vala',
+       'objects/paramspec.vala',
+       'objects/plugin-module-init.vala',
+       'objects/properties.vala',
+       'objects/property-array.vala',
+       'objects/property-notify.vala',
+       'objects/property-ownership.vala',
+       'objects/property-read-only-auto.vala',
+       'objects/property-read-only-write.test',
+       'objects/property-construct-only-write.test',
+       'objects/property-construct-only-write-foreign.test',
+       'objects/property-delegate.vala',
+       'objects/property-gboxed-nullable.vala',
+       'objects/property-real-struct-no-accessor.test',
+       'objects/property-simple-type-struct-nullable.vala',
+       'objects/property-static.vala',
+       'objects/regex.vala',
+       'objects/signals.vala',
+       'objects/signals-enum-marshal.vala',
+       'objects/signals-delegate.vala',
+       'objects/signals-delegate-parameter.vala',
+       'objects/signals-lambda-delegate.vala',
+       'objects/singleton.vala',
+       'objects/test-025.vala',
+       'objects/test-026.vala',
+       'objects/test-029.vala',
+       'objects/test-034.vala',
+       'objects/bug541728.test',
+       'objects/bug554329.test',
+       'objects/bug564011.test',
+       'objects/bug564090.test',
+       'objects/bug566909.vala',
+       'objects/bug574146.test',
+       'objects/bug585344.test',
+       'objects/bug587905.test',
+       'objects/bug588203.vala',
+       'objects/bug589928.vala',
+       'objects/bug593137.vala',
+       'objects/bug593260.vala',
+       'objects/bug596621.vala',
+       'objects/bug597155.vala',
+       'objects/bug597161.vala',
+       'objects/bug603491.test',
+       'objects/bug613486.vala',
+       'objects/bug613840.vala',
+       'objects/bug620675.vala',
+       'objects/bug620706.vala',
+       'objects/bug624594.vala',
+       'objects/bug626038.vala',
+       'objects/bug628639.vala',
+       'objects/bug629593.vala',
+       'objects/bug631267.vala',
+       'objects/bug634782.vala',
+       'objects/bug641418-1.test',
+       'objects/bug641418-2.test',
+       'objects/bug641418-3.test',
+       'objects/bug641828.vala',
+       'objects/bug642809.vala',
+       'objects/bug643711.vala',
+       'objects/bug644938.vala',
+       'objects/bug646362.vala',
+       'objects/bug646792.vala',
+       'objects/bug647018.vala',
+       'objects/bug653138.vala',
+       'objects/bug654702.vala',
+       'objects/bug663134.vala',
+       'objects/bug664529.vala',
+       'objects/bug667668.vala',
+       'objects/bug681356.vala',
+       'objects/bug683646.vala',
+       'objects/bug695671.vala',
+       'objects/bug702736.vala',
+       'objects/bug702846.vala',
+       'objects/bug731547.vala',
+       'objects/bug741465.vala',
+       'objects/bug751338.vala',
+       'objects/bug758816.vala',
+       'objects/bug760031.test',
+       'objects/bug764481.vala',
+       'objects/bug767092.test',
+       'objects/bug768823.test',
+       'objects/bug773956-1.test',
+       'objects/bug773956-2.test',
+       'objects/bug615830-1.test',
+       'objects/bug615830-2.test',
+       'objects/bug766739.vala',
+       'objects/bug778632.vala',
+       'objects/bug779038-1.test',
+       'objects/bug779038-2.test',
+       'objects/bug779038-3.test',
+       'objects/bug779219.vala',
+       'objects/bug779955.vala',
+       'objects/bug783897.vala',
+       'objects/bug788964.vala',
+       'objects/bug795225-1.test',
+       'objects/bug795225-2.test',
+       'objects/bug795225-3.test',
+       'objects/bug795225-4.test',
+       'objects/bug795521.vala',
+       'errors/catch-error-code.vala',
+       'errors/catch-in-finally.vala',
+       'errors/default-gtype.vala',
+       'errors/errors.vala',
+       'errors/errorcode.vala',
+       'errors/errordomain.vala',
+       'errors/errordomain-instance-method.test',
+       'errors/errordomain-static-method.vala',
+       'errors/invalid-type-check.test',
+       'errors/method-throws.vala',
+       'errors/bug567181.vala',
+       'errors/bug579101.vala',
+       'errors/bug596228.vala',
+       'errors/bug623049.vala',
+       'errors/bug639589.vala',
+       'errors/bug651145.vala',
+       'errors/bug762377.vala',
+       'errors/bug778224.vala',
+       'asynchronous/bug595735.vala',
+       'asynchronous/bug595755.vala',
+       'asynchronous/bug596177.vala',
+       'asynchronous/bug596861.vala',
+       'asynchronous/bug597294.vala',
+       'asynchronous/bug598677.vala',
+       'asynchronous/bug598697.vala',
+       'asynchronous/bug598698.vala',
+       'asynchronous/bug599568.vala',
+       'asynchronous/bug600827.vala',
+       'asynchronous/bug601558.vala',
+       'asynchronous/bug612641.vala',
+       'asynchronous/bug613484.vala',
+       'asynchronous/bug614294.vala',
+       'asynchronous/bug620740.vala',
+       'asynchronous/bug626053.vala',
+       'asynchronous/bug639591.vala',
+       'asynchronous/bug640721.vala',
+       'asynchronous/bug641182.vala',
+       'asynchronous/bug646945.vala',
+       'asynchronous/bug652252.vala',
+       'asynchronous/bug653861.vala',
+       'asynchronous/bug654336.vala',
+       'asynchronous/bug654337.vala',
+       'asynchronous/bug659886.vala',
+       'asynchronous/bug661961.vala',
+       'asynchronous/bug710103.vala',
+       'asynchronous/bug741929.vala',
+       'asynchronous/bug742621.vala',
+       'asynchronous/bug762819.vala',
+       'asynchronous/bug777242.vala',
+       'asynchronous/bug783543.vala',
+       'asynchronous/bug792660.vala',
+       'asynchronous/bug792942.vala',
+       'asynchronous/bug793158.vala',
+       'asynchronous/catch-error-scope.vala',
+       'asynchronous/catch-in-finally.vala',
+       'asynchronous/creation-missing-yield.test',
+       'asynchronous/closures.vala',
+       'asynchronous/finish-name.vala',
+       'asynchronous/generator.vala',
+       'asynchronous/out-parameter-invalid.test',
+       'asynchronous/result-pos.vala',
+       'asynchronous/variadic-invalid.test',
+       'asynchronous/variadic-invalid-2.test',
+       'asynchronous/yield.vala',
+       'generics/arrays-not-supported.test',
+       'generics/constructor-chain-up.vala',
+       'generics/inference-argument-may-fail.vala',
+       'generics/inference-static-function.vala',
+       'generics/parameter-sizeof-initializer.vala',
+       'generics/member-dup-destroy.vala',
+       'generics/type-parameter-properties.vala',
+       'generics/bug640330.test',
+       'generics/bug640330.vala',
+       'generics/bug694765-1.vala',
+       'generics/bug694765-2.vala',
+       'generics/bug694765-3.vala',
+       'annotations/deprecated.vala',
+       'annotations/description.vala',
+       'annotations/noaccessormethod.test',
+       'scanner/comment-not-closed.test',
+       'scanner/preprocessor-invalid.test',
+       'scanner/preprocessor-missing-paren.test',
+       'scanner/preprocessor-unexpected.test',
+       'scanner/regex-escape-invalid.test',
+       'scanner/regex-escape-u-digit-length.test',
+       'scanner/regex-escape-u-empty.test',
+       'scanner/regex-escape-x-digit-length.test',
+       'scanner/regex-escape-x-empty.test',
+       'scanner/regex-escape-x.vala',
+       'scanner/regex-multiple-i.test',
+       'scanner/regex-multiple-m.test',
+       'scanner/regex-multiple-s.test',
+       'scanner/regex-multiple-x.test',
+       'scanner/string-escape-u-digit-length.test',
+       'scanner/string-escape-u-empty.test',
+       'scanner/string-escape-x-digit-length.test',
+       'scanner/string-escape-x-empty.test',
+       'scanner/string-escape-x.vala',
+       'parser/assignment.vala',
+       'parser/attribute-duplicate.test',
+       'parser/attribute-wrong-number.test',
+       'parser/constant-owned.test',
+       'parser/constant-local-owned.test',
+       'parser/constructor-class-exists.test',
+       'parser/constructor-exists.test',
+       'parser/constructor-no-new.test',
+       'parser/constructor-no-static-class.test',
+       'parser/constructor-static-exists.test',
+       'parser/continue-statement.vala',
+       'parser/creation-no-abstract.test',
+       'parser/creation-no-new.test',
+       'parser/creation-no-override.test',
+       'parser/creation-no-virtual.test',
+       'parser/delegate-anonymous.test',
+       'parser/delegate-no-new.test',
+       'parser/destructor-class-exists.test',
+       'parser/destructor-exists.test',
+       'parser/destructor-no-new.test',
+       'parser/destructor-no-static-class.test',
+       'parser/destructor-static-exists.test',
+       'parser/destructor-wrong-name.test',
+       'parser/do-statement.vala',
+       'parser/expect-endbrace.test',
+       'parser/expect-error.test',
+       'parser/field-no-abstract.test',
+       'parser/field-no-override.test',
+       'parser/field-no-static-class.test',
+       'parser/field-no-virtual.test',
+       'parser/foreach-no-type.test',
+       'parser/function-syntax-error.test',
+       'parser/inner-array-size.test',
+       'parser/invalid-brace.test',
+       'parser/local-variable.vala',
+       'parser/lock-statement.vala',
+       'parser/main-block.vala',
+       'parser/method-no-abstract-override.test',
+       'parser/method-no-abstract-virtual-override.test',
+       'parser/method-no-abstract-virtual.test',
+       'parser/method-no-class-abstract.test',
+       'parser/method-no-class-override.test',
+       'parser/method-no-class-virtual.test',
+       'parser/method-no-static-abstract.test',
+       'parser/method-no-static-class.test',
+       'parser/method-no-static-override.test',
+       'parser/method-no-static-virtual.test',
+       'parser/method-no-virtual-override.test',
+       'parser/namespaces.vala',
+       'parser/namespace-missing-bracket.test',
+       'parser/preprocessor.vala',
+       'parser/preprocessor-glib.vala',
+       'parser/preprocessor-vala.vala',
+       'parser/property-default-redefined.test',
+       'parser/property-get-must-have-body.test',
+       'parser/property-get-redefined.test',
+       'parser/property-get-set-construct.test',
+       'parser/property-no-abstract-override.test',
+       'parser/property-no-abstract-virtual.test',
+       'parser/property-no-abstract-virtual-override.test',
+       'parser/property-no-static-class.test',
+       'parser/property-no-virtual-override.test',
+       'parser/property-set-must-have-body.test',
+       'parser/property-set-redefined.test',
+       'parser/qualified-member-access.vala',
+       'parser/qualified-symbol-access.vala',
+       'parser/signal-no-class.test',
+       'parser/signal-no-static.test',
+       'parser/statement-outside-root.test',
+       'parser/switch-statement.vala',
+       'parser/template.vala',
+       'parser/tuple.vala',
+       'parser/unsupported-property-async.test',
+       'parser/unsupported-property-throws.test',
+       'parser/using-ambiguous-reference.test',
+       'parser/using-directive.vala',
+       'parser/using-invalid-namespace.test',
+       'parser/yield-method.test',
+       'parser/yield-return.test',
+       'parser/yield-return.vala',
+       'parser/bug728574.vala',
+       'parser/bug749576.vala',
+       'resolver/class-base-cycle.test',
+       'resolver/interface-prerequisite-cycle.test',
+       'resolver/struct-base-cycle.test',
+       'ordering/delegate-class.vala',
+       'ordering/delegate-enum.vala',
+       'ordering/delegate-interface.vala',
+       'ordering/delegate-struct.vala',
+       'ordering/struct-delegate.vala',
+       'semantic/address-of-invalid.test',
+       'semantic/array-stacked.test',
+       'semantic/array-incompatible-initializer.test',
+       'semantic/array-incompatible-initializer2.test',
+       'semantic/assignment-element-incompatible-ownership.test',
+       'semantic/assignment-element-incompatible-type.test',
+       'semantic/assignment-same-variable.vala',
+       'semantic/assignment-signal-incompatible-method.test',
+       'semantic/assignment-signal-incompatible-type.test',
+       'semantic/cast-gvariant-unsupported.test',
+       'semantic/chainup-gobject-incompatible-type-property.test',
+       'semantic/chainup-gobject-unknown-property.test',
+       'semantic/chainup-gobject-unsupported-type-property.test',
+       'semantic/class-base-type-invalid.test',
+       'semantic/class-base-type-less-accessible.test',
+       'semantic/class-base-type-multiple.test',
+       'semantic/class-compact-field-class.test',
+       'semantic/class-compact-field-lock.test',
+       'semantic/class-compact-field-private.test',
+       'semantic/class-compact-derived-instance-field.test',
+       'semantic/class-compact-interface.test',
+       'semantic/class-compact-method-baseaccess.test',
+       'semantic/class-compact-property-baseaccess.test',
+       'semantic/class-missing-implement-interface-method.test',
+       'semantic/class-missing-implement-interface-property.test',
+       'semantic/class-missing-implement-interfaces-methods.test',
+       'semantic/class-missing-implement-interfaces-methods2.test',
+       'semantic/class-missing-implement-interfaces-methods3.test',
+       'semantic/class-missing-implement-method.test',
+       'semantic/class-missing-implement-property.test',
+       'semantic/class-missing-prerequisites.test',
+       'semantic/class-singleton-base.test',
+       'semantic/class-singleton-non-gobject.test',
+       'semantic/class-too-few-type-arguments.test',
+       'semantic/class-too-many-type-arguments.test',
+       'semantic/constant-extern.test',
+       'semantic/constant-value.test',
+       'semantic/constant-value-missing.test',
+       'semantic/constant-value-type.test',
+       'semantic/constant-void.test',
+       'semantic/construct-without-gobject.test',
+       'semantic/delegate-too-few-type-arguments.test',
+       'semantic/delegate-too-many-type-arguments.test',
+       'semantic/enum-empty.test',
+       'semantic/errordomain-empty.test',
+       'semantic/field-accessibility.test',
+       'semantic/field-compact-static.test',
+       'semantic/field-external.test',
+       'semantic/field-incompatible.test',
+       'semantic/field-interface.test',
+       'semantic/field-namespace-owned.test',
+       'semantic/field-non-constant.test',
+       'semantic/field-owned-to-unowned.test',
+       'semantic/field-static-instance-access.test',
+       'semantic/field-void.test',
+       'semantic/floating-reference.vala',
+       'semantic/foreach-iterator-args.test',
+       'semantic/foreach-iterator-element-owned.test',
+       'semantic/foreach-iterator-void.test',
+       'semantic/foreach-iterator-wrong-types.test',
+       'semantic/foreach-missing-generic-type.test',
+       'semantic/foreach-missing-iterator.test',
+       'semantic/foreach-missing-next-value.test',
+       'semantic/foreach-next-args.test',
+       'semantic/foreach-next-get-args.test',
+       'semantic/foreach-next-get-void.test',
+       'semantic/foreach-next-missing-get.test',
+       'semantic/foreach-next-value-args.test',
+       'semantic/foreach-next-value-void.test',
+       'semantic/foreach-next-void.test',
+       'semantic/foreach-wrong-types.test',
+       'semantic/initializer-unknown-type.test',
+       'semantic/interface-prerequisite-invalid.test',
+       'semantic/interface-prerequisite-less-accessible.test',
+       'semantic/interface-prerequisite-multiple.test',
+       'semantic/localvariable-owned-to-unowned.test',
+       'semantic/localvariable-var-static-access-instance-field.test',
+       'semantic/localvariable-var-static-access-instance-method.test',
+       'semantic/localvariable-var-static-access-instance-property.test',
+       'semantic/localvariable-var-without-initializer.test',
+       'semantic/localvariable-void.test',
+       'semantic/member-access-async-callback-invalid.test',
+       'semantic/member-access-capture-out.test',
+       'semantic/member-access-protected-invalid.test',
+       'semantic/method-abstract.test',
+       'semantic/method-abstract-body.test',
+       'semantic/method-async-ref-parameter.test',
+       'semantic/method-body.test',
+       'semantic/method-class-abstract.test',
+       'semantic/method-derived-compact.test',
+       'semantic/method-error-accessibility.test',
+       'semantic/method-extern-abstract.test',
+       'semantic/method-extern-body.test',
+       'semantic/method-extern-virtual.test',
+       'semantic/method-interface-already-found.test',
+       'semantic/method-interface-not-found.test',
+       'semantic/method-main-async.test',
+       'semantic/method-main-inline.test',
+       'semantic/method-main-throws.test',
+       'semantic/method-override.test',
+       'semantic/method-postcondition.test',
+       'semantic/method-precondition.test',
+       'semantic/method-private-abstract.test',
+       'semantic/method-private-override.test',
+       'semantic/method-private-virtual.test',
+       'semantic/method-protected.test',
+       'semantic/method-return-accessibility.test',
+       'semantic/method-too-few-type-arguments.test',
+       'semantic/method-too-many-type-arguments.test',
+       'semantic/method-virtual.test',
+       'semantic/method-virtual-body.test',
+       'semantic/objectcreation-abstract-class.test',
+       'semantic/objectcreation-no-creation-method.test',
+       'semantic/objectcreation-non-public-constructor.test',
+       'semantic/objectcreation-unsupported-type.test',
+       'semantic/parameter-accessibility.test',
+       'semantic/parameter-default-type.test',
+       'semantic/parameter-out-default.test',
+       'semantic/parameter-params.test',
+       'semantic/parameter-ref-default.test',
+       'semantic/parameter-void.test',
+       'semantic/pointer-indirection-type-not-supported.test',
+       'semantic/pointer-indirection-void-not-supported.test',
+       'semantic/property-abstract.test',
+       'semantic/property-abstract-derived-compact.test',
+       'semantic/property-accessibility.test',
+       'semantic/property-construct.test',
+       'semantic/property-initializer-type.test',
+       'semantic/property-override.test',
+       'semantic/property-override-class.test',
+       'semantic/property-override-interface.test',
+       'semantic/property-static-instance-access.test',
+       'semantic/property-struct-abstract.test',
+       'semantic/property-struct-override.test',
+       'semantic/property-struct-protected.test',
+       'semantic/property-struct-virtual.test',
+       'semantic/property-void.test',
+       'semantic/reference-transfer-not-supported.test',
+       'semantic/reference-transfer-unavailable.test',
+       'semantic/signal-clash-inherited.test',
+       'semantic/signal-compact-class.test',
+       'semantic/signal-detail-invalid.test',
+       'semantic/signal-detail-non-string.test',
+       'semantic/struct-derived.test',
+       'semantic/signal-disconnect-invalid.test',
+       'semantic/struct-field-initializer.test',
+       'semantic/struct-invalid-base.test',
+       'semantic/struct-recursive.test',
+       'semantic/switch-duplicate-label.test',
+       'semantic/switch-label-not-compatible.test',
+       'semantic/switch-label-not-constant.test',
+       'semantic/switch-type-unsupported.test',
+       'semantic/throw-no-error-type.test',
+       'semantic/type-argument-ownership-mismatch.test',
+       'semantic/unary-unsupported-complement.test',
+       'semantic/unary-unsupported-increment.test',
+       'semantic/unary-unsupported-minus.test',
+       'semantic/unary-unsupported-negation.test',
+       'semantic/yield-call-requires-async-context.test',
+       'semantic/yield-call-requires-async-method.test',
+       'semantic/yield-creation-requires-async-context.test',
+       'semantic/yield-creation-requires-async-method.test',
+       'semantic/yield-statement-requires-async-context.test',
+]
+
+dbus_test_cases = [
+       'dbus/basic-types.test',
+       'dbus/arrays.test',
+       'dbus/structs.test',
+       'dbus/errors.test',
+       'dbus/async.test',
+       'dbus/async-errors.test',
+       'dbus/dynamic-method.test',
+       'dbus/enum-string-marshalling.vala',
+       'dbus/signals.test',
+       'dbus/filedescriptor.test',
+       'dbus/filedescriptor-async.test',
+       'dbus/filedescriptor-errors.test',
+       'dbus/dicts.test',
+       'dbus/bug596862.vala',
+       'dbus/bug602003.test',
+       'dbus/bug735437.test',
+       'dbus/bug782719.test',
+       'dbus/bug783002.test',
+       'dbus/bug792277.vala',
+       'dbus/rawvariants.test',
+]
+
+gir_test_cases = [
+       'gir/bug651773.test',
+       'gir/bug667751.test',
+       'gir/bug742012.test',
+       'gir/bug788775.test',
+       'gir/bug792998.test',
+       'gir/array-fixed-length.test',
+       'gir/async-result-pos.test',
+       'gir/async-sync-out.test',
+       'gir/class.test',
+       'gir/delegate-alias-without-target.test',
+       'gir/delegate-array-length-type.test',
+       'gir/delegate-closure-destroy-index-conflict.test',
+       'gir/delegate-error-pos.test',
+       'gir/enum.test',
+       'gir/errordomain.test',
+       'gir/instance-parameter-owned.test',
+       'gir/method-array-length-type.test',
+       'gir/parameter-array-length-type.test',
+       'gir/parameter-nullable-out-simple-type.test',
+       'gir/property-non-readable.test',
+       'gir/symbol-type-csuffix.test',
+]
+
+test_cases_non_null = [
+       'nullability/bug611223.vala',
+       'nullability/local-variable-invalid-convert.test',
+       'nullability/member-access-nullable-instance.test',
+       'nullability/method-parameter-invalid-convert.test',
+       'nullability/method-return-invalid-convert.test',
+]
+
+test_cases_linux = [
+       'linux/bug793444.vala',
+       'posix/file-commandpipe.vala',
+]
+
+test_cases += [
+       'genie/class.gs',
+       'genie/control-flow-if-do.gs',
+       'genie/control-flow-if-else.gs',
+       'genie/control-flow-if-else-if.gs',
+       'genie/control-flow-if-greater-than.gs',
+       'genie/control-flow-if.gs',
+       'genie/control-flow-if-identity.gs',
+       'genie/control-flow-if-less-than.gs',
+       'genie/enum.gs',
+       'genie/enum-with-keyword-values.gs',
+       'genie/function.gs',
+       'genie/function-returns-closure.gs',
+       'genie/function-with-argument.gs',
+       'genie/function-with-return-value.gs',
+       'genie/indentation-with-spaces.gs',
+       'genie/init.gs',
+       'genie/init-int.gs',
+       'genie/literal-boolean-assignment.gs',
+       'genie/literal-boolean.gs',
+       'genie/literal-character.gs',
+       'genie/literal-hexadecimal.gs',
+       'genie/literal-integer.gs',
+       'genie/literal-integer-long-long-suffix.gs',
+       'genie/literal-null.gs',
+       'genie/literal-octal.gs',
+       'genie/literal-real.gs',
+       'genie/literal-regex.gs',
+       'genie/literal-template-string.gs',
+       'genie/literal-verbatim-string.gs',
+       'genie/operator-addition.gs',
+       'genie/operator-assignment-combined.gs',
+       'genie/operator-assignment.gs',
+       'genie/operator-bitwise-and.gs',
+       'genie/operator-bitwise-left-shift.gs',
+       'genie/operator-bitwise-not.gs',
+       'genie/operator-bitwise-or.gs',
+       'genie/operator-bitwise-right-shift.gs',
+       'genie/operator-bitwise-xor.gs',
+       'genie/operator-division.gs',
+       'genie/operator-equal.gs',
+       'genie/operator-greater-than-equal.gs',
+       'genie/operator-less-than-equal.gs',
+       'genie/operator-less-than.gs',
+       'genie/operator-logical-and.gs',
+       'genie/operator-logical-not.gs',
+       'genie/operator-logical-or.gs',
+       'genie/operator-modulo.gs',
+       'genie/operator-multiply.gs',
+       'genie/operator-not-equal.gs',
+       'genie/operator-post-decrement.gs',
+       'genie/operator-post-increment.gs',
+       'genie/operator-pre-decrement.gs',
+       'genie/operator-pre-increment.gs',
+       'genie/operators-greater-than.gs',
+       'genie/operator-subtraction.gs',
+       'genie/operator-ternary.gs',
+       'genie/preparser-and-expression.gs',
+       'genie/preparser-elif.gs',
+       'genie/preparser-equality-expression.gs',
+       'genie/preparser.gs',
+       'genie/preparser-not.gs',
+       'genie/preparser-or-expression.gs',
+       'genie/struct.gs',
+]
+
+vala_flags = [
+       '--vapidir', join_paths(meson.source_root(), 'vapi'),
+       '--pkg', 'gio-2.0',
+       '--disable-warnings',
+       '--main', 'main', '--save-temps',
+       '--cc', cc.cmd_array()[-1],
+       '-X', '-g',
+       '-X', '-O0',
+       '-X', '-pipe',
+       '-X', '-lm',
+       '-X', '-DGETTEXT_PACKAGE="valac"',
+]
+
+test_envars = [
+       'G_DEBUG=fatal-warnings',
+]
+
+foreach flag : supported_test_cflags
+       vala_flags += ['-X', flag]
+endforeach
+
+preparetest = find_program('prepare-test.py')
+
+foreach case : test_cases
+       if case.endswith('.vala') or case.endswith('.gs')
+               test(case,
+                       valac_exe,
+                       workdir: meson.current_build_dir(),
+                       args: vala_flags + [join_paths(meson.current_source_dir(), case)],
+                       env: test_envars,
+               )
+       else
+               invalid_case = run_command(preparetest,
+                       join_paths(meson.current_source_dir(), case),
+                       join_paths(meson.current_build_dir(), case.underscorify() + '.vala'),
+               )
+               test(case,
+                       valac_exe,
+                       workdir: meson.current_build_dir(),
+                       should_fail: true,
+                       args: vala_flags + [case.underscorify() + '.vala'],
+               )
+       endif
+endforeach
+
+foreach case : test_cases_non_null
+       if case.endswith('.vala') or case.endswith('.gs')
+               test(case,
+                       valac_exe,
+                       workdir: meson.current_build_dir(),
+                       args: vala_flags + ['--enable-experimental-non-null', 
join_paths(meson.current_source_dir(), case)],
+                       env: test_envars,
+               )
+       else
+               invalid_case = run_command(preparetest,
+                       join_paths(meson.current_source_dir(), case),
+                       join_paths(meson.current_build_dir(), case.underscorify() + '.vala'),
+               )
+               test(case,
+                       valac_exe,
+                       workdir: meson.current_build_dir(),
+                       should_fail: true,
+                       args: vala_flags + ['--enable-experimental-non-null', case.underscorify() + '.vala'],
+               )
+       endif
+endforeach
+
+foreach case : test_cases_linux
+       if case.endswith('.vala') or case.endswith('.gs')
+               test(case,
+                       valac_exe,
+                       workdir: meson.current_build_dir(),
+                       args: vala_flags + ['--pkg', 'linux', join_paths(meson.current_source_dir(), case)],
+                       env: test_envars,
+               )
+       endif
+endforeach
diff --git a/tests/prepare-test.py b/tests/prepare-test.py
new file mode 100644
index 000000000..bdf7502a4
--- /dev/null
+++ b/tests/prepare-test.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python3
+
+import sys, os, re
+from pathlib import Path
+
+if len(sys.argv) != 3:
+       print("Wrong amount of parameters.")
+
+inputf = Path(sys.argv[1])
+outputf = Path(sys.argv[2])
+
+with inputf.open('r') as ifile:
+       with outputf.open('w') as ofile:
+               if not ifile.readline().strip() == "Invalid Code":
+                       ifile.seek(0)
+               lines = ifile.readlines()
+               ofile.writelines(lines)
diff --git a/valadoc/meson.build b/valadoc/meson.build
index 46de4975a..08e891e5b 100644
--- a/valadoc/meson.build
+++ b/valadoc/meson.build
@@ -20,3 +20,4 @@ meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@ vala
 
 subdir('doclets')
 subdir('icons')
+subdir('tests')
diff --git a/valadoc/tests/meson.build b/valadoc/tests/meson.build
new file mode 100644
index 000000000..039a4be5e
--- /dev/null
+++ b/valadoc/tests/meson.build
@@ -0,0 +1,70 @@
+test_cases = [
+       'libvaladoc/errorreporter.vala',
+       'libvaladoc/gtkdoc-scanner.vala',
+       'libvaladoc/markupreader.vala',
+       'libvaladoc/parser/manyrule.vala',
+       'libvaladoc/parser/oneofrule.vala',
+       'libvaladoc/parser/optionalrule.vala',
+       'libvaladoc/parser/sequencerule.vala',
+       'libvaladoc/parser/stubrule.vala',
+]
+
+vala_flags = [
+       '-X', '-DTOP_SRC_DIR="@0@"'.format(meson.source_root()),
+       '--vapidir', join_paths(meson.source_root(), 'vapi'),
+       '--pkg', 'gio-2.0',
+       '--disable-warnings',
+       '--main', 'main', '--save-temps',
+       '--cc', cc.cmd_array()[-1],
+       '-X', '-g',
+       '-X', '-O0',
+       '-X', '-pipe',
+       '-X', '-lm',
+       '--pkg', 'libgvc',
+       '--vapidir', join_paths(meson.build_root(), 'vala'),
+       '--pkg', 'libvala@0@'.format(vala_version_suffix),
+       '--vapidir', join_paths(meson.build_root(), 'libvaladoc'),
+       '--pkg', 'valadoc@0@'.format(vala_version_suffix),
+       '-X', '-L' + join_paths(meson.build_root(), 'vala'),
+       '-X', '-lvala@0@'.format(vala_version_suffix),
+       '-X', '-L' + join_paths(meson.build_root(), 'libvaladoc'),
+       '-X', '-lvaladoc@0@'.format(vala_version_suffix),
+       '-X', '-L' + join_paths(meson.build_root(), 'libvaladoc'),
+       '-X', '-lvaladoc@0@'.format(vala_version_suffix),
+       '-X', '-I' + join_paths(meson.build_root(), 'gee'),
+       '-X', '-I' + join_paths(meson.build_root(), 'vala'),
+       '-X', '-I' + join_paths(meson.build_root(), 'libvaladoc'),
+       join_paths(meson.source_root(), 'valadoc', 'tests', 'libvaladoc', 'parser', 'generic-scanner.vala'),
+]
+
+foreach flag : supported_test_cflags
+       vala_flags += ['-X', flag]
+endforeach
+
+foreach case : test_cases
+       test(case,
+               valac_exe,
+               workdir: meson.current_build_dir(),
+               args: vala_flags + [join_paths(meson.current_source_dir(), case)],
+               depends: [valacore_lib, libvaladoc_lib]
+       )
+endforeach
+
+driver_exe = executable('driver',
+       files(
+               'drivers/driver-test.vala',
+               'drivers/generic-api-test.vala',
+               join_paths(meson.source_root(), 'valadoc/girwriter.vala'),
+               join_paths(meson.source_root(), 'valadoc/initializerbuilder.vala'),
+               join_paths(meson.source_root(), 'valadoc/symbolresolver.vala'),
+               join_paths(meson.source_root(), 'valadoc/treebuilder.vala'),
+       ),
+       c_args: '-DTOP_SRC_DIR="@0@"'.format(meson.source_root()),
+       dependencies: [gobject_dep, valacodegen_dep, libvaladoc_dep],
+       install: false,
+)
+
+test('valadoc/driver',
+       driver_exe,
+       workdir: meson.current_build_dir(),
+)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]