harmonyc 0.28.1 → 0.28.3
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/AGENTS.md
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
|
-
# Writing unit tests in .harmony files
|
|
1
|
+
# Writing unit tests in Harmony Code (.harmony) files
|
|
2
2
|
|
|
3
|
-
When writing unit tests, write them in `.harmony` files using a special structured format. This specification will be compiled to JS on-the-fly and imports the corresponding `.phrases.ts` files for
|
|
3
|
+
When writing unit tests, write them in `.harmony` files using a special structured format. This specification will be compiled to JS on-the-fly and imports the corresponding `.phrases.ts` files for phrase implementations.
|
|
4
4
|
|
|
5
5
|
## File Structure
|
|
6
6
|
|
|
7
7
|
For tests belonging to a feature, you need:
|
|
8
8
|
|
|
9
|
-
- `example.harmony` - Test specifications
|
|
10
|
-
- `example.phrases.ts` -
|
|
9
|
+
- `example.harmony` - Test specifications
|
|
10
|
+
- `example.phrases.ts` - Phrase implementations
|
|
11
|
+
The Harmony Code compiler will edit the `.phrases.ts` file to add or remove method stubs.
|
|
11
12
|
|
|
12
13
|
## .harmony File Format
|
|
13
14
|
|
|
15
|
+
Example:
|
|
16
|
+
|
|
17
|
+
```harmony
|
|
18
|
+
# This is a comment
|
|
19
|
+
Thi is a comment too
|
|
20
|
+
+ Section 1:
|
|
21
|
+
This is a description of section 1
|
|
22
|
+
over multiple lines.
|
|
23
|
+
- step 1 => expected result 1
|
|
24
|
+
- step 2 => expected result 2
|
|
25
|
+
+ Section 2:
|
|
26
|
+
+ input 1 => expected result 1
|
|
27
|
+
+ input 2 => expected result 2
|
|
28
|
+
```
|
|
29
|
+
|
|
14
30
|
### Syntax Rules
|
|
15
31
|
|
|
16
32
|
#### Line start
|
|
@@ -22,23 +38,67 @@ For tests belonging to a feature, you need:
|
|
|
22
38
|
#### Line content
|
|
23
39
|
|
|
24
40
|
1. **Sections** are any line ending in `:`. It is ignored but is used for naming test cases and groups.
|
|
25
|
-
2. **Steps** consist of an _action_ and
|
|
26
|
-
3. **Error steps** consist of an _action_ followed by `=> !!` and an
|
|
41
|
+
2. **Steps** consist of an _action_ and a _response_ separated by `=>`.
|
|
42
|
+
3. **Error steps** consist of an _action_ followed by `=> !!` and an _error response_, which must be an expected error message fragment in double quotes or docstring, prefer docstring even for single line.
|
|
27
43
|
|
|
28
|
-
#### Action and
|
|
44
|
+
#### Action and Response syntax
|
|
29
45
|
|
|
30
|
-
Use human-readable phrases for both actions and
|
|
31
|
-
Both actions and
|
|
46
|
+
Use human-readable phrases for both actions and responses.
|
|
47
|
+
Both actions and responses can contain:
|
|
32
48
|
|
|
33
49
|
- **words**
|
|
34
|
-
- **punctuation** is
|
|
50
|
+
- **punctuation** is treated as word separators; leading/trailing punctuation is stripped
|
|
35
51
|
- **string arguments** enclosed in double quotes`"like this"`
|
|
36
|
-
- **code arguments** enclosed in backticks `` `like this`
|
|
52
|
+
- **code arguments** enclosed in backticks `` `like this` ``. Can be multi-line.
|
|
53
|
+
- **docstring argument** at the end of the action/response, either starting on same line or on the next line, consecutive lines starting with `| ` are part of it.
|
|
54
|
+
```harmony
|
|
55
|
+
- greeting is | Hello, John Doe!
|
|
56
|
+
- address is
|
|
57
|
+
| 123 Main St
|
|
58
|
+
| Springfield
|
|
59
|
+
- send email => !! | Email address is invalid
|
|
60
|
+
```
|
|
61
|
+
Prefere same line if single-line and short. Pefer single-line multiline for error messages.
|
|
62
|
+
- **variable references** `${varName}` (see Variables section below)
|
|
37
63
|
|
|
38
64
|
Use string arguments for string parameters and code arguments for numbers, booleans, objects, arrays etc.
|
|
39
65
|
|
|
40
|
-
|
|
41
|
-
|
|
66
|
+
#### Single-argument actions and responses
|
|
67
|
+
|
|
68
|
+
If there is one obvious default action in the feature of the file with one parameter, use an action that consists of only that parameter.
|
|
69
|
+
If there is one obvious default response with one parameter, use an response that contains just that parameter.
|
|
70
|
+
```harmony
|
|
71
|
+
+ greet:
|
|
72
|
+
- "John" => "Hello, John!"
|
|
73
|
+
```
|
|
74
|
+
These will be declared in the phrases file as `When_X(name: string)` and `Then_X(expected: string, res: any)`.
|
|
75
|
+
|
|
76
|
+
#### Empty action
|
|
77
|
+
A step can omit the action and consist only of a response. Use this for preconditions or fork branches without an action.
|
|
78
|
+
|
|
79
|
+
```harmony
|
|
80
|
+
+ log in
|
|
81
|
+
+ => logged in successfully
|
|
82
|
+
+ log out => logged out successfully
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### Multiple responses
|
|
86
|
+
|
|
87
|
+
A step can have multiple `=>` responses chained:
|
|
88
|
+
|
|
89
|
+
```harmony
|
|
90
|
+
- do something => first result => second result
|
|
91
|
+
```
|
|
92
|
+
Prefer to put them in separate lines, aligned by the =>
|
|
93
|
+
```harmony
|
|
94
|
+
- do something => first result
|
|
95
|
+
=> second result
|
|
96
|
+
+ do a
|
|
97
|
+
+ do b
|
|
98
|
+
```
|
|
99
|
+
#### Interleaved narrative
|
|
100
|
+
|
|
101
|
+
Use lines without `+` or `-` to add narrative or descriptions to the test cases. This is a powerful way to make tests more readable and maintainable.
|
|
42
102
|
|
|
43
103
|
### Example
|
|
44
104
|
|
|
@@ -48,11 +108,11 @@ If there is one obvious default expected outcome with one parameter, use an expe
|
|
|
48
108
|
This library provides basic calculator functions.
|
|
49
109
|
|
|
50
110
|
+ multiply():
|
|
51
|
-
|
|
52
|
-
|
|
111
|
+
+ multiply `2` and `3` => `6`
|
|
112
|
+
+ multiply `-2` and `3` => `-6`
|
|
53
113
|
|
|
54
114
|
+ divide():
|
|
55
|
-
|
|
115
|
+
+ divide `6` by `2` => `3`
|
|
56
116
|
|
|
57
117
|
Division by zero is an error.
|
|
58
118
|
|
|
@@ -62,14 +122,80 @@ This library provides basic calculator functions.
|
|
|
62
122
|
+ divide `0` by `0` => !! "Division by zero"
|
|
63
123
|
```
|
|
64
124
|
|
|
125
|
+
```harmony
|
|
126
|
+
+ login and manage:
|
|
127
|
+
- log in with "admin" role
|
|
128
|
+
+ manage users
|
|
129
|
+
+ manage orders
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Variables
|
|
133
|
+
|
|
134
|
+
By default, the return value of an action's `When_*` method is passed as the last argument to all `Then_*` methods of the same step. To store values across steps, use variables with `${varName}` syntax.
|
|
135
|
+
|
|
136
|
+
**Set a variable** (a special action with no `When_*` method):
|
|
137
|
+
```harmony
|
|
138
|
+
- ${userId} "abc-123"
|
|
139
|
+
- ${count} `42`
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Save a response to a variable** (inline with `=>`):
|
|
143
|
+
```harmony
|
|
144
|
+
- create user => ${userId}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Save the return value of a `Then_` method to a variable:**
|
|
148
|
+
```harmony
|
|
149
|
+
- create user => id ${userId}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Use a variable**:
|
|
153
|
+
```harmony
|
|
154
|
+
- log in with ${userId}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Use a variable in a string argument**
|
|
158
|
+
```harmony
|
|
159
|
+
- login with "${userId}@example.com"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Use a variable in a code argument:**
|
|
163
|
+
```harmony
|
|
164
|
+
- process `{id: ${userId}}`
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Variables set with a plain assignment action require no method implementation. Variables used in strings are interpolated using `context.task.meta.variables?.["varName"]` at runtime.
|
|
168
|
+
|
|
169
|
+
### Switches (Parameterized variants)
|
|
170
|
+
|
|
171
|
+
Use `{ option1 ; option2 ; option3 }` inside a phrase to generate one test case per option. All switches within a single test case must have the same number of choices.
|
|
172
|
+
|
|
173
|
+
```harmony
|
|
174
|
+
+ password validation:
|
|
175
|
+
- set password { "123" ; "abc" ; "" } => !! "Invalid password"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
This generates three separate test cases. Multiple switches in the same test case are resolved in parallel (first choices together, second choices together, etc.):
|
|
179
|
+
|
|
180
|
+
```harmony
|
|
181
|
+
+ greet { "John" ; "Jane" } => { "Hello John!" ; "Hello Jane!" }
|
|
182
|
+
```
|
|
183
|
+
|
|
65
184
|
## .phrases.ts File Implementation
|
|
66
185
|
|
|
67
186
|
Create a class that implements step methods corresponding to your test specifications. Use imports as needed, e.g. import the functions you are testing.
|
|
68
187
|
|
|
69
|
-
`When_*` methods implement actions, and `Then_*` methods implement
|
|
70
|
-
an extra parameter, the return value of the preceding `When_*` method. Add the words and parameters from the action /
|
|
188
|
+
`When_*` methods implement actions, and `Then_*` methods implement responses. `Then_*` methods receive
|
|
189
|
+
an extra parameter, the return value of the preceding `When_*` method. Add the words and parameters from the action / response, separated by underscores, with parameters denoted by `X`,`Y`,`Z`,`A`,`B`,...
|
|
190
|
+
|
|
191
|
+
### Method naming rules
|
|
192
|
+
|
|
193
|
+
- Words are joined with underscores: `hello world` → `When_hello_world`
|
|
194
|
+
- Each argument (string or code) is replaced by the next placeholder: first `X`, then `Y`, `Z`, `A`, `B`, `C`, ..., e.g. `add "5" and "10"` → `When_add_X_and_Y(x: string, y: string)`
|
|
195
|
+
- Punctuation is treated as a word separator and leading/trailing punctuation is stripped: `hello, world!` → `When_hello_world`
|
|
196
|
+
- Non-ASCII letters (accented, international) are preserved in method names
|
|
71
197
|
|
|
72
|
-
Use vitest
|
|
198
|
+
Use vitest expect in assertions.
|
|
73
199
|
|
|
74
200
|
Error responses need no implementation.
|
|
75
201
|
|
|
@@ -27,7 +27,7 @@ export function provideDefinition(textDocumentParams) {
|
|
|
27
27
|
const ast = parse(text);
|
|
28
28
|
connection.console.log(`Definition request for ${uri} at ${textDocumentParams.position.line}:${textDocumentParams.position.character}`);
|
|
29
29
|
// Use AST to find the node at the cursor position
|
|
30
|
-
const nodeAtPosition = ast.findNodeAtPosition(textDocumentParams.position.line
|
|
30
|
+
const nodeAtPosition = ast.findNodeAtPosition(textDocumentParams.position.line, textDocumentParams.position.character);
|
|
31
31
|
let phrase = null;
|
|
32
32
|
if (nodeAtPosition) {
|
|
33
33
|
connection.console.log(`Found node at position: ${nodeAtPosition.constructor.name}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provideDefinition.js","sourceRoot":"","sources":["../../src/lsp/provideDefinition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,mCAAmC;AACnC,MAAM,UAAU,iBAAiB,CAC/B,kBAA8C;IAE9C,MAAM,GAAG,GAAG,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAA;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,4CAA4C,GAAG,EAAE,CAAC,CAAA;QACzE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;QACtE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAE3C,oCAAoC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QAEvB,UAAU,CAAC,OAAO,CAAC,GAAG,CACpB,0BAA0B,GAAG,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,CAChH,CAAA;QAED,kDAAkD;QAClD,MAAM,cAAc,GAAG,GAAG,CAAC,kBAAkB,CAC3C,kBAAkB,CAAC,QAAQ,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"provideDefinition.js","sourceRoot":"","sources":["../../src/lsp/provideDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,14 @@ export class PhrasesAssistant {
|
|
|
5
5
|
this.existingMethods = new Set();
|
|
6
6
|
this.project = project;
|
|
7
7
|
this.opts = opts;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const existingFile = this.project.addSourceFileAtPathIfExists(path);
|
|
9
|
+
if (existingFile) {
|
|
10
|
+
this.file = existingFile;
|
|
11
|
+
this.file.refreshFromFileSystemSync();
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
this.file = this.project.createSourceFile(path);
|
|
15
|
+
}
|
|
10
16
|
const clazz = this.file.getClass(className);
|
|
11
17
|
if (!clazz) {
|
|
12
18
|
const defaultExport = this.file.getDefaultExportSymbol();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phrases_assistant.js","sourceRoot":"","sources":["../../src/phrases_assistant/phrases_assistant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAG7B,MAAM,OAAO,gBAAgB;IAO3B,YACE,OAAkB,EAClB,IAAY,EACZ,SAAiB,EACjB,OAEI,EAAE;;QATR,oBAAe,GAAgB,IAAI,GAAG,EAAE,CAAA;QAWtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,
|
|
1
|
+
{"version":3,"file":"phrases_assistant.js","sourceRoot":"","sources":["../../src/phrases_assistant/phrases_assistant.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED