Originally inspired by pg_regress, pg_yregress provides a TAP-compatible test executor that allows for better test organization, easier instance management, native JSON handling and so on.
Fun fact: IJ has "embedded language" support, meaning it understands that some parts of yaml (and any other source code) are another source code and thus offers both syntax highlighting and its usual bunch of introspections. That may not be as meaningful for test SQL, since it probably doesn't have a ton of existing schema against which it should check, but it undoubtedly is helpful when IJ is told this is the PostgreSQL dialect of SQL and thus is able to offer relevant completion and quick-doc for the functions<p>One can tell IJ what's going on in one of two ways: comment markup or creating a JSON Schema for the yaml and placing x-intellij-language-injection metadata into the relevant elements<p><pre><code> tests:
- #language=SQL
query: select 1 as result
results:
- result: 1
</code></pre>
or<p><pre><code> $id: pg_yregress
$schema: "http://json-schema.org/draft-07/schema#"
properties:
tests:
type: array
items:
$ref: '#/definitions/Test'
definitions:
Test:
type: object
properties:
query:
description: the test query to run
type: string
# https://github.com/JetBrains/intellij-community/blob/idea/233.9802.14/json/src/jsonSchema/schema.json#L52
x-intellij-language-injection: SQL
results:
type: array
item:
type: object
additionalProperties: true</code></pre>
This is such an interesting project. Having written SQL based tests with MTR, I really love the reusable queries and not having to dump the full SQL output into test results.
This is great. Good to see standardized testing improvements to the pg_regress add-on. YAML does better than JSON when it comes to readability. To an extent, TOML as well.