tools/jsii-compliance/suite.ts (533 lines of code) (raw):
import * as schema from './schema';
export const suite: schema.Suite = {
name: 'standard',
description:
'JSII standard compliance test suite. These tests must be implemented in each language binding.',
bindings: {
java: {
report: 'packages/@jsii/java-runtime-test/project/compliance-report.json',
},
golang: {
report: 'packages/@jsii/go-runtime-test/project/compliance-report.json',
},
dotnet: {
report: 'packages/@jsii/dotnet-runtime-test/compliance-report.json',
},
python: {
report: 'packages/@jsii/python-runtime-test/compliance-report.json',
},
},
testCases: [
{
name: 'asyncOverrides_overrideCallsSuper',
description: '',
},
{
name: 'arrayReturnedByMethodCanBeRead',
description:
'Array created in the kernel can be queried for its elements',
},
{
name: 'unionProperties',
description:
'Kernel values that accept a union type can be set, and are returned with the concrete type',
},
{
name: 'syncOverrides',
description: '',
},
{
name: 'useEnumFromScopedModule',
description:
'Property that accepts an enum type from a third-party package can be set, and read',
},
{
name: 'createObjectAndCtorOverloads',
description:
'Class can be instantiated with empty and non empty constructor',
},
{
name: 'fail_syncOverrides_callsDoubleAsync_method',
description: '',
},
{
name: 'collectionOfInterfaces_MapOfStructs',
description: '',
},
{
name: 'asyncOverrides_overrideAsyncMethod',
description: '',
},
{
name: 'statics',
description:
'Static functions can be invoked and accept and return the correct type',
},
{
name: 'structs_returnedLiteralEqualsNativeBuilt',
description:
'A struct returned from the kernel is not distinguishable from a struct created natively',
},
{
name: 'classesCanSelfReferenceDuringClassInitialization',
description: 'Classes can reference other classes during initialization',
},
{
name: 'canObtainStructReferenceWithOverloadedSetter',
description:
'A class with a settable property of a union type can be returned from the kernel',
},
{
name: 'callbacksCorrectlyDeserializeArguments',
description:
'Runtime properly deserializes callback arguments from the kernel',
},
{
name: 'canUseInterfaceSetters',
description:
'Read-write properties generate the corresponding setters in the target language',
},
{
name: 'propertyOverrides_interfaces',
description: 'Target language can override properties of host interfaces',
},
{
name: 'syncOverrides_callsSuper',
description: '',
},
{
name: 'testJsiiAgent',
description:
'Asserts the correct value of the JSII_AGENT env variable for the kernel process',
},
{
name: 'doNotOverridePrivates_method_private',
description:
'Non public methods on the guest class do not override methods in the host class',
},
{
name: 'pureInterfacesCanBeUsedTransparently',
description:
'Guest implementation of a pure host interface can be used by host consumers accepting that interface',
},
{
name: 'nullShouldBeTreatedAsUndefined',
description:
'Null value of target language is treated as undefined by the host',
},
{
name: 'primitiveTypes',
description:
'All Primitive types are set and read with their respective types',
},
{
name: 'reservedKeywordsAreSlugifiedInClassProperties',
description:
'TS code that uses reserved words as class property names get slugified so it is usable in the target language',
},
{
name: 'objectIdDoesNotGetReallocatedWhenTheConstructorPassesThisOut',
description:
"Ensure the JSII kernel can pass 'this' out to JSII remotes from within the constructor",
},
{
name: 'interfaceBuilder',
description: "Seems to be a duplicate of 'propertyOverrides_interfaces'?",
},
{
name: 'unionTypes',
description: '',
},
{
name: 'arrays',
description: '',
},
{
name: 'staticMapInClassCannotBeModified',
description: '',
},
{
name: 'consts',
description: '',
},
{
name: 'pureInterfacesCanBeUsedTransparently_WhenTransitivelyImplementing',
description: '',
},
{
name: 'reservedKeywordsAreSlugifiedInMethodNames',
description: '',
},
{
name: 'exceptions',
description: '',
},
{
name: 'testLiteralInterface',
description: '',
},
{
name: 'structs_nonOptionalhashCode',
description: '',
},
{
name: 'propertyOverrides_set_throws',
description: '',
},
{
name: 'canLeverageIndirectInterfacePolymorphism',
description: '',
},
{
name: 'fluentApi',
description: '',
},
{
name: 'staticListInClassCanBeReadCorrectly',
description: '',
},
{
name: 'mapReturnedByMethodCannotBeModified',
description: '',
},
{
name: 'receiveInstanceOfPrivateClass',
description: '',
},
{
name: 'staticMapInClassCanBeReadCorrectly',
description: '',
},
{
name: 'testNativeObjectsWithInterfaces',
description: '',
},
{
name: 'doNotOverridePrivates_property_getter_public',
description: '',
},
{
name: 'equalsIsResistantToPropertyShadowingResultVariable',
description: '',
},
{
name: 'listInClassCanBeReadCorrectly',
description: '',
},
{
name: 'useNestedStruct',
description: '',
},
{
name: 'testFluentApiWithDerivedClasses',
description: '',
},
{
name: 'interfacesCanBeUsedTransparently_WhenAddedToJsiiType',
description: '',
},
{
name: 'canOverrideProtectedGetter',
description: '',
},
{
name: 'getAndSetEnumValues',
description: '',
},
{
name: 'structs_nonOptionalequals',
description: '',
},
{
name: 'testInterfaceParameter',
description: '',
},
{
name: 'liftedKwargWithSameNameAsPositionalArg',
description: '',
},
{
name: 'creationOfNativeObjectsFromJavaScriptObjects',
description: '',
},
{
name: 'canOverrideProtectedMethod',
description: '',
},
{
name: 'canLoadEnumValues',
description: '',
},
{
name: 'eraseUnsetDataValues',
description: '',
},
{
name: 'maps',
description: '',
},
{
name: 'structs_containsNullChecks',
description: '',
},
{
name: 'canOverrideProtectedSetter',
description: '',
},
{
name: 'asyncOverrides_callAsyncMethod',
description: '',
},
{
name: 'nodeStandardLibrary',
description: '',
},
{
name: 'dates',
description: '',
},
{
name: 'collectionOfInterfaces_ListOfStructs',
description: '',
},
{
name: 'objRefsAreLabelledUsingWithTheMostCorrectType',
description: '',
},
{
name: 'unionPropertiesWithBuilder',
description: '',
},
{
name: 'doNotOverridePrivates_property_getter_private',
description: '',
},
{
name: 'structs_withDiamondInheritance_correctlyDedupeProperties',
description: '',
},
{
name: 'abstractMembersAreCorrectlyHandled',
description: '',
},
{
name: 'doNotOverridePrivates_property_by_name_private',
description: '',
},
{
name: 'testNullIsAValidOptionalMap',
description: '',
},
{
name: 'mapReturnedByMethodCanBeRead',
description: '',
},
{
name: 'structs_multiplePropertiesEquals',
description: '',
},
{
name: 'mapInClassCanBeReadCorrectly',
description: '',
},
{
name: 'staticListInClassCannotBeModified',
description: '',
},
{
name: 'collectionOfInterfaces_MapOfInterfaces',
description: '',
},
{
name: 'asyncOverrides_overrideThrows',
description: '',
},
{
name: 'callMethods',
description: '',
},
{
name: 'returnAbstract',
description: '',
},
{
name: 'dynamicTypes',
description: '',
},
{
name: 'hashCodeIsResistantToPropertyShadowingResultVariable',
description: '',
},
{
name: 'returnSubclassThatImplementsInterface976',
description: '',
},
{
name: 'structs_optionalEquals',
description: '',
},
{
name: 'propertyOverrides_get_calls_super',
description: '',
},
{
name: 'unmarshallIntoAbstractType',
description: '',
},
{
name: 'structs_multiplePropertiesHashCode',
description: '',
},
{
name: 'fail_syncOverrides_callsDoubleAsync_propertyGetter',
description: '',
},
{
name: 'propertyOverrides_get_set',
description: '',
},
{
name: 'variadicMethodCanBeInvoked',
description: '',
},
{
name: 'collectionTypes',
description: '',
},
{
name: 'asyncOverrides_overrideAsyncMethodByParentClass',
description: '',
},
{
name: 'structs_optionalHashCode',
description: '',
},
{
name: 'testStructsCanBeDowncastedToParentType',
description: '',
},
{
name: 'propertyOverrides_get_throws',
description: '',
},
{
name: 'getSetPrimitiveProperties',
description: '',
},
{
name: 'getAndSetNonPrimitiveProperties',
description: '',
},
{
name: 'reservedKeywordsAreSlugifiedInStructProperties',
description: '',
},
{
name: 'fail_syncOverrides_callsDoubleAsync_propertySetter',
description: '',
},
{
name: 'doNotOverridePrivates_method_public',
description: '',
},
{
name: 'testNullIsAValidOptionalList',
description: '',
},
{
name: 'mapInClassCannotBeModified',
description: '',
},
{
name: 'doNotOverridePrivates_property_by_name_public',
description: '',
},
{
name: 'asyncOverrides_twoOverrides',
description: '',
},
{
name: 'propertyOverrides_set_calls_super',
description: '',
},
{
name: 'iso8601DoesNotDeserializeToDate',
description: '',
},
{
name: 'collectionOfInterfaces_ListOfInterfaces',
description: '',
},
{
name: 'undefinedAndNull',
description: '',
},
{
name: 'structs_serializeToJsii',
description: '',
},
{
name: 'structsAreUndecoratedOntheWayToKernel',
description: '',
},
{
name: 'canObtainReferenceWithOverloadedSetter',
description: '',
},
{
name: 'testJSObjectLiteralToNative',
description: '',
},
{
name: 'structs_stepBuilders',
description: '',
},
{
name: 'classWithPrivateConstructorAndAutomaticProperties',
description: '',
},
{
name: 'arrayReturnedByMethodCannotBeModified',
description: '',
},
{
name: 'correctlyDeserializesStructUnions',
description: '',
},
{
name: 'subclassing',
description: '',
},
{
name: 'testInterfaces',
description: '',
},
{
name: 'callbackParameterIsInterface',
description: 'Validates pure interfaces can be passed to callbacks',
},
{
name: 'classCanBeUsedWhenNotExpressedlyLoaded',
description:
'Validates that types not explicitly loaded by the user can safely be returned by JS code',
},
{
name: 'downcasting',
description: 'Ensures unsafe-cast features work as expected',
},
{
name: 'strippedDeprecatedMemberCanBeReceived',
description:
'Ensures --strip-deprecated does not cause odd runtime errors',
},
{
name: 'exceptionMessage',
description:
'Verifies that custom exception names are correctly forwarded',
},
{
name: 'voidReturningAsync',
description: 'Verifies that returning Promise<void> is correctly handled',
},
],
};