1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
.\" -*- mode: troff; coding: utf-8 -*-
.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
.ie n \{\
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\" ========================================================================
.\"
.IX Title "Test2::API::Stack 3pm"
.TH Test2::API::Stack 3pm 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH NAME
Test2::API::Stack \- Object to manage a stack of Test2::Hub
instances.
.SH "***INTERNALS NOTE***"
.IX Header "***INTERNALS NOTE***"
\&\fBThe internals of this package are subject to change at any time!\fR The public
methods provided will not change in backwards incompatible ways, but the
underlying implementation details might. \fBDo not break encapsulation here!\fR
.SH DESCRIPTION
.IX Header "DESCRIPTION"
This module is used to represent and manage a stack of Test2::Hub
objects. Hubs are usually in a stack so that you can push a new hub into place
that can intercept and handle events differently than the primary hub.
.SH SYNOPSIS
.IX Header "SYNOPSIS"
.Vb 2
\& my $stack = Test2::API::Stack\->new;
\& my $hub = $stack\->top;
.Ve
.SH METHODS
.IX Header "METHODS"
.ie n .IP "$stack = Test2::API::Stack\->\fBnew()\fR" 4
.el .IP "\f(CW$stack\fR = Test2::API::Stack\->\fBnew()\fR" 4
.IX Item "$stack = Test2::API::Stack->new()"
This will create a new empty stack instance. All arguments are ignored.
.ie n .IP "$hub = $stack\->\fBnew_hub()\fR" 4
.el .IP "\f(CW$hub\fR = \f(CW$stack\fR\->\fBnew_hub()\fR" 4
.IX Item "$hub = $stack->new_hub()"
.PD 0
.ie n .IP "$hub = $stack\->new_hub(%params)" 4
.el .IP "\f(CW$hub\fR = \f(CW$stack\fR\->new_hub(%params)" 4
.IX Item "$hub = $stack->new_hub(%params)"
.ie n .IP "$hub = $stack\->new_hub(%params, class => $class)" 4
.el .IP "\f(CW$hub\fR = \f(CW$stack\fR\->new_hub(%params, class => \f(CW$class\fR)" 4
.IX Item "$hub = $stack->new_hub(%params, class => $class)"
.PD
This will generate a new hub and push it to the top of the stack. Optionally
you can provide arguments that will be passed into the constructor for the
Test2::Hub object.
.Sp
If you specify the \f(CW\*(C`\*(Aqclass\*(Aq => $class\*(C'\fR argument, the new hub will be an
instance of the specified class.
.Sp
Unless your parameters specify \f(CW\*(Aqformatter\*(Aq\fR or \f(CW\*(Aqipc\*(Aq\fR arguments, the
formatter and IPC instance will be inherited from the current top hub. You can
set the parameters to \f(CW\*(C`undef\*(C'\fR to avoid having a formatter or IPC instance.
.Sp
If there is no top hub, and you do not ask to leave IPC and formatter undef,
then a new formatter will be created, and the IPC instance from
Test2::API will be used.
.ie n .IP "$hub = $stack\->\fBtop()\fR" 4
.el .IP "\f(CW$hub\fR = \f(CW$stack\fR\->\fBtop()\fR" 4
.IX Item "$hub = $stack->top()"
This will return the top hub from the stack. If there is no top hub yet this
will create it.
.ie n .IP "$hub = $stack\->\fBpeek()\fR" 4
.el .IP "\f(CW$hub\fR = \f(CW$stack\fR\->\fBpeek()\fR" 4
.IX Item "$hub = $stack->peek()"
This will return the top hub from the stack. If there is no top hub yet this
will return undef.
.ie n .IP $stack\->cull 4
.el .IP \f(CW$stack\fR\->cull 4
.IX Item "$stack->cull"
This will call \f(CW\*(C`$hub\->cull\*(C'\fR on all hubs in the stack.
.ie n .IP "@hubs = $stack\->all" 4
.el .IP "\f(CW@hubs\fR = \f(CW$stack\fR\->all" 4
.IX Item "@hubs = $stack->all"
This will return all the hubs in the stack as a list.
.ie n .IP $stack\->clear 4
.el .IP \f(CW$stack\fR\->clear 4
.IX Item "$stack->clear"
This will completely remove all hubs from the stack. Normally you do not want
to do this, but there are a few valid reasons for it.
.ie n .IP $stack\->push($hub) 4
.el .IP \f(CW$stack\fR\->push($hub) 4
.IX Item "$stack->push($hub)"
This will push the new hub onto the stack.
.ie n .IP $stack\->pop($hub) 4
.el .IP \f(CW$stack\fR\->pop($hub) 4
.IX Item "$stack->pop($hub)"
This will pop a hub from the stack, if the hub at the top of the stack does not
match the hub you expect (passed in as an argument) it will throw an exception.
.SH SOURCE
.IX Header "SOURCE"
The source code repository for Test2 can be found at
\&\fIhttp://github.com/Test\-More/test\-more/\fR.
.SH MAINTAINERS
.IX Header "MAINTAINERS"
.IP "Chad Granum <exodist@cpan.org>" 4
.IX Item "Chad Granum <exodist@cpan.org>"
.SH AUTHORS
.IX Header "AUTHORS"
.PD 0
.IP "Chad Granum <exodist@cpan.org>" 4
.IX Item "Chad Granum <exodist@cpan.org>"
.PD
.SH COPYRIGHT
.IX Header "COPYRIGHT"
Copyright 2020 Chad Granum <exodist@cpan.org>.
.PP
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
.PP
See \fIhttp://dev.perl.org/licenses/\fR
|