qapi-tests: New tests for union, alternate command arguments
A command's 'data' must be a struct type, given either as a dictionary, or as struct type name. Existing test case data-int.json covers simple type 'int'. Add test cases for type names referring to union and alternate types. The latter is caught (good), but the former is not (bug). Events have the same problem, but since they get checked by the same code, we don't bother to duplicate the tests. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
		
							parent
							
								
									6af9a8fc8e
								
							
						
					
					
						commit
						d9658d58e3
					
				@ -231,7 +231,8 @@ check-qapi-schema-y := $(addprefix tests/qapi-schema/, \
 | 
				
			|||||||
	type-bypass.json type-bypass-no-gen.json type-bypass-bad-gen.json \
 | 
						type-bypass.json type-bypass-no-gen.json type-bypass-bad-gen.json \
 | 
				
			||||||
	args-array-empty.json args-array-unknown.json args-int.json \
 | 
						args-array-empty.json args-array-unknown.json args-int.json \
 | 
				
			||||||
	args-unknown.json args-member-unknown.json args-member-array.json \
 | 
						args-unknown.json args-member-unknown.json args-member-array.json \
 | 
				
			||||||
	args-member-array-bad.json returns-array-bad.json returns-int.json \
 | 
						args-member-array-bad.json args-alternate.json args-union.json \
 | 
				
			||||||
 | 
						returns-array-bad.json returns-int.json \
 | 
				
			||||||
	returns-unknown.json returns-alternate.json returns-whitelist.json \
 | 
						returns-unknown.json returns-alternate.json returns-whitelist.json \
 | 
				
			||||||
	missing-colon.json missing-comma-list.json missing-comma-object.json \
 | 
						missing-colon.json missing-comma-list.json missing-comma-object.json \
 | 
				
			||||||
	nested-struct-data.json nested-struct-returns.json non-objects.json \
 | 
						nested-struct-data.json nested-struct-returns.json non-objects.json \
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								tests/qapi-schema/args-alternate.err
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/qapi-schema/args-alternate.err
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					tests/qapi-schema/args-alternate.json:3: 'data' for command 'oops' cannot use alternate type 'Alt'
 | 
				
			||||||
							
								
								
									
										1
									
								
								tests/qapi-schema/args-alternate.exit
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/qapi-schema/args-alternate.exit
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					1
 | 
				
			||||||
							
								
								
									
										3
									
								
								tests/qapi-schema/args-alternate.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								tests/qapi-schema/args-alternate.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					# we do not allow alternate arguments
 | 
				
			||||||
 | 
					{ 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'str' } }
 | 
				
			||||||
 | 
					{ 'command': 'oops', 'data': 'Alt' }
 | 
				
			||||||
							
								
								
									
										0
									
								
								tests/qapi-schema/args-alternate.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/qapi-schema/args-alternate.out
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								tests/qapi-schema/args-union.err
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/qapi-schema/args-union.err
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								tests/qapi-schema/args-union.exit
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/qapi-schema/args-union.exit
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					0
 | 
				
			||||||
							
								
								
									
										4
									
								
								tests/qapi-schema/args-union.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								tests/qapi-schema/args-union.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					# FIXME we should reject union arguments
 | 
				
			||||||
 | 
					# TODO should we support this?
 | 
				
			||||||
 | 
					{ 'union': 'Uni', 'data': { 'case1': 'int', 'case2': 'str' } }
 | 
				
			||||||
 | 
					{ 'command': 'oops', 'data': 'Uni' }
 | 
				
			||||||
							
								
								
									
										4
									
								
								tests/qapi-schema/args-union.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								tests/qapi-schema/args-union.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					[OrderedDict([('union', 'Uni'), ('data', OrderedDict([('case1', 'int'), ('case2', 'str')]))]),
 | 
				
			||||||
 | 
					 OrderedDict([('command', 'oops'), ('data', 'Uni')])]
 | 
				
			||||||
 | 
					[{'enum_name': 'UniKind', 'enum_values': None}]
 | 
				
			||||||
 | 
					[]
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user