@temperlang/std 0.0.6 → 0.1.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/all-exports.js +3 -0
- package/package.json +7 -2
- package/regex.js +557 -557
- package/regex.js.map +1 -1
- package/temporal.js +35 -35
- package/temporal.js.map +1 -1
- package/testing.js +125 -131
- package/testing.js.map +1 -1
- package/config.js +0 -26
- package/config.js.map +0 -1
- package/regex__preface.js +0 -0
- package/regex__preface.js.map +0 -1
- package/temporal__preface.js +0 -0
- package/temporal__preface.js.map +0 -1
- package/testing__preface.js +0 -0
- package/testing__preface.js.map +0 -1
package/testing.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "@temperlang/core";
|
|
4
|
-
import {
|
|
5
|
-
strict as strict__19
|
|
2
|
+
strict as strict__10
|
|
6
3
|
} from "assert";
|
|
4
|
+
import {
|
|
5
|
+
listBuilderAdd as listBuilderAdd_4, listBuilderToList as listBuilderToList_14, listJoin as listJoin_24, listify as listify_42, pairConstructor as pairConstructor_44, listMap as listMap_45, listGet as listGet_53, globalConsole as vGlobalConsole__47_56, strCat as strCat_57
|
|
6
|
+
} from "@temperlang/core";
|
|
7
7
|
export class Test {
|
|
8
8
|
/**
|
|
9
|
-
* @param {boolean}
|
|
10
|
-
* @param {() => string}
|
|
9
|
+
* @param {boolean} success_1
|
|
10
|
+
* @param {() => string} message_2
|
|
11
11
|
*/
|
|
12
|
-
assert(
|
|
13
|
-
if (!
|
|
14
|
-
this.#
|
|
15
|
-
|
|
12
|
+
assert(success_1, message_2) {
|
|
13
|
+
if (! success_1) {
|
|
14
|
+
this.#_passing_3 = false;
|
|
15
|
+
listBuilderAdd_4(this.#_messages_5, message_2());
|
|
16
16
|
} else {
|
|
17
17
|
void 0;
|
|
18
18
|
}
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* @param {boolean}
|
|
23
|
-
* @param {() => string}
|
|
22
|
+
* @param {boolean} success_7
|
|
23
|
+
* @param {() => string} message_8
|
|
24
24
|
* @returns {void}
|
|
25
25
|
*/
|
|
26
|
-
assertHard(
|
|
27
|
-
this.assert(
|
|
28
|
-
if (!
|
|
29
|
-
this.#
|
|
30
|
-
|
|
26
|
+
assertHard(success_7, message_8) {
|
|
27
|
+
this.assert(success_7, message_8);
|
|
28
|
+
if (! success_7) {
|
|
29
|
+
this.#_failedOnAssert_9 = true;
|
|
30
|
+
strict__10.fail(this.messagesCombined());
|
|
31
31
|
} else {
|
|
32
32
|
void 0;
|
|
33
33
|
}
|
|
@@ -36,194 +36,188 @@ export class Test {
|
|
|
36
36
|
/** @returns {void} */
|
|
37
37
|
softFailToHard() {
|
|
38
38
|
if (this.hasUnhandledFail) {
|
|
39
|
-
this.#
|
|
40
|
-
|
|
39
|
+
this.#_failedOnAssert_9 = true;
|
|
40
|
+
strict__10.fail(this.messagesCombined());
|
|
41
41
|
} else {
|
|
42
42
|
void 0;
|
|
43
43
|
}
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
|
-
/** @type {boolean} */
|
|
47
|
-
#passing_21;
|
|
48
46
|
/** @returns {boolean} */
|
|
49
47
|
get passing() {
|
|
50
|
-
return this.#
|
|
48
|
+
return this.#_passing_3;
|
|
51
49
|
}
|
|
52
50
|
/** @returns {Array<string>} */
|
|
53
51
|
messages() {
|
|
54
|
-
return
|
|
52
|
+
return listBuilderToList_14(this.#_messages_5);
|
|
55
53
|
}
|
|
56
|
-
/** @type {boolean} */
|
|
57
|
-
#failedOnAssert_24;
|
|
58
54
|
/** @returns {boolean} */
|
|
59
55
|
get failedOnAssert() {
|
|
60
|
-
return this.#
|
|
56
|
+
return this.#_failedOnAssert_9;
|
|
61
57
|
}
|
|
62
|
-
/** @type {boolean} */
|
|
63
|
-
#hasUnhandledFail_26;
|
|
64
58
|
/** @returns {boolean} */
|
|
65
59
|
get hasUnhandledFail() {
|
|
66
|
-
let
|
|
67
|
-
if (this.#
|
|
68
|
-
|
|
60
|
+
let t_17;
|
|
61
|
+
if (this.#_failedOnAssert_9) {
|
|
62
|
+
t_17 = true;
|
|
69
63
|
} else {
|
|
70
|
-
|
|
64
|
+
t_17 = this.#_passing_3;
|
|
71
65
|
}
|
|
72
|
-
return !
|
|
66
|
+
return ! t_17;
|
|
73
67
|
}
|
|
74
68
|
/** @returns {string | null} */
|
|
75
69
|
messagesCombined() {
|
|
76
|
-
let
|
|
77
|
-
let
|
|
78
|
-
let
|
|
79
|
-
if (! this.#
|
|
80
|
-
|
|
70
|
+
let return_19;
|
|
71
|
+
let t_20;
|
|
72
|
+
let t_21;
|
|
73
|
+
if (! this.#_messages_5.length) {
|
|
74
|
+
return_19 = null;
|
|
81
75
|
} else {
|
|
82
|
-
|
|
83
|
-
function
|
|
84
|
-
return
|
|
76
|
+
t_20 = this.#_messages_5;
|
|
77
|
+
function fn_22(it_23) {
|
|
78
|
+
return it_23;
|
|
85
79
|
}
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
t_21 = listJoin_24(t_20, ", ", fn_22);
|
|
81
|
+
return_19 = t_21;
|
|
88
82
|
}
|
|
89
|
-
return
|
|
83
|
+
return return_19;
|
|
90
84
|
}
|
|
91
85
|
/** @type {boolean} */
|
|
92
|
-
#
|
|
86
|
+
#_failedOnAssert_9;
|
|
93
87
|
/** @type {boolean} */
|
|
94
|
-
#
|
|
88
|
+
#_passing_3;
|
|
95
89
|
/** @type {Array<string>} */
|
|
96
|
-
#
|
|
90
|
+
#_messages_5;
|
|
97
91
|
/**
|
|
98
|
-
* @param {boolean}
|
|
99
|
-
* @param {boolean}
|
|
100
|
-
* @param {Array<string>}
|
|
92
|
+
* @param {boolean} _failedOnAssert_25
|
|
93
|
+
* @param {boolean} _passing_26
|
|
94
|
+
* @param {Array<string>} _messages_27
|
|
101
95
|
*/
|
|
102
|
-
constructor(
|
|
103
|
-
let
|
|
104
|
-
if (!(
|
|
105
|
-
|
|
96
|
+
constructor(_failedOnAssert_25, _passing_26, _messages_27) {
|
|
97
|
+
let t_28;
|
|
98
|
+
if (!(_failedOnAssert_25 !== void 0)) {
|
|
99
|
+
_failedOnAssert_25 = false;
|
|
106
100
|
}
|
|
107
|
-
if (!(
|
|
108
|
-
|
|
101
|
+
if (!(_passing_26 !== void 0)) {
|
|
102
|
+
_passing_26 = true;
|
|
109
103
|
}
|
|
110
|
-
if (!(
|
|
111
|
-
|
|
112
|
-
|
|
104
|
+
if (!(_messages_27 !== void 0)) {
|
|
105
|
+
t_28 = [];
|
|
106
|
+
_messages_27 = t_28;
|
|
113
107
|
}
|
|
114
|
-
this.#
|
|
115
|
-
this.#
|
|
116
|
-
this.#
|
|
108
|
+
this.#_failedOnAssert_9 = _failedOnAssert_25;
|
|
109
|
+
this.#_passing_3 = _passing_26;
|
|
110
|
+
this.#_messages_5 = _messages_27;
|
|
117
111
|
return;
|
|
118
112
|
}
|
|
119
113
|
};
|
|
120
|
-
/** @type {
|
|
114
|
+
/** @type {Type_29} */
|
|
121
115
|
export const TestName = "String: Type";
|
|
122
|
-
/** @type {
|
|
116
|
+
/** @type {Type_29} */
|
|
123
117
|
export const TestFun = "fn (Test): (Void | Bubble): Type";
|
|
124
|
-
/** @type {
|
|
118
|
+
/** @type {Type_29} */
|
|
125
119
|
export const TestCase = "Pair\u003cString, fn (Test): (Void | Bubble)\u003e: Type";
|
|
126
|
-
/** @type {
|
|
120
|
+
/** @type {Type_29} */
|
|
127
121
|
export const TestFailureMessage = "String: Type";
|
|
128
|
-
/** @type {
|
|
122
|
+
/** @type {Type_29} */
|
|
129
123
|
export const TestResult = "Pair\u003cString, List\u003cString\u003e\u003e: Type";
|
|
130
124
|
/**
|
|
131
|
-
* @param {Array<
|
|
132
|
-
* @returns {Array<
|
|
125
|
+
* @param {Array<Pair_46<string, (arg0: Test) => void>>} testCases_30
|
|
126
|
+
* @returns {Array<Pair_46<string, Array<string>>>}
|
|
133
127
|
*/
|
|
134
|
-
export function processTestCases(
|
|
135
|
-
function
|
|
136
|
-
let
|
|
137
|
-
let
|
|
138
|
-
let
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
let
|
|
128
|
+
export function processTestCases(testCases_30) {
|
|
129
|
+
function fn_31(testCase_32) {
|
|
130
|
+
let t_33;
|
|
131
|
+
let t_34;
|
|
132
|
+
let t_35;
|
|
133
|
+
const key_36 = testCase_32.key;
|
|
134
|
+
const fun_37 = testCase_32.value;
|
|
135
|
+
const test_38 = new Test();
|
|
136
|
+
let hadBubble_39;
|
|
143
137
|
try {
|
|
144
|
-
|
|
145
|
-
|
|
138
|
+
fun_37(test_38);
|
|
139
|
+
hadBubble_39 = false;
|
|
146
140
|
} catch {
|
|
147
|
-
|
|
141
|
+
hadBubble_39 = true;
|
|
148
142
|
}
|
|
149
|
-
const
|
|
150
|
-
let
|
|
151
|
-
if (
|
|
152
|
-
|
|
143
|
+
const messages_40 = test_38.messages();
|
|
144
|
+
let failures_41;
|
|
145
|
+
if (test_38.passing) {
|
|
146
|
+
failures_41 = listify_42();
|
|
153
147
|
} else {
|
|
154
|
-
if (
|
|
155
|
-
|
|
156
|
-
|
|
148
|
+
if (hadBubble_39) {
|
|
149
|
+
t_33 = test_38.failedOnAssert;
|
|
150
|
+
t_35 = ! t_33;
|
|
157
151
|
} else {
|
|
158
|
-
|
|
152
|
+
t_35 = false;
|
|
159
153
|
}
|
|
160
|
-
if (
|
|
161
|
-
const
|
|
154
|
+
if (t_35) {
|
|
155
|
+
const allMessages_43 = messages_40.slice();
|
|
162
156
|
{
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
157
|
+
listBuilderAdd_4(allMessages_43, "Bubble");
|
|
158
|
+
t_34 = listBuilderToList_14(allMessages_43);
|
|
159
|
+
failures_41 = t_34;
|
|
166
160
|
}
|
|
167
161
|
} else {
|
|
168
|
-
|
|
162
|
+
failures_41 = messages_40;
|
|
169
163
|
}
|
|
170
164
|
}
|
|
171
|
-
return
|
|
165
|
+
return pairConstructor_44(key_36, failures_41);
|
|
172
166
|
}
|
|
173
|
-
return
|
|
167
|
+
return listMap_45(testCases_30, fn_31);
|
|
174
168
|
};
|
|
175
|
-
/** @param {Array<
|
|
176
|
-
export function reportTestResults(
|
|
177
|
-
let
|
|
178
|
-
let
|
|
179
|
-
let
|
|
180
|
-
let
|
|
181
|
-
|
|
169
|
+
/** @param {Array<Pair_46<string, Array<string>>>} testResults_47 */
|
|
170
|
+
export function reportTestResults(testResults_47) {
|
|
171
|
+
let return_48;
|
|
172
|
+
let t_49;
|
|
173
|
+
let t_50;
|
|
174
|
+
let i_51 = 0;
|
|
175
|
+
s__1248_52: {
|
|
182
176
|
while (true) {
|
|
183
|
-
|
|
184
|
-
if (
|
|
177
|
+
t_49 = testResults_47.length;
|
|
178
|
+
if (i_51 < t_49) {
|
|
185
179
|
try {
|
|
186
|
-
|
|
180
|
+
t_50 = listGet_53(testResults_47, i_51);
|
|
187
181
|
} catch {
|
|
188
182
|
break;
|
|
189
183
|
}
|
|
190
|
-
const
|
|
191
|
-
const
|
|
192
|
-
if (!
|
|
193
|
-
|
|
184
|
+
const testResult_54 = t_50;
|
|
185
|
+
const failureMessages_55 = testResult_54.value;
|
|
186
|
+
if (! failureMessages_55.length) {
|
|
187
|
+
vGlobalConsole__47_56.log(strCat_57(testResult_54.key, ": Passed"));
|
|
194
188
|
} else {
|
|
195
|
-
function
|
|
196
|
-
return
|
|
189
|
+
function fn_58(it_59) {
|
|
190
|
+
return it_59;
|
|
197
191
|
}
|
|
198
|
-
const
|
|
199
|
-
|
|
192
|
+
const message_60 = listJoin_24(failureMessages_55, ", ", fn_58);
|
|
193
|
+
vGlobalConsole__47_56.log(strCat_57(testResult_54.key, ": Failed ", message_60));
|
|
200
194
|
}
|
|
201
|
-
|
|
195
|
+
i_51 = i_51 + 1;
|
|
202
196
|
} else {
|
|
203
|
-
|
|
204
|
-
break
|
|
197
|
+
return_48 = void 0;
|
|
198
|
+
break s__1248_52;
|
|
205
199
|
}
|
|
206
200
|
}
|
|
207
|
-
throw
|
|
201
|
+
throw Error();
|
|
208
202
|
}
|
|
209
|
-
return
|
|
203
|
+
return return_48;
|
|
210
204
|
};
|
|
211
|
-
/** @param {Array<
|
|
212
|
-
export function runTestCases(
|
|
213
|
-
reportTestResults(processTestCases(
|
|
205
|
+
/** @param {Array<Pair_46<string, (arg0: Test) => void>>} testCases_61 */
|
|
206
|
+
export function runTestCases(testCases_61) {
|
|
207
|
+
reportTestResults(processTestCases(testCases_61));
|
|
214
208
|
return;
|
|
215
209
|
};
|
|
216
210
|
/**
|
|
217
|
-
* @param {(arg0: Test) => void}
|
|
211
|
+
* @param {(arg0: Test) => void} testFun_62
|
|
218
212
|
* @returns {void}
|
|
219
213
|
*/
|
|
220
|
-
export function runTest(
|
|
221
|
-
let
|
|
222
|
-
const
|
|
214
|
+
export function runTest(testFun_62) {
|
|
215
|
+
let return_63;
|
|
216
|
+
const test_64 = new Test();
|
|
223
217
|
{
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
218
|
+
testFun_62(test_64);
|
|
219
|
+
test_64.softFailToHard();
|
|
220
|
+
return_63 = void 0;
|
|
227
221
|
}
|
|
228
|
-
return
|
|
222
|
+
return return_63;
|
|
229
223
|
};
|
package/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "version": 3, "file": "OUTPUT_ROOT/js/std/testing.js", "sources": [ "std/testing.temper.md" ], "sourcesContent": [ "# Temper test framework\n\n## Test instance\n\nWe currently convert assert and check macro calls into method calls on a `Test`\ninstance.\n\n export class Test {\n\nRecommended default Temper assert is soft, meaning that it records failures for\nreporting but doesn't immediately end test execution on a false value. This lets\nyou check multiple conditions more easily.\n\n @connected(\u0022Test::assert\u0022)\n public assert(success: Boolean, message: fn (): String): Void {\n if (!success) {\n _passing = false;\n _messages.add(message());\n }\n }\n\nTypical hard asserts that end the test on false condition also are available.\n\n @connected(\u0022Test::assertHard\u0022)\n public assertHard(\n success: Boolean,\n message: fn (): String,\n ): Void | Bubble {\n assert(success, message);\n if (!success) {\n // Attempt to distinguish assert fails from others.\n // Sadly, they can still orelse an assert failure, so this isn't\n // flawless.\n _failedOnAssert = true;\n bail();\n }\n }\n\nHarden and end current test on any pending failure if not previously hardened.\nBackends typically insert calls to this if needed, but you can also call it\nmanually at any desired point in your test.\n\n public softFailToHard(): Void | Bubble {\n if (hasUnhandledFail) {\n _failedOnAssert = true;\n bail();\n }\n }\n\nProvide a bailing `Bubble` method here that enables backends to customize\nmessage delivery on failure.\n\n @connected(\u0022Test::bail\u0022)\n bail(): Bubble {\n bubble()\n }\n\nYou can check the current passing state of the test at any time. A test is\ncurrently passing if all soft checks and hard asserts have been succesful.\n\nTODO Does this need to be function call syntax for macro purposes?\n\n @connected(\u0022Test::passing\u0022)\n public get passing(): Boolean { _passing }\n\nMessages access is presented as a function because it likely allocates. Also,\nmessages might be automatically constructed in some cases, so it's possibly\nunwise to depend on their exact formatting.\n\n @connected(\u0022Test::messages\u0022)\n public messages(): List\u003cString\u003e { _messages.toList() }\n\n### Backend helper methods\n\nAvoid using backend helper methods in user code. Their behavior might be\nunreliable on some backends and/or have high risk of changing in future releases\nof Temper.\n\n @connected(\u0022Test::failedOnAssert\u0022)\n public get failedOnAssert(): Boolean { _failedOnAssert }\n\nAdditional helper methods to simplify backend code generation in some contexts.\n\n public get hasUnhandledFail(): Boolean { !(_failedOnAssert || _passing) }\n\nSimple helper to get multiple messages combined for now. We probably want to do\nfancier things in the future, but this can simplify backends for now.\n\n public messagesCombined(): String | Null {\n if (_messages.isEmpty) {\n // Unexpected, but most backends can do something with null.\n null\n } else {\n _messages.join(\u0022, \u0022) { (it);; it }\n }\n }\n\n private var _failedOnAssert: Boolean = false;\n private var _passing: Boolean = true;\n private _messages: ListBuilder\u003cString\u003e = new ListBuilder\u003cString\u003e();\n }\n\n## Interpreter testing support\n\nNOTICE: Don't directly anything in this section. It just exists for the\nimplementation of testing within the interpreter.\n\n export let TestCase = Pair\u003cTestName, TestFun\u003e;\n export let TestFailureMessage = String;\n export let TestFun = fn (Test): Void | Bubble;\n export let TestName = String;\n export let TestResult = Pair\u003cTestName, List\u003cTestFailureMessage\u003e\u003e;\n\n @connected(\u0022::processTestCases\u0022)\n export let processTestCases(testCases: List\u003cTestCase\u003e): List\u003cTestResult\u003e {\n testCases.map { (testCase): TestResult;;\n let { key, value as fun } = testCase;\n let test = new Test();\n // Actually call the test.\n let hadBubble = do {\n fun(test);\n false\n } orelse true;\n // Now get the messages.\n let messages = test.messages();\n let failures: List\u003cTestFailureMessage\u003e = if (test.passing) {\n []\n } else if (hadBubble \u0026\u0026 !test.failedOnAssert) {\n // Despite having 1+ failure messages, we seem to have failed on some\n // Bubble separate from asserts, so add that on.\n let allMessages = messages.toListBuilder();\n allMessages.add(\u0022Bubble\u0022);\n allMessages.toList()\n } else {\n messages\n };\n // Package up with test name.\n new Pair(key, failures)\n }\n }\n\n @connected(\u0022::reportTestResults\u0022)\n export let reportTestResults(testResults: List\u003cTestResult\u003e): Void {\n // TODO Write as junit xml (or tap if we switch to that).\n for (var i = 0; i \u003c testResults.length; i += 1) {\n let testResult = testResults[i];\n let failureMessages = testResult.value;\n if (failureMessages.isEmpty) {\n console.log(\u0022\u0024{testResult.key}: Passed\u0022);\n } else {\n let message = failureMessages.join(\u0022, \u0022) { (it);; it };\n console.log(\u0022\u0024{testResult.key}: Failed \u0024{message}\u0022);\n }\n }\n }\n\n @connected(\u0022::runTestCases\u0022)\n export let runTestCases(testCases: List\u003cTestCase\u003e): Void {\n reportTestResults(processTestCases(testCases));\n }\n\nTODO Is this a better idea than inlining each case? We'd need to generate\n`fun testFunction() { runTest(originalFunctionAsCallback) }` or some such.\n\n export let runTest(testFun: TestFun): Void | Bubble {\n let test = new Test();\n testFun(test);\n test.softFailToHard();\n }\n" ], "names": [ "Test", "success", "message", "_passing", "_messages", "_failedOnAssert", "passing", "failedOnAssert", "hasUnhandledFail", "return", "fn", "it", "TestName", "TestFun", "TestCase", "TestFailureMessage", "TestResult", "processTestCases", "testCases", "testCase", "key", "fun", "test", "hadBubble", "messages", "failures", "allMessages", "reportTestResults", "testResults", "i", "testResult", "failureMessages", "runTestCases", "runTest", "testFun" ], "mappings": "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" }
|
|
1
|
+
{ "version": 3, "file": "js/std/testing.js", "sources": [ "std/testing.temper.md" ], "sourcesContent": [ "# Temper test framework\n\n## Test instance\n\nWe currently convert assert and check macro calls into method calls on a `Test`\ninstance.\n\n export class Test {\n\nRecommended default Temper assert is soft, meaning that it records failures for\nreporting but doesn't immediately end test execution on a false value. This lets\nyou check multiple conditions more easily.\n\n @connected(\u0022Test::assert\u0022)\n public assert(success: Boolean, message: fn (): String): Void {\n if (!success) {\n _passing = false;\n _messages.add(message());\n }\n }\n\nTypical hard asserts that end the test on false condition also are available.\n\n @connected(\u0022Test::assertHard\u0022)\n public assertHard(\n success: Boolean,\n message: fn (): String,\n ): Void | Bubble {\n assert(success, message);\n if (!success) {\n // Attempt to distinguish assert fails from others.\n // Sadly, they can still orelse an assert failure, so this isn't\n // flawless.\n _failedOnAssert = true;\n bail();\n }\n }\n\nHarden and end current test on any pending failure if not previously hardened.\nBackends typically insert calls to this if needed, but you can also call it\nmanually at any desired point in your test.\n\n public softFailToHard(): Void | Bubble {\n if (hasUnhandledFail) {\n _failedOnAssert = true;\n bail();\n }\n }\n\nProvide a bailing `Bubble` method here that enables backends to customize\nmessage delivery on failure.\n\n @connected(\u0022Test::bail\u0022)\n bail(): Bubble {\n bubble()\n }\n\nYou can check the current passing state of the test at any time. A test is\ncurrently passing if all soft checks and hard asserts have been succesful.\n\nTODO Does this need to be function call syntax for macro purposes?\n\n @connected(\u0022Test::passing\u0022)\n public get passing(): Boolean { _passing }\n\nMessages access is presented as a function because it likely allocates. Also,\nmessages might be automatically constructed in some cases, so it's possibly\nunwise to depend on their exact formatting.\n\n @connected(\u0022Test::messages\u0022)\n public messages(): List\u003cString\u003e { _messages.toList() }\n\n### Backend helper methods\n\nAvoid using backend helper methods in user code. Their behavior might be\nunreliable on some backends and/or have high risk of changing in future releases\nof Temper.\n\n @connected(\u0022Test::failedOnAssert\u0022)\n public get failedOnAssert(): Boolean { _failedOnAssert }\n\nAdditional helper methods to simplify backend code generation in some contexts.\n\n public get hasUnhandledFail(): Boolean { !(_failedOnAssert || _passing) }\n\nSimple helper to get multiple messages combined for now. We probably want to do\nfancier things in the future, but this can simplify backends for now.\n\n public messagesCombined(): String | Null {\n if (_messages.isEmpty) {\n // Unexpected, but most backends can do something with null.\n null\n } else {\n _messages.join(\u0022, \u0022) { (it);; it }\n }\n }\n\n private var _failedOnAssert: Boolean = false;\n private var _passing: Boolean = true;\n private _messages: ListBuilder\u003cString\u003e = new ListBuilder\u003cString\u003e();\n }\n\n## Interpreter testing support\n\nNOTICE: Don't directly anything in this section. It just exists for the\nimplementation of testing within the interpreter.\n\n export let TestCase = Pair\u003cTestName, TestFun\u003e;\n export let TestFailureMessage = String;\n export let TestFun = fn (Test): Void | Bubble;\n export let TestName = String;\n export let TestResult = Pair\u003cTestName, List\u003cTestFailureMessage\u003e\u003e;\n\n @connected(\u0022::processTestCases\u0022)\n export let processTestCases(testCases: List\u003cTestCase\u003e): List\u003cTestResult\u003e {\n testCases.map { (testCase): TestResult;;\n let { key, value as fun } = testCase;\n let test = new Test();\n // Actually call the test.\n let hadBubble = do {\n fun(test);\n false\n } orelse true;\n // Now get the messages.\n let messages = test.messages();\n let failures: List\u003cTestFailureMessage\u003e = if (test.passing) {\n []\n } else if (hadBubble \u0026\u0026 !test.failedOnAssert) {\n // Despite having 1+ failure messages, we seem to have failed on some\n // Bubble separate from asserts, so add that on.\n let allMessages = messages.toListBuilder();\n allMessages.add(\u0022Bubble\u0022);\n allMessages.toList()\n } else {\n messages\n };\n // Package up with test name.\n new Pair(key, failures)\n }\n }\n\n @connected(\u0022::reportTestResults\u0022)\n export let reportTestResults(testResults: List\u003cTestResult\u003e): Void {\n // TODO Write as junit xml (or tap if we switch to that).\n for (var i = 0; i \u003c testResults.length; i += 1) {\n let testResult = testResults[i];\n let failureMessages = testResult.value;\n if (failureMessages.isEmpty) {\n console.log(\u0022\u0024{testResult.key}: Passed\u0022);\n } else {\n let message = failureMessages.join(\u0022, \u0022) { (it);; it };\n console.log(\u0022\u0024{testResult.key}: Failed \u0024{message}\u0022);\n }\n }\n }\n\n @connected(\u0022::runTestCases\u0022)\n export let runTestCases(testCases: List\u003cTestCase\u003e): Void {\n reportTestResults(processTestCases(testCases));\n }\n\nTODO Is this a better idea than inlining each case? We'd need to generate\n`fun testFunction() { runTest(originalFunctionAsCallback) }` or some such.\n\n export let runTest(testFun: TestFun): Void | Bubble {\n let test = new Test();\n testFun(test);\n test.softFailToHard();\n }\n" ], "names": [ "Test", "success", "message", "_passing", "_messages", "_failedOnAssert", "return", "fn", "it", "TestName", "TestFun", "TestCase", "TestFailureMessage", "TestResult", "processTestCases", "testCases", "testCase", "key", "fun", "test", "hadBubble", "messages", "failures", "allMessages", "reportTestResults", "testResults", "i", "testResult", "failureMessages", "runTestCases", "runTest", "testFun" ], "mappings": "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" }
|
package/config.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/** @type {string} */
|
|
2
|
-
export const name = "std";
|
|
3
|
-
/** @type {string} */
|
|
4
|
-
export const version = "0.0.6";
|
|
5
|
-
/** @type {string} */
|
|
6
|
-
export const authors = "Temper Contributors";
|
|
7
|
-
/** @type {string} */
|
|
8
|
-
export const description = "Optional support library provided with Temper";
|
|
9
|
-
/** @type {string} */
|
|
10
|
-
export const homepage = "https://temperlang.dev/";
|
|
11
|
-
/** @type {string} */
|
|
12
|
-
export const license = "Apache-2.0";
|
|
13
|
-
/** @type {string} */
|
|
14
|
-
export const repository = "https://github.com/temperlang/temper";
|
|
15
|
-
/** @type {string} */
|
|
16
|
-
export const pyName = "temper-std";
|
|
17
|
-
/** @type {string} */
|
|
18
|
-
export const javaGroup = "dev.temperlang";
|
|
19
|
-
/** @type {string} */
|
|
20
|
-
export const javaArtifact = "temper-std";
|
|
21
|
-
/** @type {string} */
|
|
22
|
-
export const javaPackage = "temper.std";
|
|
23
|
-
/** @type {string} */
|
|
24
|
-
export const javaDependencies = "org.junit.jupiter:junit-jupiter:5.9.2";
|
|
25
|
-
/** @type {string} */
|
|
26
|
-
export const jsName = "@temperlang/std";
|
package/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{ "version": 3, "file": "OUTPUT_ROOT/js/std/config.js", "sources": [ "std/config.temper.md" ], "sourcesContent": [ "# Temper Standard Library\n\nThis library holds code that we distribute with Temper but which can be broken\nout from core builtins and also implemented primarily in the Temper language.\n\n export let name = \u0022std\u0022;\n export let version = \u00220.0.6\u0022;\n\n## Metadata\n\n export let authors = \u0022Temper Contributors\u0022;\n export let description = \u0022Optional support library provided with Temper\u0022;\n export let homepage = \u0022https://temperlang.dev/\u0022;\n export let license = \u0022Apache-2.0\u0022;\n export let repository = \u0022https://github.com/temperlang/temper\u0022;\n\n## Imports\n\nWe might break these out into separate libraries in the future.\n\n import(\u0022./regex.temper.md\u0022);\n import(\u0022./testing.temper.md\u0022);\n import(\u0022./temporal.temper.md\u0022);\n\n## Python\n\nWe use the name below on [pypi][std-on-pypi].\n\n export let pyName = \u0022temper-std\u0022;\n\n## Java\n\nWe've chosen to use `temper` as a package prefix for official Temper packages,\nbut to conform to Maven standards, we use a reverse owned domain name for the\ngroup ID on [Maven][std-on-maven].\n\n export let javaGroup = \u0022dev.temperlang\u0022;\n export let javaArtifact = \u0022temper-std\u0022;\n export let javaPackage = \u0022temper.std\u0022;\n\nAnd as long as the `testing` module is part of `std`, we need junit as a core\ndependency of `std`, so its internals can use it. For now, usage is done via\nspecialized connected methods.\n\n export let javaDependencies = \u0022org.junit.jupiter:junit-jupiter:5.9.2\u0022;\n\n## JS\n\nWe use the name below on [npm][std-on-npm].\n\n export let jsName = \u0022@temperlang/std\u0022;\n\n\n[std-on-pypi]: https://pypi.org/project/temper-std/\n[std-on-maven]: https://central.sonatype.com/artifact/dev.temperlang/temper-std/\n[std-on-npm]: https://www.npmjs.com/package/@temperlang/std\n" ], "names": [ "name", "version", "authors", "description", "homepage", "license", "repository", "pyName", "javaGroup", "javaArtifact", "javaPackage", "javaDependencies", "jsName" ], "mappings": "AAKe;AAAI,MAAA,AAAR,MAAI,CAAAA,IAAI,EAAG,MAAK;AACZ;AAAO,MAAA,AAAX,MAAI,CAAAC,OAAO,EAAG,QAAO;AAIjB;AAAO,MAAA,AAAX,MAAI,CAAAC,OAAO,EAAG,sBAAqB;AAC/B;AAAW,MAAA,AAAf,MAAI,CAAAC,WAAW,EAAG,gDAA+C;AAC7D;AAAQ,MAAA,AAAZ,MAAI,CAAAC,QAAQ,EAAG,0BAAyB;AACpC;AAAO,MAAA,AAAX,MAAI,CAAAC,OAAO,EAAG,aAAY;AACtB;AAAU,MAAA,AAAd,MAAI,CAAAC,UAAU,EAAG,uCAAsC;AAcnD;AAAM,MAAA,AAAV,MAAI,CAAAC,MAAM,EAAG,aAAY;AAQrB;AAAS,MAAA,AAAb,MAAI,CAAAC,SAAS,EAAG,iBAAgB;AAC5B;AAAY,MAAA,AAAhB,MAAI,CAAAC,YAAY,EAAG,aAAY;AAC3B;AAAW,MAAA,AAAf,MAAI,CAAAC,WAAW,EAAG,aAAY;AAM1B;AAAgB,MAAA,AAApB,MAAI,CAAAC,gBAAgB,EAAG,wCAAuC;AAM1D;AAAM,MAAA,AAAV,MAAI,CAAAC,MAAM,EAAG,kBAAiB" }
|
package/regex__preface.js
DELETED
|
File without changes
|
package/regex__preface.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{ "version": 3, "file": "OUTPUT_ROOT/js/std/regex__preface.js", "sources": [], "names": [], "mappings": "" }
|
package/temporal__preface.js
DELETED
|
File without changes
|
package/temporal__preface.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{ "version": 3, "file": "OUTPUT_ROOT/js/std/temporal__preface.js", "sources": [], "names": [], "mappings": "" }
|
package/testing__preface.js
DELETED
|
File without changes
|
package/testing__preface.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{ "version": 3, "file": "OUTPUT_ROOT/js/std/testing__preface.js", "sources": [], "names": [], "mappings": "" }
|