xref: /linux/tools/unittests/kdoc-test-schema.yaml (revision 5181afcdf99527dd92a88f80fc4d0d8013e1b510)
1*f1cdbd82SMauro Carvalho Chehab# SPDX-License-Identifier: GPL-2.0
2*f1cdbd82SMauro Carvalho Chehab# Copyright(c) 2026: Mauro Carvalho Chehab <mchehab@kernel.org>.
3*f1cdbd82SMauro Carvalho Chehab
4*f1cdbd82SMauro Carvalho Chehab# KDoc Test File Schema
5*f1cdbd82SMauro Carvalho Chehab
6*f1cdbd82SMauro Carvalho Chehab# This schema contains objects and properties needed to run kernel-doc
7*f1cdbd82SMauro Carvalho Chehab# self-tests.
8*f1cdbd82SMauro Carvalho Chehab
9*f1cdbd82SMauro Carvalho Chehab$schema: "http://json-schema.org/draft-07/schema#"
10*f1cdbd82SMauro Carvalho Chehab
11*f1cdbd82SMauro Carvalho Chehabtests:
12*f1cdbd82SMauro Carvalho Chehab  type: array
13*f1cdbd82SMauro Carvalho Chehab  minItems: 1
14*f1cdbd82SMauro Carvalho Chehab  description: |
15*f1cdbd82SMauro Carvalho Chehab    A list of kernel-doc tests.
16*f1cdbd82SMauro Carvalho Chehab
17*f1cdbd82SMauro Carvalho Chehab  properties:
18*f1cdbd82SMauro Carvalho Chehab    type: object
19*f1cdbd82SMauro Carvalho Chehab    properties:
20*f1cdbd82SMauro Carvalho Chehab      name:
21*f1cdbd82SMauro Carvalho Chehab        type: string
22*f1cdbd82SMauro Carvalho Chehab        description: |
23*f1cdbd82SMauro Carvalho Chehab          Test name. Should be an unique identifier within the schema.
24*f1cdbd82SMauro Carvalho Chehab          Don't prepend it with "test", as the dynamic test creation will
25*f1cdbd82SMauro Carvalho Chehab          do it.
26*f1cdbd82SMauro Carvalho Chehab
27*f1cdbd82SMauro Carvalho Chehab      description:
28*f1cdbd82SMauro Carvalho Chehab        type: string
29*f1cdbd82SMauro Carvalho Chehab        description: |
30*f1cdbd82SMauro Carvalho Chehab          Test description
31*f1cdbd82SMauro Carvalho Chehab
32*f1cdbd82SMauro Carvalho Chehab      source:
33*f1cdbd82SMauro Carvalho Chehab        type: string
34*f1cdbd82SMauro Carvalho Chehab        description: |
35*f1cdbd82SMauro Carvalho Chehab          C source code that should be parsed by kernel-doc.
36*f1cdbd82SMauro Carvalho Chehab
37*f1cdbd82SMauro Carvalho Chehab      fname:
38*f1cdbd82SMauro Carvalho Chehab        type: string
39*f1cdbd82SMauro Carvalho Chehab        description: |
40*f1cdbd82SMauro Carvalho Chehab          The filename that contains the element.
41*f1cdbd82SMauro Carvalho Chehab          When placing real testcases, please use here the name of
42*f1cdbd82SMauro Carvalho Chehab          the C file (or header) from where the source code was picked.
43*f1cdbd82SMauro Carvalho Chehab
44*f1cdbd82SMauro Carvalho Chehab      exports:
45*f1cdbd82SMauro Carvalho Chehab        type: array
46*f1cdbd82SMauro Carvalho Chehab        items: { type: string }
47*f1cdbd82SMauro Carvalho Chehab        description: |
48*f1cdbd82SMauro Carvalho Chehab          A list of export identifiers that are expected when parsing source.
49*f1cdbd82SMauro Carvalho Chehab
50*f1cdbd82SMauro Carvalho Chehab      expected:
51*f1cdbd82SMauro Carvalho Chehab        type: array
52*f1cdbd82SMauro Carvalho Chehab        minItems: 1
53*f1cdbd82SMauro Carvalho Chehab        description: |
54*f1cdbd82SMauro Carvalho Chehab          A list of expected values. This list consists on objects to check
55*f1cdbd82SMauro Carvalho Chehab          both kdoc_parser and/or kdoc_output objects.
56*f1cdbd82SMauro Carvalho Chehab
57*f1cdbd82SMauro Carvalho Chehab        items:
58*f1cdbd82SMauro Carvalho Chehab          type: object
59*f1cdbd82SMauro Carvalho Chehab          properties:
60*f1cdbd82SMauro Carvalho Chehab            #
61*f1cdbd82SMauro Carvalho Chehab            #  kdoc_item
62*f1cdbd82SMauro Carvalho Chehab            #
63*f1cdbd82SMauro Carvalho Chehab            kdoc_item:
64*f1cdbd82SMauro Carvalho Chehab              type: object
65*f1cdbd82SMauro Carvalho Chehab              description: |
66*f1cdbd82SMauro Carvalho Chehab                Object expected to represent the C source code after parsed
67*f1cdbd82SMauro Carvalho Chehab                by tools/lib/python/kdoc/kdoc_parser.py KernelDoc class.
68*f1cdbd82SMauro Carvalho Chehab                See tools/lib/python/kdoc/kdoc_item.py for its contents.
69*f1cdbd82SMauro Carvalho Chehab
70*f1cdbd82SMauro Carvalho Chehab              properties:
71*f1cdbd82SMauro Carvalho Chehab                name:
72*f1cdbd82SMauro Carvalho Chehab                  type: string
73*f1cdbd82SMauro Carvalho Chehab                  description: |
74*f1cdbd82SMauro Carvalho Chehab                    The name of the identifier (function name, struct name, etc).
75*f1cdbd82SMauro Carvalho Chehab                type:
76*f1cdbd82SMauro Carvalho Chehab                  type: string
77*f1cdbd82SMauro Carvalho Chehab                  description: |
78*f1cdbd82SMauro Carvalho Chehab                    Type of the object, as filled by kdoc_parser. can be:
79*f1cdbd82SMauro Carvalho Chehab                    - enum
80*f1cdbd82SMauro Carvalho Chehab                    - typedef
81*f1cdbd82SMauro Carvalho Chehab                    - union
82*f1cdbd82SMauro Carvalho Chehab                    - struct
83*f1cdbd82SMauro Carvalho Chehab                    - var
84*f1cdbd82SMauro Carvalho Chehab                    - function
85*f1cdbd82SMauro Carvalho Chehab                declaration_start_line:
86*f1cdbd82SMauro Carvalho Chehab                  type: integer
87*f1cdbd82SMauro Carvalho Chehab                  description: |
88*f1cdbd82SMauro Carvalho Chehab                    The line number where the kernel-doc markup started.
89*f1cdbd82SMauro Carvalho Chehab                    The first line of the code is line number 1.
90*f1cdbd82SMauro Carvalho Chehab                sections:
91*f1cdbd82SMauro Carvalho Chehab                  type: object
92*f1cdbd82SMauro Carvalho Chehab                  additionalProperties: { type: string }
93*f1cdbd82SMauro Carvalho Chehab                  description: |
94*f1cdbd82SMauro Carvalho Chehab                    Sections inside the kernel-doc markups:
95*f1cdbd82SMauro Carvalho Chehab                    - "description"
96*f1cdbd82SMauro Carvalho Chehab                    - "return"
97*f1cdbd82SMauro Carvalho Chehab                    - any other part of the markup that starts with "something:"
98*f1cdbd82SMauro Carvalho Chehab                sections_start_lines:
99*f1cdbd82SMauro Carvalho Chehab                  type: object
100*f1cdbd82SMauro Carvalho Chehab                  additionalProperties: { type: integer }
101*f1cdbd82SMauro Carvalho Chehab                  description: |
102*f1cdbd82SMauro Carvalho Chehab                    a list of section names and the starting line of it.
103*f1cdbd82SMauro Carvalho Chehab                parameterlist:
104*f1cdbd82SMauro Carvalho Chehab                  type: array
105*f1cdbd82SMauro Carvalho Chehab                  items: { type: string }
106*f1cdbd82SMauro Carvalho Chehab                  description: |
107*f1cdbd82SMauro Carvalho Chehab                    Ordered list of parameter names.
108*f1cdbd82SMauro Carvalho Chehab
109*f1cdbd82SMauro Carvalho Chehab                parameterdesc_start_lines:
110*f1cdbd82SMauro Carvalho Chehab                  type: object
111*f1cdbd82SMauro Carvalho Chehab                  additionalProperties: { type: integer }
112*f1cdbd82SMauro Carvalho Chehab                  description: |
113*f1cdbd82SMauro Carvalho Chehab                    Mapping from parameter name to the line where its
114*f1cdbd82SMauro Carvalho Chehab                    description starts.
115*f1cdbd82SMauro Carvalho Chehab                parameterdescs:
116*f1cdbd82SMauro Carvalho Chehab                  type: object
117*f1cdbd82SMauro Carvalho Chehab                  additionalProperties: { type: string }
118*f1cdbd82SMauro Carvalho Chehab                  description: |
119*f1cdbd82SMauro Carvalho Chehab                    Mapping from parameter name to its description.
120*f1cdbd82SMauro Carvalho Chehab
121*f1cdbd82SMauro Carvalho Chehab                parametertypes:
122*f1cdbd82SMauro Carvalho Chehab                  type: object
123*f1cdbd82SMauro Carvalho Chehab                  additionalProperties: { type: string }
124*f1cdbd82SMauro Carvalho Chehab                  description: |
125*f1cdbd82SMauro Carvalho Chehab                    Mapping from parameter name to its type.
126*f1cdbd82SMauro Carvalho Chehab
127*f1cdbd82SMauro Carvalho Chehab                other_stuff:
128*f1cdbd82SMauro Carvalho Chehab                  type: object
129*f1cdbd82SMauro Carvalho Chehab                  additionalProperties: {}
130*f1cdbd82SMauro Carvalho Chehab                  description: |
131*f1cdbd82SMauro Carvalho Chehab                    Extra properties that will be stored at the item.
132*f1cdbd82SMauro Carvalho Chehab                    Should match what kdoc_output expects.
133*f1cdbd82SMauro Carvalho Chehab
134*f1cdbd82SMauro Carvalho Chehab              required:
135*f1cdbd82SMauro Carvalho Chehab                - name
136*f1cdbd82SMauro Carvalho Chehab                - type
137*f1cdbd82SMauro Carvalho Chehab                - declaration_start_line
138*f1cdbd82SMauro Carvalho Chehab
139*f1cdbd82SMauro Carvalho Chehab            rst:
140*f1cdbd82SMauro Carvalho Chehab              type: string
141*f1cdbd82SMauro Carvalho Chehab              description: |
142*f1cdbd82SMauro Carvalho Chehab                The expected output for RestOutput class.
143*f1cdbd82SMauro Carvalho Chehab
144*f1cdbd82SMauro Carvalho Chehab            man:
145*f1cdbd82SMauro Carvalho Chehab              type: string
146*f1cdbd82SMauro Carvalho Chehab              description: |
147*f1cdbd82SMauro Carvalho Chehab                The expected output for ManOutput class.
148*f1cdbd82SMauro Carvalho Chehab
149*f1cdbd82SMauro Carvalho Chehab        anyOf:
150*f1cdbd82SMauro Carvalho Chehab          required: kdoc_item
151*f1cdbd82SMauro Carvalho Chehab          required: source
152*f1cdbd82SMauro Carvalho Chehab
153*f1cdbd82SMauro Carvalho Chehab    required:
154*f1cdbd82SMauro Carvalho Chehab      - name
155*f1cdbd82SMauro Carvalho Chehab      - fname
156*f1cdbd82SMauro Carvalho Chehab      - expected
157