Skip to content

Commit 868f074

Browse files
authored
Allow to get messages from test UIs. (#79)
1 parent 6c04a88 commit 868f074

File tree

2 files changed

+141
-138
lines changed

2 files changed

+141
-138
lines changed

src/test/test.toit

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,35 @@ main:
4343

4444
class TestAbort:
4545

46-
interface TestPrinter:
46+
interface TestPrinter extends Printer:
4747
set-test-ui_ test-ui/TestUi?
4848

4949
class TestHumanPrinter extends HumanPrinter implements TestPrinter:
5050
test-ui_/TestUi? := null
5151

5252
print_ str/string:
5353
if not test-ui_.quiet_: super str
54-
test-ui_.stdout += "$str\n"
54+
test-ui_.stdout-messages.add "$str\n"
55+
56+
set-test-ui_ test-ui/TestUi:
57+
test-ui_ = test-ui
58+
59+
class TestPlainPrinter extends PlainPrinter implements TestPrinter:
60+
test-ui_/TestUi? := null
61+
needs-structured_/bool
62+
63+
constructor --needs-structured/bool:
64+
needs-structured_ = needs-structured
65+
66+
needs-structured --kind/int -> bool:
67+
return needs-structured_
68+
69+
print_ str/string:
70+
if not test-ui_.quiet_: super str
71+
test-ui_.stdout-messages.add "$str\n"
72+
73+
emit-structured --kind/int data:
74+
test-ui_.stdout-messages.add (json.stringify data)
5575

5676
set-test-ui_ test-ui/TestUi:
5777
test-ui_ = test-ui
@@ -61,32 +81,53 @@ class TestJsonPrinter extends JsonPrinter implements TestPrinter:
6181

6282
print_ str/string:
6383
if not test-ui_.quiet_: super str
64-
test-ui_.stderr += "$str\n"
84+
test-ui_.stderr-messages.add "$str\n"
6585

6686
emit-structured --kind/int data:
67-
test-ui_.stdout += json.stringify data
87+
test-ui_.stdout-messages.add (json.stringify data)
6888

6989
set-test-ui_ test-ui/TestUi:
7090
test-ui_ = test-ui
7191

7292
class TestUi extends Ui:
73-
stdout/string := ""
74-
stderr/string := ""
93+
stdout-messages/List ::= []
94+
stderr-messages/List ::= []
7595
quiet_/bool
76-
json_/bool
7796

7897
constructor --level/int=Ui.NORMAL-LEVEL --quiet/bool=true --json/bool=false:
79-
quiet_ = quiet
80-
json_ = json
8198
printer := create-printer_ --json=json
99+
return TestUi --printer=printer --level=level --quiet=quiet
100+
101+
constructor --level/int=Ui.NORMAL-LEVEL --quiet/bool=true --printer/TestPrinter:
102+
quiet_ = quiet
82103
super --printer=printer --level=level
83104
(printer as TestPrinter).set-test-ui_ this
84105
test-ui_ = this
85106

86-
static create-printer_ --json/bool -> Printer:
107+
static create-printer_ --json/bool -> TestPrinter:
87108
if json: return TestJsonPrinter
88109
return TestHumanPrinter
89110

111+
stdout -> string:
112+
return stdout-messages.join ""
113+
114+
stdout= str/string:
115+
stdout-messages.clear
116+
if str != "":
117+
stdout-messages.add str
118+
119+
stderr -> string:
120+
return stderr-messages.join ""
121+
122+
stderr= str/string:
123+
stderr-messages.clear
124+
if str != "":
125+
stderr-messages.add str
126+
127+
reset -> none:
128+
stdout-messages.clear
129+
stderr-messages.clear
130+
90131
abort:
91132
throw TestAbort
92133

0 commit comments

Comments
 (0)