Thu, 23 Mar 2023 11:51:31 +0000
client: Move some generic utility functions to a helpers module
41
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 | local it = require "scansion.iterators"; |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 | |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 | local script_methods = {}; |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 | |
43
b37504fa3031
Add annotations to actions (by grabbing the preceding comment)
Matthew Wild <mwild1@gmail.com>
parents:
41
diff
changeset
|
5 | local excluded_fields = { name = true, defined_line = true, type = true, annotation = true }; |
41
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 | function script_methods:client(data) |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 | self:_append("["..data.name.."]"); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 | for k, v in pairs(data) do |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 | if not excluded_fields[k] then |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 | self:_append("", k..": "..v); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 | self:_append(""); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 | |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 | function script_methods:action(name, verb, data) |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 | if self.in_header then |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 | self.in_header = false; |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 | self:_append("----------"); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 | self:_append(""); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 | |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 | self:_append(name.." "..verb..(data and ":" or "")); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 | if data then |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 | for s in tostring(data):gmatch("[^\n]+") do |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 | self:_append("", s); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 | self:_append(""); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 | |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 | function script_methods:_append(...) |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 | local fields = { ... }; |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 | for i = 1, select("#", ...) do |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 | fields[i] = tostring(fields[i]); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 | table.insert(self.lines, table.concat(fields, "\t")); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 | |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 | function script_methods:lines() |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 | return it.values(self.lines); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 | |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 | function script_methods:render() |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 | return table.concat(self.lines, "\n"); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 | end |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 | |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 | local script_mt = { __index = script_methods }; |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 | |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 | return { |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 | new_script = function () |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 | return setmetatable({ in_header = true, n_clients = 0, clients = {} }, script_mt); |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 | end; |
623f94abe7a0
scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 | } |