kubernetes/test/conformance/doc.go
John Schnake 2683b1065c Update the conformance list and doc generation logic
The existing walk.go and conformance.txt have a few shortcomings
which we'd like to resolve:
 - difficult to get the full test name due to test context nesting
 - complicated AST logic and understanding necessary due to the
different ways a test can be invoked and written

This changes the AST parsing logic to be much more simple and simply
looks for the comments at/around a specific line. This file/line
information (and the full test name) is gathered by a custom ginkgo
reporter which dumps the SpecSummary data to a file.

Also, the SpecSummary dump can, itself, be potentially useful for
other post-processing and debugging tasks.

Signed-off-by: John Schnake <jschnake@vmware.com>
2020-02-24 14:00:44 -08:00

31 lines
1.3 KiB
Go

/*
Copyright 2019 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This stand-alone package is utilized for dynamically generating/maintaining a list of
conformance tests. It utilizes a two step approach:
- The test binary is built
- The test binary is run in dry mode with a custom ginkgo reporter dumping out
types.SpecSummary objects which contain full test names and file/code information.
- The SpecSummary information is parsed to get file/line info on Conformance tests and
then we use a simplified AST parser to grab the comments above the test.
Due to the complicated nature of how tests can be declared/wrapped in various contexts,
this approach is much simpler to maintain than a pure-AST parser and allows us to easily
capture the full test names/locations of the tests using the pre-existing ginkgo logic.
*/
package main