The scip test
command validates whether a provided SCIP index contains the data specified in a human-readable test file.
The test file syntax is inspired by Sublime Text's syntax highlighting tests.
Test cases are made up of a range, type, and data attribute.
Three range selection comment formats are supported:
// ^^^
(2 or more^
): enforces the length of the occurrence. Will fail if the range at this location does not equal 3 characters// ^
: ignore length,^
can occur at any point to any character in the occurrence// <-
: ignore length, and treat the character above the first comment character as the start of the occurrence, similar to Sublime Text
function someFunction() {
// ^ ...
// ^^^^^^^^^^^^ ...
// <- ...
}
There are four possible types test cases. The chosen test case is determined by the first word after the range selection
definition [symbol]
- validates that the specified range has a symbol with the role of "definition" with the specified[symbol]
reference [symbol]
- validates that the specified range has a symbol with the role of "reference" with the specified[symbol]
forward_definition [symbol]
- validates that the specified range has a symbol with the role of "forward_definition" with the specified[symbol]
diagnostic [severity] [message]
- validates that the specified range has a diagnostic with the given[severity]
and[message]
function someFunction() {
// ^ definition scip-typescript npm test_package 1.0.0 lib/`test.js`/someFunction().
someOtherFunction()
// <- reference scip-typescript npm test_package 1.0.0 lib/`test.js`/someOtherFunction().
}
The message for diagnostics can be specified on the following line using >
,
and may span over multiple lines.
function someFn() {
let someVar = ''
// ^ diagnostic Warning
// > someVar is unused.
// > remove it or use it.
}