summaryrefslogtreecommitdiff
path: root/tools/unittests/kdoc-test-schema.yaml
blob: cf5079711cd8636b339a326321b9ae93835948b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# SPDX-License-Identifier: GPL-2.0
# Copyright(c) 2026: Mauro Carvalho Chehab <mchehab@kernel.org>.

# KDoc Test File Schema

# This schema contains objects and properties needed to run kernel-doc
# self-tests.

$schema: "http://json-schema.org/draft-07/schema#"

tests:
  type: array
  minItems: 1
  description: |
    A list of kernel-doc tests.

  properties:
    type: object
    properties:
      name:
        type: string
        description: |
          Test name. Should be an unique identifier within the schema.
          Don't prepend it with "test", as the dynamic test creation will
          do it.

      description:
        type: string
        description: |
          Test description

      source:
        type: string
        description: |
          C source code that should be parsed by kernel-doc.

      fname:
        type: string
        description: |
          The filename that contains the element.
          When placing real testcases, please use here the name of
          the C file (or header) from where the source code was picked.

      exports:
        type: array
        items: { type: string }
        description: |
          A list of export identifiers that are expected when parsing source.

      expected:
        type: array
        minItems: 1
        description: |
          A list of expected values. This list consists on objects to check
          both kdoc_parser and/or kdoc_output objects.

        items:
          type: object
          properties:
            #
            #  kdoc_item
            #
            kdoc_item:
              type: object
              description: |
                Object expected to represent the C source code after parsed
                by tools/lib/python/kdoc/kdoc_parser.py KernelDoc class.
                See tools/lib/python/kdoc/kdoc_item.py for its contents.

              properties:
                name:
                  type: string
                  description: |
                    The name of the identifier (function name, struct name, etc).
                type:
                  type: string
                  description: |
                    Type of the object, as filled by kdoc_parser. can be:
                    - enum
                    - typedef
                    - union
                    - struct
                    - var
                    - function
                declaration_start_line:
                  type: integer
                  description: |
                    The line number where the kernel-doc markup started.
                    The first line of the code is line number 1.
                sections:
                  type: object
                  additionalProperties: { type: string }
                  description: |
                    Sections inside the kernel-doc markups:
                    - "description"
                    - "return"
                    - any other part of the markup that starts with "something:"
                sections_start_lines:
                  type: object
                  additionalProperties: { type: integer }
                  description: |
                    a list of section names and the starting line of it.
                parameterlist:
                  type: array
                  items: { type: string }
                  description: |
                    Ordered list of parameter names.

                parameterdesc_start_lines:
                  type: object
                  additionalProperties: { type: integer }
                  description: |
                    Mapping from parameter name to the line where its
                    description starts.
                parameterdescs:
                  type: object
                  additionalProperties: { type: string }
                  description: |
                    Mapping from parameter name to its description.

                parametertypes:
                  type: object
                  additionalProperties: { type: string }
                  description: |
                    Mapping from parameter name to its type.

                other_stuff:
                  type: object
                  additionalProperties: {}
                  description: |
                    Extra properties that will be stored at the item.
                    Should match what kdoc_output expects.

              required:
                - name
                - type
                - declaration_start_line

            rst:
              type: string
              description: |
                The expected output for RestOutput class.

            man:
              type: string
              description: |
                The expected output for ManOutput class.

        anyOf:
          required: kdoc_item
          required: source

    required:
      - name
      - fname
      - expected