@xano/xanoscript-language-server 11.12.2 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/onCheckError/onCheckError.js +35 -28
- package/package.json +25 -1
- package/.claude/memory/feedback_no_git.md +0 -11
- package/.claude/settings.local.json +0 -21
- package/.github/copilot-instructions.md +0 -190
- package/.github/workflows/ci.yml +0 -31
- package/.husky/pre-commit +0 -1
- package/CLAUDE.md +0 -256
- package/eslint.config.js +0 -24
- package/lexer/comment.spec.js +0 -77
- package/lexer/multiline.spec.js +0 -179
- package/lexer/regexp.spec.js +0 -84
- package/lexer/tests/query/query_lexer.spec.js +0 -36
- package/lexer/tests/query/valid_sources/basic_query.xs +0 -44
- package/lexer/tests/query/valid_sources/db_query.xs +0 -77
- package/lexer/tests/query/valid_sources/empty_query.xs +0 -5
- package/lexer/tests/query/valid_sources/header_query.xs +0 -15
- package/lexer/tests/table/basic_table.xs +0 -17
- package/lexer/tests/table/empty_table.xs +0 -3
- package/lexer/tests/table/table_lexer.spec.js +0 -324
- package/lexer/utils.spec.js +0 -61
- package/onCompletion/contentAssist.spec.js +0 -275
- package/onDefinition/onDefinition.spec.js +0 -313
- package/onHover/FilterMessageProvider.spec.js +0 -85
- package/onHover/FunctionMessageProvider.spec.js +0 -128
- package/onHover/InputFilterMessageProvider.spec.js +0 -329
- package/onHover/QueryFilterMessageProvider.spec.js +0 -164
- package/onHover/onHoverDocument.spec.js +0 -660
- package/parser/addon_parser.spec.js +0 -88
- package/parser/agent_parser.spec.js +0 -599
- package/parser/agent_trigger_parser.spec.js +0 -525
- package/parser/api_group_parser.spec.js +0 -137
- package/parser/attributes/columnDefaultValueAttribute.spec.js +0 -49
- package/parser/attributes/descriptionFieldAttribute.spec.js +0 -39
- package/parser/attributes/disabledFieldAttribute.spec.js +0 -34
- package/parser/attributes/docsFieldAttribute.spec.js +0 -44
- package/parser/attributes/guidFieldAttribute.spec.js +0 -93
- package/parser/attributes/inputFilterFn.spec.js +0 -39
- package/parser/attributes/sensitiveFieldAttribute.spec.js +0 -39
- package/parser/attributes/valueFieldAttribute.spec.js +0 -54
- package/parser/attributes/valuesFieldAttribute.spec.js +0 -44
- package/parser/attributes/visibilityFieldAttribute.spec.js +0 -44
- package/parser/branch_parser.spec.js +0 -34
- package/parser/clauses/agentClause.spec.js +0 -34
- package/parser/clauses/authClause.spec.js +0 -39
- package/parser/clauses/cacheClause.spec.js +0 -103
- package/parser/clauses/canonicalClause.spec.js +0 -34
- package/parser/clauses/channelClause.spec.js +0 -34
- package/parser/clauses/dbTableClause.spec.js +0 -34
- package/parser/clauses/historyClause.spec.js +0 -53
- package/parser/clauses/indexClause.spec.js +0 -47
- package/parser/clauses/inputClause.spec.js +0 -96
- package/parser/clauses/mcpServerClause.spec.js +0 -34
- package/parser/clauses/middlewareClause.spec.js +0 -161
- package/parser/clauses/nakedStackFn.spec.js +0 -73
- package/parser/clauses/responseClause.spec.js +0 -47
- package/parser/clauses/scheduleClause.spec.js +0 -71
- package/parser/clauses/schemaClause.spec.js +0 -102
- package/parser/clauses/testClause.spec.js +0 -69
- package/parser/clauses/viewClause.spec.js +0 -163
- package/parser/definitions/arraySlice.spec.js +0 -49
- package/parser/definitions/columnDefinition.spec.js +0 -199
- package/parser/definitions/dbLinkColumnDefinition.spec.js +0 -45
- package/parser/definitions/enumColumnDefinition.spec.js +0 -108
- package/parser/definitions/filterDefinition.spec.js +0 -43
- package/parser/definitions/objectColumnDefinition.spec.js +0 -118
- package/parser/function_parser.spec.js +0 -131
- package/parser/functions/actionCallFn.spec.js +0 -51
- package/parser/functions/addonCallFn.spec.js +0 -41
- package/parser/functions/ai/aiAgentRunFn.spec.js +0 -94
- package/parser/functions/ai/aiExternalMcpServerDetailsFn.spec.js +0 -85
- package/parser/functions/ai/aiExternalMcpToolListFn.spec.js +0 -85
- package/parser/functions/ai/aiExternalMcpToolRunFn.spec.js +0 -101
- package/parser/functions/aiFn.spec.js +0 -51
- package/parser/functions/api/apiCallFn.spec.js +0 -62
- package/parser/functions/api/apiLambdaFn.spec.js +0 -63
- package/parser/functions/api/apiRealtimeEventFn.spec.js +0 -82
- package/parser/functions/api/apiRequestFn.spec.js +0 -113
- package/parser/functions/api/apiStreamFn.spec.js +0 -44
- package/parser/functions/api/webflowRequestFn.spec.js +0 -114
- package/parser/functions/array/arrayDifferenceFn.spec.js +0 -34
- package/parser/functions/array/arrayFindFn.spec.js +0 -44
- package/parser/functions/array/arrayGroupByFn.spec.js +0 -41
- package/parser/functions/array/arrayIntersectionFn.spec.js +0 -22
- package/parser/functions/array/arrayMapFn.spec.js +0 -37
- package/parser/functions/array/arrayNoValueAs.spec.js +0 -56
- package/parser/functions/array/arrayPartitionFn.spec.js +0 -29
- package/parser/functions/array/arrayUnionFn.spec.js +0 -22
- package/parser/functions/array/arrayValueIfAs.spec.js +0 -54
- package/parser/functions/array/arrayValueOnly.spec.js +0 -61
- package/parser/functions/array/valueAttrOnly.spec.js +0 -61
- package/parser/functions/cloud/cloudAlgoliaRequestFn.spec.js +0 -30
- package/parser/functions/cloud/cloudAwsS3Fn.spec.js +0 -21
- package/parser/functions/cloud/cloudDeleteFileFn.spec.js +0 -25
- package/parser/functions/cloud/cloudGetFileInfoFn.spec.js +0 -25
- package/parser/functions/cloud/cloudListDirectoryFn.spec.js +0 -26
- package/parser/functions/cloud/cloudReadFileFn.spec.js +0 -25
- package/parser/functions/cloud/cloudSearchDocumentFn.spec.js +0 -28
- package/parser/functions/cloud/cloudSearchQueryFn.spec.js +0 -32
- package/parser/functions/cloud/cloudSearchRequestFn.spec.js +0 -32
- package/parser/functions/cloud/cloudSignUrlFn.spec.js +0 -26
- package/parser/functions/cloud/cloudStorageFn.spec.js +0 -21
- package/parser/functions/cloud/cloudUploadFileFn.spec.js +0 -29
- package/parser/functions/controls/awaitFn.spec.js +0 -48
- package/parser/functions/controls/conditionalFn.spec.js +0 -188
- package/parser/functions/controls/forEachFn.spec.js +0 -109
- package/parser/functions/controls/forFn.spec.js +0 -85
- package/parser/functions/controls/functionRunFn.spec.js +0 -87
- package/parser/functions/controls/groupFn.spec.js +0 -63
- package/parser/functions/controls/preconditionFn.spec.js +0 -107
- package/parser/functions/controls/returnFn.spec.js +0 -44
- package/parser/functions/controls/switchFn.spec.js +0 -118
- package/parser/functions/controls/throwFn.spec.js +0 -56
- package/parser/functions/controls/tryCatchFn.spec.js +0 -193
- package/parser/functions/controls/whileFn.spec.js +0 -94
- package/parser/functions/db/dbAddFn.spec.js +0 -72
- package/parser/functions/db/dbAddOrEditFn.spec.js +0 -97
- package/parser/functions/db/dbBulkAddFn.spec.js +0 -94
- package/parser/functions/db/dbBulkDeleteFn.spec.js +0 -28
- package/parser/functions/db/dbBulkPatchFn.spec.js +0 -42
- package/parser/functions/db/dbBulkUpdateFn.spec.js +0 -42
- package/parser/functions/db/dbDelFn.spec.js +0 -67
- package/parser/functions/db/dbDirectQueryFn.spec.js +0 -104
- package/parser/functions/db/dbEditFn.spec.js +0 -122
- package/parser/functions/db/dbExternalDirectQueryFn.spec.js +0 -103
- package/parser/functions/db/dbGetFn.spec.js +0 -117
- package/parser/functions/db/dbHasFn.spec.js +0 -62
- package/parser/functions/db/dbPatchFn.spec.js +0 -88
- package/parser/functions/db/dbQueryFn.spec.js +0 -380
- package/parser/functions/db/dbSchemaFn.spec.js +0 -42
- package/parser/functions/db/dbSetDatasourceFn.spec.js +0 -44
- package/parser/functions/db/dbTransactionFn.spec.js +0 -63
- package/parser/functions/db/dbTruncateFn.spec.js +0 -42
- package/parser/functions/debug/debugLogFn.spec.js +0 -44
- package/parser/functions/debug/debugStopFn.spec.js +0 -44
- package/parser/functions/expect/unitExpectToBeWithinFn.spec.js +0 -63
- package/parser/functions/expect/unitExpectToThrowFn.spec.js +0 -40
- package/parser/functions/expect/unitExpectWithArgumentsFn.spec.js +0 -355
- package/parser/functions/expect/unitExpectWithoutArgumentsFn.spec.js +0 -69
- package/parser/functions/expect/workflowExpectToBeWithinFn.spec.js +0 -70
- package/parser/functions/expect/workflowExpectToThrowFn.spec.js +0 -56
- package/parser/functions/expect/workflowExpectWithArgumentsFn.spec.js +0 -308
- package/parser/functions/expect/workflowExpectWithoutArgumentsFn.spec.js +0 -87
- package/parser/functions/math/allMathFn.spec.js +0 -100
- package/parser/functions/middlewareCallFn.spec.js +0 -44
- package/parser/functions/object/objectEntriesFn.spec.js +0 -44
- package/parser/functions/object/objectKeysFn.spec.js +0 -44
- package/parser/functions/object/objectValuesFn.spec.js +0 -44
- package/parser/functions/redis/redisCountFn.spec.js +0 -58
- package/parser/functions/redis/redisDecrFn.spec.js +0 -47
- package/parser/functions/redis/redisDelFn.spec.js +0 -58
- package/parser/functions/redis/redisGetFn.spec.js +0 -67
- package/parser/functions/redis/redisHasFn.spec.js +0 -58
- package/parser/functions/redis/redisIncrFn.spec.js +0 -74
- package/parser/functions/redis/redisKeysFn.spec.js +0 -67
- package/parser/functions/redis/redisPopFn.spec.js +0 -75
- package/parser/functions/redis/redisPushFn.spec.js +0 -71
- package/parser/functions/redis/redisRangeFn.spec.js +0 -80
- package/parser/functions/redis/redisRateLimitFn.spec.js +0 -87
- package/parser/functions/redis/redisRemoveFn.spec.js +0 -65
- package/parser/functions/redis/redisSetFn.spec.js +0 -89
- package/parser/functions/redis/redisShiftFn.spec.js +0 -75
- package/parser/functions/redis/redisUnshiftFn.spec.js +0 -73
- package/parser/functions/schema/schemaFn.spec.js +0 -92
- package/parser/functions/schema/schemaParseArrayFn.spec.js +0 -134
- package/parser/functions/schema/schemaParseAttributeFn.spec.js +0 -285
- package/parser/functions/schema/schemaParseConstantFn.spec.js +0 -122
- package/parser/functions/schema/schemaParseEnum.spec.js +0 -47
- package/parser/functions/schema/schemaParseImmutableFn.spec.js +0 -99
- package/parser/functions/schema/schemaParseObjectFn.spec.js +0 -223
- package/parser/functions/schema/utils.spec.js +0 -27
- package/parser/functions/security/securityCheckPasswordFn.spec.js +0 -22
- package/parser/functions/security/securityCreateAuthTokenFn.spec.js +0 -51
- package/parser/functions/security/securityCreateCurveKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreatePasswordFn.spec.js +0 -26
- package/parser/functions/security/securityCreateRsaKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreateSecretKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreateUuidFn.spec.js +0 -27
- package/parser/functions/security/securityDecryptFn.spec.js +0 -24
- package/parser/functions/security/securityEncryptFn.spec.js +0 -24
- package/parser/functions/security/securityJweDecodeFn.spec.js +0 -26
- package/parser/functions/security/securityJweDecodeLegacyFn.spec.js +0 -26
- package/parser/functions/security/securityJweEncodeFn.spec.js +0 -26
- package/parser/functions/security/securityJweEncodeLegacyFn.spec.js +0 -25
- package/parser/functions/security/securityJwsDecodeFn.spec.js +0 -25
- package/parser/functions/security/securityJwsEncodeFn.spec.js +0 -25
- package/parser/functions/security/securityRandomBytesFn.spec.js +0 -21
- package/parser/functions/security/securityRandomNumberFn.spec.js +0 -22
- package/parser/functions/storage/storageCreateAttachmentFn.spec.js +0 -87
- package/parser/functions/storage/storageCreateAudioFn.spec.js +0 -98
- package/parser/functions/storage/storageCreateFileResourceFn.spec.js +0 -72
- package/parser/functions/storage/storageCreateImageFn.spec.js +0 -98
- package/parser/functions/storage/storageCreateVideoFn.spec.js +0 -99
- package/parser/functions/storage/storageDeleteFileFn.spec.js +0 -67
- package/parser/functions/storage/storageReadFileResourceFn.spec.js +0 -60
- package/parser/functions/storage/storageSignPrivateUrlFn.spec.js +0 -72
- package/parser/functions/stream/streamFromCsvFn.spec.js +0 -69
- package/parser/functions/stream/streamFromJsonlFn.spec.js +0 -47
- package/parser/functions/stream/streamFromRequestFn.spec.js +0 -103
- package/parser/functions/text/allTextWithReturnValueFn.spec.js +0 -100
- package/parser/functions/text/allTextWithoutReturnValueFn.spec.js +0 -122
- package/parser/functions/toolCallFn.spec.js +0 -28
- package/parser/functions/triggerCallFn.spec.js +0 -51
- package/parser/functions/unitExpectFn.spec.js +0 -21
- package/parser/functions/util/utilGeoDistanceFn.spec.js +0 -79
- package/parser/functions/util/utilGetAllInputFn.spec.js +0 -33
- package/parser/functions/util/utilGetEnvFn.spec.js +0 -33
- package/parser/functions/util/utilGetRawInputFn.spec.js +0 -62
- package/parser/functions/util/utilGetVarsFn.spec.js +0 -33
- package/parser/functions/util/utilIpLookupFn.spec.js +0 -37
- package/parser/functions/util/utilPostProcessFn.spec.js +0 -63
- package/parser/functions/util/utilSendEmailFn.spec.js +0 -62
- package/parser/functions/util/utilSetHeaderFn.spec.js +0 -48
- package/parser/functions/util/utilSleepFn.spec.js +0 -44
- package/parser/functions/util/utilTemplateFn.spec.js +0 -78
- package/parser/functions/varFn.spec.js +0 -332
- package/parser/functions/workflowExpectFn.spec.js +0 -32
- package/parser/functions/zip/zipAddToArchiveFn.spec.js +0 -78
- package/parser/functions/zip/zipCreateArchiveFn.spec.js +0 -53
- package/parser/functions/zip/zipDeleteFromArchiveFn.spec.js +0 -69
- package/parser/functions/zip/zipExtractFn.spec.js +0 -52
- package/parser/functions/zip/zipViewContentsFn.spec.js +0 -52
- package/parser/generic/arrayWithValues.spec.js +0 -72
- package/parser/generic/asVariable.spec.js +0 -117
- package/parser/generic/assignableVariableAs.spec.js +0 -126
- package/parser/generic/assignableVariableProperty.spec.js +0 -138
- package/parser/generic/castedValue.spec.js +0 -29
- package/parser/generic/chainedIdentifier.spec.js +0 -89
- package/parser/generic/completeAuthVariable.spec.js +0 -23
- package/parser/generic/completeEnvVariable.spec.js +0 -99
- package/parser/generic/completeErrorVariable.spec.js +0 -17
- package/parser/generic/completeInputVariable.spec.js +0 -53
- package/parser/generic/expressionFn.spec.js +0 -605
- package/parser/generic/filterFn.spec.js +0 -47
- package/parser/generic/functionAttrReq.spec.js +0 -353
- package/parser/generic/longFormVariable.spec.js +0 -25
- package/parser/generic/minimalFnBody.spec.js +0 -47
- package/parser/generic/mockAttribute.spec.js +0 -57
- package/parser/generic/multilineFilterFn.spec.js +0 -51
- package/parser/generic/objectWithAttributes.spec.js +0 -147
- package/parser/generic/requiredValueFnBody.spec.js +0 -56
- package/parser/generic/shortFormVariable.spec.js +0 -27
- package/parser/generic/stringArray.spec.js +0 -55
- package/parser/generic/tagsAttribute.spec.js +0 -47
- package/parser/generic/variableOnly.spec.js +0 -47
- package/parser/mcp_server_parser.spec.js +0 -478
- package/parser/mcp_server_trigger_parser.spec.js +0 -396
- package/parser/metadata/columnMetadataDefinition.spec.js +0 -47
- package/parser/metadata/enumColumnMetadataDefinition.spec.js +0 -81
- package/parser/middleware_parser.spec.js +0 -230
- package/parser/multidoc.spec.js +0 -946
- package/parser/query_parser.spec.js +0 -202
- package/parser/realtime_channel_parser.spec.js +0 -20
- package/parser/realtime_trigger_parser.spec.js +0 -469
- package/parser/run_parser.spec.js +0 -100
- package/parser/table_parser.spec.js +0 -176
- package/parser/table_trigger_parser.spec.js +0 -478
- package/parser/task_parser.spec.js +0 -94
- package/parser/tests/agent/agent_parser.spec.js +0 -52
- package/parser/tests/agent/valid_sources/customer_servier_agent.xs +0 -45
- package/parser/tests/api_group/api_group_parser.spec.js +0 -52
- package/parser/tests/api_group/valid_sources/api_group_history.xs +0 -4
- package/parser/tests/api_group/valid_sources/basic_api_group.xs +0 -3
- package/parser/tests/api_group/valid_sources/complete_api_group.xs +0 -7
- package/parser/tests/api_group/valid_sources/protected_api_group.xs +0 -7
- package/parser/tests/function/function_parser.spec.js +0 -52
- package/parser/tests/function/valid_sources/all_controls.xs +0 -68
- package/parser/tests/function/valid_sources/all_query_return_types.xs +0 -227
- package/parser/tests/function/valid_sources/all_storage.xs +0 -45
- package/parser/tests/function/valid_sources/discord_poll_send_to_slack.xs +0 -133
- package/parser/tests/function/valid_sources/expression_in_response.xs +0 -22
- package/parser/tests/function/valid_sources/filter_by_value.xs +0 -55
- package/parser/tests/function/valid_sources/filter_query.xs +0 -82
- package/parser/tests/function/valid_sources/large_regex.xs +0 -13
- package/parser/tests/function/valid_sources/ledash_ends_with.xs +0 -90
- package/parser/tests/function/valid_sources/multiline_description.xs +0 -28
- package/parser/tests/function/valid_sources/multiline_expr.xs +0 -41
- package/parser/tests/function/valid_sources/set_theory_fn.xs +0 -129
- package/parser/tests/function/valid_sources/simple_unit_test.xs +0 -33
- package/parser/tests/function/valid_sources/valid_officer.xs +0 -57
- package/parser/tests/function/valid_sources/webflow.xs +0 -18
- package/parser/tests/query/query_parser.spec.js +0 -54
- package/parser/tests/query/valid_sources/all_basics.xs +0 -51
- package/parser/tests/query/valid_sources/all_cloud.xs +0 -141
- package/parser/tests/query/valid_sources/all_db.xs +0 -102
- package/parser/tests/query/valid_sources/all_external_db.xs +0 -43
- package/parser/tests/query/valid_sources/all_keywords.xs +0 -65
- package/parser/tests/query/valid_sources/all_math.xs +0 -53
- package/parser/tests/query/valid_sources/all_object.xs +0 -25
- package/parser/tests/query/valid_sources/all_redis.xs +0 -106
- package/parser/tests/query/valid_sources/all_security.xs +0 -105
- package/parser/tests/query/valid_sources/all_stream.xs +0 -69
- package/parser/tests/query/valid_sources/all_text.xs +0 -54
- package/parser/tests/query/valid_sources/all_util.xs +0 -66
- package/parser/tests/query/valid_sources/all_zip.xs +0 -39
- package/parser/tests/query/valid_sources/arrays.xs +0 -33
- package/parser/tests/query/valid_sources/disabled_response.xs +0 -27
- package/parser/tests/query/valid_sources/multiline_lambda_GET.xs +0 -50
- package/parser/tests/query/valid_sources/mutliline_query.xs +0 -140
- package/parser/tests/query/valid_sources/patch_expression_multiline.xs +0 -27
- package/parser/tests/query/valid_sources/query_cache.xs +0 -34
- package/parser/tests/query/valid_sources/query_example.xs +0 -43
- package/parser/tests/query/valid_sources/query_mini.xs +0 -11
- package/parser/tests/query/valid_sources/query_rich_inputs.xs +0 -32
- package/parser/tests/query/valid_sources/simple_unit_test.xs +0 -33
- package/parser/tests/query/valid_sources/test_with_slashes.xs +0 -22
- package/parser/tests/query/valid_sources/with_unit_test.xs +0 -97
- package/parser/tests/table/table_parser.spec.js +0 -52
- package/parser/tests/table/valid_sources/account.xs +0 -31
- package/parser/tests/table/valid_sources/all_basic_columns.xs +0 -44
- package/parser/tests/table/valid_sources/basic_table.xs +0 -15
- package/parser/tests/table/valid_sources/empty_object.xs +0 -17
- package/parser/tests/table/valid_sources/empty_table.xs +0 -3
- package/parser/tests/table/valid_sources/multiline_index.xs +0 -33
- package/parser/tests/table/valid_sources/relation.xs +0 -44
- package/parser/tests/table/valid_sources/rich_columns.xs +0 -31
- package/parser/tests/table/valid_sources/table_with_comments.xs +0 -17
- package/parser/tests/table/valid_sources/table_with_search_index.xs +0 -31
- package/parser/tests/table/valid_sources/view_table.xs +0 -62
- package/parser/tests/task/task_parser.spec.js +0 -53
- package/parser/tests/task/valid_sources/active_event.xs +0 -11
- package/parser/tests/task/valid_sources/all_events.xs +0 -17
- package/parser/tests/task/valid_sources/create_leak.xs +0 -165
- package/parser/tests/task/valid_sources/daily_sales_report.xs +0 -56
- package/parser/tests/task/valid_sources/inactive_event.xs +0 -11
- package/parser/tests/variable_test/coverage_check.xs +0 -293
- package/parser/tests/workflow_test/valid_sources/basic_workflow_test.xs +0 -13
- package/parser/tests/workflow_test/workflow_test_parser.spec.js +0 -52
- package/parser/tool_parser.spec.js +0 -115
- package/parser/variableValidator.spec.js +0 -179
- package/parser/workflow_test_parser.spec.js +0 -136
- package/parser/workspace_parser.spec.js +0 -142
- package/parser/workspace_trigger_parser.spec.js +0 -332
- package/toTmLanguage.js +0 -75
- package/utils.spec.js +0 -369
- package/workspace/crossFileValidator.spec.js +0 -654
- package/workspace/referenceTracking.spec.js +0 -420
- package/workspace/workspaceIndex.spec.js +0 -189
|
@@ -1,332 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.varFn();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("varFn", () => {
|
|
15
|
-
it("varFn accepts a string literal as value", () => {
|
|
16
|
-
const parser = parse(`var $user {
|
|
17
|
-
value = "email"
|
|
18
|
-
}`);
|
|
19
|
-
expect(parser.errors).to.be.empty;
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("varFn accepts the attribute of a filtered value", () => {
|
|
23
|
-
const parser = parse(`var $user_enabled {
|
|
24
|
-
value = ($user_preferences|first).enabled
|
|
25
|
-
}`);
|
|
26
|
-
expect(parser.errors).to.be.empty;
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("varFn accepts a filter in the value", () => {
|
|
30
|
-
const parser = parse(`var $transaction_count {
|
|
31
|
-
value = $daily_sales|count
|
|
32
|
-
description = "Count number of transactions"
|
|
33
|
-
}`);
|
|
34
|
-
expect(parser.errors).to.be.empty;
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it("varFn accepts a multiline object with commas separated values", () => {
|
|
38
|
-
const parser = parse(`var $rank_order {
|
|
39
|
-
value = {
|
|
40
|
-
"ensign": 1,
|
|
41
|
-
"lieutenant junior grade": 2,
|
|
42
|
-
"lieutenant": 3,
|
|
43
|
-
"lieutenant commander": 4,
|
|
44
|
-
"commander": 5,
|
|
45
|
-
"captain": 6,
|
|
46
|
-
"commodore": 7,
|
|
47
|
-
"rear admiral": 8,
|
|
48
|
-
"vice admiral": 9,
|
|
49
|
-
"admiral": 10
|
|
50
|
-
}
|
|
51
|
-
description = "Defines a numerical order for Starfleet ranks."
|
|
52
|
-
}`);
|
|
53
|
-
expect(parser.errors).to.be.empty;
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it("varFn accepts a description marker", () => {
|
|
57
|
-
const parser = parse(`var $user {
|
|
58
|
-
value = 12.345
|
|
59
|
-
description = "The user's email address"
|
|
60
|
-
}`);
|
|
61
|
-
expect(parser.errors).to.be.empty;
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it("varFn requires a value field ", () => {
|
|
65
|
-
const parser = parse(`var $user {
|
|
66
|
-
description = "The user's email address"
|
|
67
|
-
}`);
|
|
68
|
-
expect(parser.errors).to.not.be.empty;
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it("varFn fields can be defined in random order", () => {
|
|
72
|
-
const parser = parse(`var $user {
|
|
73
|
-
description = "The user's email address"
|
|
74
|
-
value = $email
|
|
75
|
-
}`);
|
|
76
|
-
expect(parser.errors).to.be.empty;
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it("varFn allows range expressions", () => {
|
|
80
|
-
const parser = parse(`var $numbers {
|
|
81
|
-
value = (1..100)
|
|
82
|
-
}`);
|
|
83
|
-
expect(parser.errors).to.be.empty;
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it("varFn allows range expressions with variables", () => {
|
|
87
|
-
const parser = parse(`var $numbers {
|
|
88
|
-
value = ($var.start..$end_var)
|
|
89
|
-
}`);
|
|
90
|
-
expect(parser.errors).to.be.empty;
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it("varFn accepts a system env variable", () => {
|
|
94
|
-
const parser = parse(`var $user {
|
|
95
|
-
value = $env.$remote_ip
|
|
96
|
-
description = "The user's email address"
|
|
97
|
-
}`);
|
|
98
|
-
expect(parser.errors).to.be.empty;
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
it("varFn accept scientific notation", () => {
|
|
102
|
-
const parser = parse(` var $x1 {
|
|
103
|
-
value = 4.21E-6
|
|
104
|
-
}`);
|
|
105
|
-
expect(parser.errors).to.be.empty;
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it("varFn expect a variable name", () => {
|
|
109
|
-
const parser = parse(`var {
|
|
110
|
-
value = "email"
|
|
111
|
-
description = "The user's email address"
|
|
112
|
-
}`);
|
|
113
|
-
expect(parser.errors).to.not.be.empty;
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it("varFn accepts an $env.$http_headers object as the value", () => {
|
|
117
|
-
const parser = parse(`var $http_headers {
|
|
118
|
-
value = $env.$http_headers
|
|
119
|
-
}`);
|
|
120
|
-
expect(parser.errors).to.be.empty;
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
it("varFn expect an as variable to be an identifier", () => {
|
|
124
|
-
const parser = parse(`var "user" {
|
|
125
|
-
value = "email"
|
|
126
|
-
description = "The user's email address"
|
|
127
|
-
}`);
|
|
128
|
-
expect(parser.errors).to.not.be.empty;
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
it("varFn can update a value", () => {
|
|
132
|
-
const parser = parse(`var.update $user.foo {
|
|
133
|
-
value = "email"
|
|
134
|
-
}`);
|
|
135
|
-
expect(parser.errors).to.be.empty;
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
it("varFn can update a value", () => {
|
|
139
|
-
const parser = parse(`var.update $http_headers.Referer {
|
|
140
|
-
value = "example.com"
|
|
141
|
-
}`);
|
|
142
|
-
expect(parser.errors).to.be.empty;
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
it("var.update should allow $input reference in its filters", () => {
|
|
146
|
-
const parser = parse(`var.update $object_for_update {
|
|
147
|
-
value = $object_for_update
|
|
148
|
-
|merge_recursive:{$input.key:$input.value}
|
|
149
|
-
}`);
|
|
150
|
-
expect(parser.errors).to.be.empty;
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
it("should allow accessing a property from an object defined in place", () => {
|
|
154
|
-
let parser = parse(`var $config {
|
|
155
|
-
value = {
|
|
156
|
-
api_key: "12345",
|
|
157
|
-
timeout: 30
|
|
158
|
-
}.api_key
|
|
159
|
-
description = "API key from config"
|
|
160
|
-
}`);
|
|
161
|
-
expect(parser.errors).to.be.empty;
|
|
162
|
-
|
|
163
|
-
parser = parse(`var $config {
|
|
164
|
-
value = {
|
|
165
|
-
api_key: "12345",
|
|
166
|
-
timeout: 30
|
|
167
|
-
}["api_key"]
|
|
168
|
-
description = "API key from config"
|
|
169
|
-
}`);
|
|
170
|
-
expect(parser.errors).to.be.empty;
|
|
171
|
-
|
|
172
|
-
parser = parse(`var $config {
|
|
173
|
-
value = {
|
|
174
|
-
api_key: "12345",
|
|
175
|
-
timeout: 30
|
|
176
|
-
}.["api_key"]
|
|
177
|
-
description = "API key from config"
|
|
178
|
-
}`);
|
|
179
|
-
expect(parser.errors).to.be.empty;
|
|
180
|
-
|
|
181
|
-
parser = parse(`var $config {
|
|
182
|
-
value = {
|
|
183
|
-
api_key: "12345",
|
|
184
|
-
timeout: 30
|
|
185
|
-
}.api-key
|
|
186
|
-
description = "API key from config"
|
|
187
|
-
}`);
|
|
188
|
-
expect(parser.errors).to.not.be.empty;
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
it("should allow accessing an index from an array defined in place", () => {
|
|
192
|
-
let parser = parse(`var $config {
|
|
193
|
-
value = [1,2,3].0
|
|
194
|
-
description = "API key from config"
|
|
195
|
-
}`);
|
|
196
|
-
expect(parser.errors).to.be.empty;
|
|
197
|
-
|
|
198
|
-
parser = parse(`var $config {
|
|
199
|
-
value = [1,2,3][1]
|
|
200
|
-
description = "API key from config"
|
|
201
|
-
}`);
|
|
202
|
-
expect(parser.errors).to.be.empty;
|
|
203
|
-
|
|
204
|
-
parser = parse(`var $config {
|
|
205
|
-
value = [1,2,3].[1]
|
|
206
|
-
description = "API key from config"
|
|
207
|
-
}`);
|
|
208
|
-
expect(parser.errors).to.be.empty;
|
|
209
|
-
|
|
210
|
-
parser = parse(`var $config {
|
|
211
|
-
value = [1,2,3][$index]
|
|
212
|
-
description = "API key from config"
|
|
213
|
-
}`);
|
|
214
|
-
expect(parser.errors).to.be.empty;
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
// Blacklisted variable names - these conflict with built-in variables
|
|
218
|
-
// Some are blocked at lexer level (separate tokens), others at parser level
|
|
219
|
-
describe("blacklisted variable names", () => {
|
|
220
|
-
// These are lexed as ShortFormVariable and need explicit blacklisting
|
|
221
|
-
const shortFormBlacklisted = ["output", "db", "toolset"];
|
|
222
|
-
|
|
223
|
-
for (const name of shortFormBlacklisted) {
|
|
224
|
-
it(`rejects var $${name} as variable name (short form)`, () => {
|
|
225
|
-
const parser = parse(`var $${name} {
|
|
226
|
-
value = "test"
|
|
227
|
-
}`);
|
|
228
|
-
expect(parser.errors).to.be.empty;
|
|
229
|
-
expect(parser.warnings).to.not.be.empty;
|
|
230
|
-
expect(parser.warnings[0].message).to.include("reserved");
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
it(`rejects var.update $${name} as variable name (short form)`, () => {
|
|
234
|
-
const parser = parse(`var.update $${name} {
|
|
235
|
-
value = "test"
|
|
236
|
-
}`);
|
|
237
|
-
expect(parser.errors).to.be.empty;
|
|
238
|
-
expect(parser.warnings).to.not.be.empty;
|
|
239
|
-
expect(parser.warnings[0].message).to.include("reserved");
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// These are separate tokens and already rejected by the parser
|
|
244
|
-
const separateTokenBlacklisted = [
|
|
245
|
-
"auth",
|
|
246
|
-
"input",
|
|
247
|
-
"env",
|
|
248
|
-
"response",
|
|
249
|
-
"error",
|
|
250
|
-
"this",
|
|
251
|
-
];
|
|
252
|
-
|
|
253
|
-
for (const name of separateTokenBlacklisted) {
|
|
254
|
-
it(`warns var $${name} as variable name (separate token)`, () => {
|
|
255
|
-
const parser = parse(`var $${name} {
|
|
256
|
-
value = "test"
|
|
257
|
-
}`);
|
|
258
|
-
if (parser.errors.length === 0) {
|
|
259
|
-
console.log(parser.errors, name);
|
|
260
|
-
}
|
|
261
|
-
expect(parser.errors).to.be.empty;
|
|
262
|
-
expect(parser.warnings).to.not.be.empty;
|
|
263
|
-
expect(parser.warnings[0].message).to.include("reserved");
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
it(`warns var.update $${name} as variable name (separate token)`, () => {
|
|
267
|
-
const parser = parse(`var.update $${name} {
|
|
268
|
-
value = "test"
|
|
269
|
-
}`);
|
|
270
|
-
expect(parser.errors).to.be.empty;
|
|
271
|
-
expect(parser.warnings).to.not.be.empty;
|
|
272
|
-
expect(parser.warnings[0].message).to.include("reserved");
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
// $var is the LongFormVariable prefix, parser expects a dot after it
|
|
277
|
-
it("warns var $var as variable name (long form prefix)", () => {
|
|
278
|
-
const parser = parse(`var $var {
|
|
279
|
-
value = "test"
|
|
280
|
-
}`);
|
|
281
|
-
expect(parser.warnings).to.not.be.empty;
|
|
282
|
-
expect(parser.errors).to.be.empty;
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
it("accepts a backtick expression as value", () => {
|
|
286
|
-
const parser = parse(`var $current_time {
|
|
287
|
-
value = \`12316546543321321.3213521654654\`
|
|
288
|
-
}`);
|
|
289
|
-
expect(parser.errors).to.be.empty;
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
// All blacklisted names should be rejected in long form via var.update
|
|
293
|
-
const allBlacklisted = [
|
|
294
|
-
"auth",
|
|
295
|
-
"input",
|
|
296
|
-
"env",
|
|
297
|
-
"response",
|
|
298
|
-
"output",
|
|
299
|
-
"var",
|
|
300
|
-
"db",
|
|
301
|
-
"error",
|
|
302
|
-
"toolset",
|
|
303
|
-
"this",
|
|
304
|
-
];
|
|
305
|
-
|
|
306
|
-
for (const name of allBlacklisted) {
|
|
307
|
-
it(`rejects var.update $var.${name} as variable name (long form)`, () => {
|
|
308
|
-
const parser = parse(`var.update $var.${name} {
|
|
309
|
-
value = "test"
|
|
310
|
-
}`);
|
|
311
|
-
expect(parser.errors).to.be.empty;
|
|
312
|
-
expect(parser.warnings).to.not.be.empty;
|
|
313
|
-
expect(parser.warnings[0].message).to.include("reserved");
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
// Ensure valid names still work
|
|
318
|
-
it("accepts var $user as variable name", () => {
|
|
319
|
-
const parser = parse(`var $user {
|
|
320
|
-
value = "test"
|
|
321
|
-
}`);
|
|
322
|
-
expect(parser.errors).to.be.empty;
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
it("accepts var $my_input as variable name", () => {
|
|
326
|
-
const parser = parse(`var $my_input {
|
|
327
|
-
value = "test"
|
|
328
|
-
}`);
|
|
329
|
-
expect(parser.errors).to.be.empty;
|
|
330
|
-
});
|
|
331
|
-
});
|
|
332
|
-
});
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.sectionStack.push("workflowTestDeclaration");
|
|
11
|
-
parser.workflowExpectFn();
|
|
12
|
-
return parser;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
describe("workflowExpectFn", () => {
|
|
16
|
-
it("workflowExpectFn accepts a string literal as value", () => {
|
|
17
|
-
const parser = parse(`expect.to_equal ($response.email) {
|
|
18
|
-
value = "email@example.com"
|
|
19
|
-
}`);
|
|
20
|
-
expect(parser.errors).to.be.empty;
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("workflowExpectFn accepts filtered values", () => {
|
|
24
|
-
const parser = parse(`expect.to_equal ($total
|
|
25
|
-
|subtract:$tax
|
|
26
|
-
|subtract:$cost
|
|
27
|
-
) {
|
|
28
|
-
value = $som_value
|
|
29
|
-
}`);
|
|
30
|
-
expect(parser.errors).to.be.empty;
|
|
31
|
-
});
|
|
32
|
-
});
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.zipAddToArchiveFn();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("zipAddToArchiveFn", () => {
|
|
15
|
-
it("zipAddToArchiveFn accepts a file and a zip", () => {
|
|
16
|
-
const parser = parse(`add_to_archive {
|
|
17
|
-
file = $input.file
|
|
18
|
-
zip = $zip_file
|
|
19
|
-
}`);
|
|
20
|
-
expect(parser.errors).to.be.empty;
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("zipAddToArchiveFn accepts a password", () => {
|
|
24
|
-
const parser = parse(`add_to_archive {
|
|
25
|
-
file = $input.file
|
|
26
|
-
zip = $zip_file
|
|
27
|
-
password = "foo bar"
|
|
28
|
-
password_encryption = "standard"
|
|
29
|
-
}`);
|
|
30
|
-
expect(parser.errors).to.be.empty;
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it("zipAddToArchiveFn can be disabled", () => {
|
|
34
|
-
const parser = parse(`add_to_archive {
|
|
35
|
-
file = $input.file
|
|
36
|
-
zip = $zip_file
|
|
37
|
-
disabled = true
|
|
38
|
-
}`);
|
|
39
|
-
expect(parser.errors).to.be.empty;
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it("zipAddToArchiveFn accept an optional filename", () => {
|
|
43
|
-
const parser = parse(`add_to_archive {
|
|
44
|
-
file = $input.file
|
|
45
|
-
zip = $zip_file
|
|
46
|
-
filename = "new_file.txt"
|
|
47
|
-
}`);
|
|
48
|
-
expect(parser.errors).to.be.empty;
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it("zipAddToArchiveFn accept a description", () => {
|
|
52
|
-
const parser = parse(`add_to_archive {
|
|
53
|
-
file = $input.file
|
|
54
|
-
zip = $zip_file
|
|
55
|
-
description = "compressed data"
|
|
56
|
-
}`);
|
|
57
|
-
expect(parser.errors).to.be.empty;
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it("zipAddToArchiveFn does not accept an output as value", () => {
|
|
61
|
-
const parser = parse(`add_to_archive {
|
|
62
|
-
filename = "some_file.zip"
|
|
63
|
-
} as $x4`);
|
|
64
|
-
expect(parser.errors).to.not.be.empty;
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
it("zipAddToArchiveFn requires a file and a zip", () => {
|
|
68
|
-
let parser = parse(`add_to_archive {
|
|
69
|
-
zip = $zip_file
|
|
70
|
-
}`);
|
|
71
|
-
expect(parser.errors).to.not.be.empty;
|
|
72
|
-
|
|
73
|
-
parser = parse(`add_to_archive {
|
|
74
|
-
file = $input.file
|
|
75
|
-
}`);
|
|
76
|
-
expect(parser.errors).to.not.be.empty;
|
|
77
|
-
});
|
|
78
|
-
});
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.zipCreateArchiveFn();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("zipCreateArchiveFn", () => {
|
|
15
|
-
it("zipCreateArchiveFn accepts a filename", () => {
|
|
16
|
-
const parser = parse(`create_archive {
|
|
17
|
-
filename = "some_file.zip"
|
|
18
|
-
} as $x4`);
|
|
19
|
-
expect(parser.errors).to.be.empty;
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("zipCreateArchiveFn accepts a password", () => {
|
|
23
|
-
const parser = parse(`create_archive {
|
|
24
|
-
filename = "some_file.zip"
|
|
25
|
-
password = "foo bar"
|
|
26
|
-
password_encryption = "standard"
|
|
27
|
-
} as $x4`);
|
|
28
|
-
expect(parser.errors).to.be.empty;
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("zipCreateArchiveFn can be disabled", () => {
|
|
32
|
-
const parser = parse(`create_archive {
|
|
33
|
-
filename = "some_file.zip"
|
|
34
|
-
disabled = true
|
|
35
|
-
} as $x4`);
|
|
36
|
-
expect(parser.errors).to.be.empty;
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it("zipCreateArchiveFn accept a description", () => {
|
|
40
|
-
const parser = parse(`create_archive {
|
|
41
|
-
filename = "some_file.zip"
|
|
42
|
-
description = "compressed data"
|
|
43
|
-
} as $x4`);
|
|
44
|
-
expect(parser.errors).to.be.empty;
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it("zipCreateArchiveFn requires a filename", () => {
|
|
48
|
-
const parser = parse(`create_archive {
|
|
49
|
-
description = "compressed data"
|
|
50
|
-
} as $x4`);
|
|
51
|
-
expect(parser.errors).to.not.be.empty;
|
|
52
|
-
});
|
|
53
|
-
});
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.zipDeleteFromArchiveFn();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("zipDeleteFromArchiveFn", () => {
|
|
15
|
-
it("zipDeleteFromArchiveFn accepts a filename and a zip", () => {
|
|
16
|
-
const parser = parse(`delete_from_archive {
|
|
17
|
-
zip = $zip_file
|
|
18
|
-
filename = "some_file.zip"
|
|
19
|
-
}`);
|
|
20
|
-
expect(parser.errors).to.be.empty;
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("zipDeleteFromArchiveFn accepts a password", () => {
|
|
24
|
-
const parser = parse(`delete_from_archive {
|
|
25
|
-
zip = $zip_file
|
|
26
|
-
filename = "some_file.zip"
|
|
27
|
-
password = "foo bar"
|
|
28
|
-
}`);
|
|
29
|
-
expect(parser.errors).to.be.empty;
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it("zipDeleteFromArchiveFn can be disabled", () => {
|
|
33
|
-
const parser = parse(`delete_from_archive {
|
|
34
|
-
zip = $zip_file
|
|
35
|
-
filename = "some_file.zip"
|
|
36
|
-
disabled = true
|
|
37
|
-
}`);
|
|
38
|
-
expect(parser.errors).to.be.empty;
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it("zipDeleteFromArchiveFn accept a description", () => {
|
|
42
|
-
const parser = parse(`delete_from_archive {
|
|
43
|
-
zip = $zip_file
|
|
44
|
-
filename = "some_file.zip"
|
|
45
|
-
description = "compressed data"
|
|
46
|
-
}`);
|
|
47
|
-
expect(parser.errors).to.be.empty;
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("zipDeleteFromArchiveFn does not accept an output as value", () => {
|
|
51
|
-
const parser = parse(`delete_from_archive {
|
|
52
|
-
zip = $zip_file
|
|
53
|
-
filename = "some_file.zip"
|
|
54
|
-
} as $x4`);
|
|
55
|
-
expect(parser.errors).to.not.be.empty;
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it("zipDeleteFromArchiveFn requires a filename and a zip", () => {
|
|
59
|
-
let parser = parse(`delete_from_archive {
|
|
60
|
-
filename = "some_file.zip"
|
|
61
|
-
}`);
|
|
62
|
-
expect(parser.errors).to.not.be.empty;
|
|
63
|
-
|
|
64
|
-
parser = parse(`delete_from_archive {
|
|
65
|
-
zip = $zip_file
|
|
66
|
-
}`);
|
|
67
|
-
expect(parser.errors).to.not.be.empty;
|
|
68
|
-
});
|
|
69
|
-
});
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.zipExtractFn();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("zipExtractFn", () => {
|
|
15
|
-
it("zipExtractFn accepts a zip", () => {
|
|
16
|
-
const parser = parse(`extract {
|
|
17
|
-
zip = $zip_file
|
|
18
|
-
} as $x4`);
|
|
19
|
-
expect(parser.errors).to.be.empty;
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("zipExtractFn accepts a password", () => {
|
|
23
|
-
const parser = parse(`extract {
|
|
24
|
-
zip = $zip_file
|
|
25
|
-
password = "foo bar"
|
|
26
|
-
} as $x4`);
|
|
27
|
-
expect(parser.errors).to.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("zipExtractFn can be disabled", () => {
|
|
31
|
-
const parser = parse(`extract {
|
|
32
|
-
zip = $zip_file
|
|
33
|
-
disabled = true
|
|
34
|
-
} as $x4`);
|
|
35
|
-
expect(parser.errors).to.be.empty;
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it("zipExtractFn accept a description", () => {
|
|
39
|
-
const parser = parse(`extract {
|
|
40
|
-
zip = $zip_file
|
|
41
|
-
description = "compressed data"
|
|
42
|
-
} as $x4`);
|
|
43
|
-
expect(parser.errors).to.be.empty;
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it("zipExtractFn requires a zip", () => {
|
|
47
|
-
const parser = parse(`extract {
|
|
48
|
-
description = "compressed data"
|
|
49
|
-
} as $x4`);
|
|
50
|
-
expect(parser.errors).to.not.be.empty;
|
|
51
|
-
});
|
|
52
|
-
});
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { lexDocument } from "../../../lexer/lexer.js";
|
|
4
|
-
import { parser } from "../../test_parser.js";
|
|
5
|
-
|
|
6
|
-
function parse(inputText) {
|
|
7
|
-
parser.reset();
|
|
8
|
-
const lexResult = lexDocument(inputText);
|
|
9
|
-
parser.input = lexResult.tokens;
|
|
10
|
-
parser.zipViewContentsFn();
|
|
11
|
-
return parser;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("zipViewContentsFn", () => {
|
|
15
|
-
it("zipViewContentsFn accepts a filename", () => {
|
|
16
|
-
const parser = parse(`view_contents {
|
|
17
|
-
zip = $input.file
|
|
18
|
-
} as $x4`);
|
|
19
|
-
expect(parser.errors).to.be.empty;
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("zipViewContentsFn accepts a password", () => {
|
|
23
|
-
const parser = parse(`view_contents {
|
|
24
|
-
zip = $input.file
|
|
25
|
-
password = "foo bar"
|
|
26
|
-
} as $x4`);
|
|
27
|
-
expect(parser.errors).to.be.empty;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("zipViewContentsFn can be disabled", () => {
|
|
31
|
-
const parser = parse(`view_contents {
|
|
32
|
-
zip = $input.file
|
|
33
|
-
disabled = true
|
|
34
|
-
} as $x4`);
|
|
35
|
-
expect(parser.errors).to.be.empty;
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it("zipViewContentsFn accept a description", () => {
|
|
39
|
-
const parser = parse(`view_contents {
|
|
40
|
-
zip = $input.file
|
|
41
|
-
description = "compressed data"
|
|
42
|
-
} as $x4`);
|
|
43
|
-
expect(parser.errors).to.be.empty;
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it("zipViewContentsFn requires a filename", () => {
|
|
47
|
-
const parser = parse(`view_contents {
|
|
48
|
-
description = "compressed data"
|
|
49
|
-
} as $x4`);
|
|
50
|
-
expect(parser.errors).to.not.be.empty;
|
|
51
|
-
});
|
|
52
|
-
});
|