Skip to content

Commit

Permalink
feat: add tests for config schema
Browse files Browse the repository at this point in the history
  • Loading branch information
VanishMax committed Mar 26, 2024
1 parent 26f8aeb commit 73889f6
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 13 deletions.
4 changes: 2 additions & 2 deletions grammar/configSchema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/schema#",
"id": "https://raw.githubusercontent.com/vanishmax/tact/main/grammar/configSchema.json",
"$schema": "http://json-schema.org/schema#",
"$id": "https://raw.githubusercontent.com/vanishmax/tact/main/grammar/configSchema.json",
"title": "Tact configuration schema",
"description": "JSON Schema for Tact configuration file",
"type": "object",
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
"@types/qs": "^6.9.7",
"@typescript-eslint/eslint-plugin": "^7.0.2",
"@typescript-eslint/parser": "^7.0.2",
"ajv": "^8.12.0",
"cross-env": "^7.0.3",
"eslint": "^8.56.0",
"glob": "^8.1.0",
Expand Down
31 changes: 31 additions & 0 deletions src/test/schema.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import fs from 'fs';
import path from 'path';
import Ajv from 'ajv';
import { __DANGER_resetNodeId } from '../grammar/ast';

describe('configuration schema', () => {
const ajv = new Ajv();
const schema = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'grammar', 'configSchema.json'), 'utf8'));

beforeEach(() => {
__DANGER_resetNodeId();
});

it('should validate Tact config', () => {
const tactConfig = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'tact.config.json'), 'utf8'));

const validate = ajv.compile(schema);
validate(tactConfig);

expect(validate.errors).toBeNull();
});

it('should validate test config', () => {
const testConfig = JSON.parse(fs.readFileSync(path.join(__dirname, 'test-tact.config.json'), 'utf8'));

const validate = ajv.compile(schema);
validate(testConfig);

expect(validate.errors).toBeNull();
});
});
21 changes: 11 additions & 10 deletions src/test/test-tact.config.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
{
"projects": [
{
"name": "implicit-init-2",
"path": "./features/implicit-init-2.tact",
"output": "./features/output",
"options": {
"debug": true
}
"$schema": "https://raw.githubusercontent.com/vanishmax/tact/main/grammar/configSchema.json",
"projects": [
{
"name": "implicit-init-2",
"path": "./features/implicit-init-2.tact",
"output": "./features/output",
"options": {
"debug": true
}
]
}
}
]
}
2 changes: 1 addition & 1 deletion tact.config.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://raw.githubusercontent.com/vanishmax/tact/main/grammar/configSchema.json",
"$schema": "http://raw.githubusercontent.com/vanishmax/tact/main/grammar/configSchema.json",
"projects": [
{
"name": "echo",
Expand Down
20 changes: 20 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1323,6 +1323,16 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"

ajv@^8.12.0:
version "8.12.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"

ansi-align@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
Expand Down Expand Up @@ -4139,6 +4149,11 @@ json-schema-traverse@^0.4.1:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==

json-schema-traverse@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==

json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
Expand Down Expand Up @@ -5095,6 +5110,11 @@ require-directory@^2.1.1:
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==

require-from-string@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==

resolve-alpn@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
Expand Down

0 comments on commit 73889f6

Please sign in to comment.