File Coverage

blib/lib/Cucumber/Messages.pm
Criterion Covered Total %
statement 390 450 86.6
branch n/a
condition n/a
subroutine 130 190 68.4
pod n/a
total 520 640 81.2


line stmt bran cond sub pod time code
1             package Cucumber::Messages;
2             $Cucumber::Messages::VERSION = '32.2.0';
3             # DO NOT CHANGE THIS FILE!!
4              
5             # The code was auto-generated by this script:
6             # https://github.com/cucumber/messages/blob/main/codegen/codegen.rb
7              
8             =head1 NAME
9              
10             Cucumber::Messages - Library of classes to encapsulate Cucumber messages
11              
12             =head1 SYNOPSIS
13              
14             use Cucumber::Messages;
15              
16             my $loc = Cucumber::Messages::Location->new(
17             line => 12, column => 26
18             );
19             my $loc_json = $loc->to_json;
20              
21             my $envelope = Cucumber::Messages::Envelope->from_json($serialized_envelope);
22              
23             =head1 DESCRIPTION
24              
25             L
26             define the central protocol in the Cucumber ecosystem by which the various
27             components communicate. Messages are serialized to NDJSON.
28              
29             This library provides both serialization/deserialization to/from NDJSON as
30             well as the in-memory representation of the messages for Perl applications.
31              
32             Each serialized message should be wrapped in a C
33             and can thereby be deserialized by calling the C class message
34             with the serialized representation as its argument, like shown in the SYNOPSIS.
35              
36             =cut
37              
38 3     3   505571 use strict;
  3         9  
  3         156  
39 3     3   49 use warnings;
  3         8  
  3         185  
40              
41 3     3   1136 use Cucumber::Messages::Message;
  3         8  
  3         219  
42              
43             =head1 MESSAGE CLASSES
44              
45             =cut
46              
47              
48              
49             package Cucumber::Messages::Attachment {
50             $Cucumber::Messages::Attachment::VERSION = '32.2.0';
51             =head2 Cucumber::Messages::Attachment
52              
53             =head3 DESCRIPTION
54              
55             Represents the Attachment message in Cucumber's
56             L.
57              
58             Attachments (parse errors, execution errors, screenshots, links...)
59              
60             An attachment represents any kind of data associated with a line in a
61             [Source](#io.cucumber.messages.Source) file. It can be used for:
62              
63             * Syntax errors during parse time
64             * Screenshots captured and attached during execution
65             * Logs captured and attached during execution
66              
67             It is not to be used for runtime errors raised/thrown during execution. This
68             is captured in `TestResult`.
69              
70             =head3 ATTRIBUTES
71              
72             =cut
73              
74 3     3   24 use Moo;
  3         7  
  3         18  
75             extends 'Cucumber::Messages::Message';
76              
77 3     3   1353 use Scalar::Util qw( blessed );
  3         17  
  3         604  
78              
79             my %types = (
80             body => 'string',
81             content_encoding => '',
82             file_name => 'string',
83             media_type => 'string',
84             source => 'Cucumber::Messages::Source',
85             test_case_started_id => 'string',
86             test_step_id => 'string',
87             url => 'string',
88             test_run_started_id => 'string',
89             test_run_hook_started_id => 'string',
90             timestamp => 'Cucumber::Messages::Timestamp',
91             );
92              
93             # This is a work-around for the fact that Moo doesn't have introspection
94             # and Perl doesn't have boolean values...
95             sub _types {
96 0     0     return \%types;
97             }
98              
99              
100              
101             =head4 body
102              
103             The body of the attachment. If `contentEncoding` is `IDENTITY`, the attachment
104             is simply the string. If it's `BASE64`, the string should be Base64 decoded to
105             obtain the attachment.
106             =cut
107              
108             has body =>
109             (is => 'ro',
110             required => 1,
111             default => sub { '' },
112             );
113              
114              
115             =head4 content_encoding
116              
117             Whether to interpret `body` "as-is" (IDENTITY) or if it needs to be Base64-decoded (BASE64).
118              
119             Content encoding is *not* determined by the media type, but rather by the type
120             of the object being attached:
121              
122             - string: IDENTITY
123             - byte array: BASE64
124             - stream: BASE64
125              
126             Available constants for valid values of this field:
127              
128             =over
129              
130             =item * CONTENTENCODING_IDENTITY
131              
132             =item * CONTENTENCODING_BASE64
133              
134             =back
135              
136             =cut
137              
138              
139             use constant {
140 3         1130 CONTENTENCODING_IDENTITY => 'IDENTITY',
141             CONTENTENCODING_BASE64 => 'BASE64',
142 3     3   25 };
  3         7  
143              
144             has content_encoding =>
145             (is => 'ro',
146             required => 1,
147             default => sub { CONTENTENCODING_IDENTITY },
148             );
149              
150              
151             =head4 file_name
152              
153             Suggested file name of the attachment. (Provided by the user as an argument to `attach`)
154             =cut
155              
156             has file_name =>
157             (is => 'ro',
158             );
159              
160              
161             =head4 media_type
162              
163             The media type of the data. This can be any valid
164             [IANA Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml)
165             as well as Cucumber-specific media types such as `text/x.cucumber.gherkin+plain`
166             and `text/x.cucumber.stacktrace+plain`
167             =cut
168              
169             has media_type =>
170             (is => 'ro',
171             required => 1,
172             default => sub { '' },
173             );
174              
175              
176             =head4 source
177              
178              
179             =cut
180              
181             has source =>
182             (is => 'ro',
183             );
184              
185              
186             =head4 test_case_started_id
187              
188             The identifier of the test case attempt if the attachment was created during the execution of a test step
189             =cut
190              
191             has test_case_started_id =>
192             (is => 'ro',
193             );
194              
195              
196             =head4 test_step_id
197              
198             The identifier of the test step if the attachment was created during the execution of a test step
199             =cut
200              
201             has test_step_id =>
202             (is => 'ro',
203             );
204              
205              
206             =head4 url
207              
208             A URL where the attachment can be retrieved. This field should not be set by Cucumber.
209             It should be set by a program that reads a message stream and does the following for
210             each Attachment message:
211              
212             - Writes the body (after base64 decoding if necessary) to a new file.
213             - Sets `body` and `contentEncoding` to `null`
214             - Writes out the new attachment message
215              
216             This will result in a smaller message stream, which can improve performance and
217             reduce bandwidth of message consumers. It also makes it easier to process and download attachments
218             separately from reports.
219              
220             Deprecated; use ExternalAttachment instead.
221             =cut
222              
223             has url =>
224             (is => 'ro',
225             );
226              
227              
228             =head4 test_run_started_id
229              
230             Not used; implementers should instead populate `testRunHookStartedId` if an attachment was created during the execution of a test run hook
231             =cut
232              
233             has test_run_started_id =>
234             (is => 'ro',
235             );
236              
237              
238             =head4 test_run_hook_started_id
239              
240             The identifier of the test run hook execution if the attachment was created during the execution of a test run hook
241             =cut
242              
243             has test_run_hook_started_id =>
244             (is => 'ro',
245             );
246              
247              
248             =head4 timestamp
249              
250             When the attachment was created
251             =cut
252              
253             has timestamp =>
254             (is => 'ro',
255             );
256              
257              
258             }
259              
260             package Cucumber::Messages::Duration {
261             $Cucumber::Messages::Duration::VERSION = '32.2.0';
262             =head2 Cucumber::Messages::Duration
263              
264             =head3 DESCRIPTION
265              
266             Represents the Duration message in Cucumber's
267             L.
268              
269             The structure is pretty close of the Timestamp one. For clarity, a second type
270             of message is used.
271              
272             =head3 ATTRIBUTES
273              
274             =cut
275              
276 3     3   25 use Moo;
  3         6  
  3         29  
277             extends 'Cucumber::Messages::Message';
278              
279 3     3   1402 use Scalar::Util qw( blessed );
  3         19  
  3         882  
280              
281             my %types = (
282             seconds => 'number',
283             nanos => 'number',
284             );
285              
286             # This is a work-around for the fact that Moo doesn't have introspection
287             # and Perl doesn't have boolean values...
288             sub _types {
289 0     0     return \%types;
290             }
291              
292              
293              
294             =head4 seconds
295              
296              
297             =cut
298              
299             has seconds =>
300             (is => 'ro',
301             required => 1,
302             default => sub { 0 },
303             );
304              
305              
306             =head4 nanos
307              
308             Non-negative fractions of a second at nanosecond resolution. Negative
309             second values with fractions must still have non-negative nanos values
310             that count forward in time. Must be from 0 to 999,999,999
311             inclusive.
312             =cut
313              
314             has nanos =>
315             (is => 'ro',
316             required => 1,
317             default => sub { 0 },
318             );
319              
320              
321             }
322              
323             package Cucumber::Messages::Envelope {
324             $Cucumber::Messages::Envelope::VERSION = '32.2.0';
325             =head2 Cucumber::Messages::Envelope
326              
327             =head3 DESCRIPTION
328              
329             Represents the Envelope message in Cucumber's
330             L.
331              
332              
333              
334             =head3 ATTRIBUTES
335              
336             =cut
337              
338 3     3   25 use Moo;
  3         11  
  3         26  
339             extends 'Cucumber::Messages::Message';
340              
341 3     3   1431 use Scalar::Util qw( blessed );
  3         34  
  3         1551  
342              
343             my %types = (
344             attachment => 'Cucumber::Messages::Attachment',
345             external_attachment => 'Cucumber::Messages::ExternalAttachment',
346             gherkin_document => 'Cucumber::Messages::GherkinDocument',
347             hook => 'Cucumber::Messages::Hook',
348             meta => 'Cucumber::Messages::Meta',
349             parameter_type => 'Cucumber::Messages::ParameterType',
350             parse_error => 'Cucumber::Messages::ParseError',
351             pickle => 'Cucumber::Messages::Pickle',
352             suggestion => 'Cucumber::Messages::Suggestion',
353             source => 'Cucumber::Messages::Source',
354             step_definition => 'Cucumber::Messages::StepDefinition',
355             test_case => 'Cucumber::Messages::TestCase',
356             test_case_finished => 'Cucumber::Messages::TestCaseFinished',
357             test_case_started => 'Cucumber::Messages::TestCaseStarted',
358             test_run_finished => 'Cucumber::Messages::TestRunFinished',
359             test_run_started => 'Cucumber::Messages::TestRunStarted',
360             test_step_finished => 'Cucumber::Messages::TestStepFinished',
361             test_step_started => 'Cucumber::Messages::TestStepStarted',
362             test_run_hook_started => 'Cucumber::Messages::TestRunHookStarted',
363             test_run_hook_finished => 'Cucumber::Messages::TestRunHookFinished',
364             undefined_parameter_type => 'Cucumber::Messages::UndefinedParameterType',
365             );
366              
367             # This is a work-around for the fact that Moo doesn't have introspection
368             # and Perl doesn't have boolean values...
369             sub _types {
370 0     0     return \%types;
371             }
372              
373              
374              
375             =head4 attachment
376              
377              
378             =cut
379              
380             has attachment =>
381             (is => 'ro',
382             );
383              
384              
385             =head4 external_attachment
386              
387              
388             =cut
389              
390             has external_attachment =>
391             (is => 'ro',
392             );
393              
394              
395             =head4 gherkin_document
396              
397              
398             =cut
399              
400             has gherkin_document =>
401             (is => 'ro',
402             );
403              
404              
405             =head4 hook
406              
407              
408             =cut
409              
410             has hook =>
411             (is => 'ro',
412             );
413              
414              
415             =head4 meta
416              
417              
418             =cut
419              
420             has meta =>
421             (is => 'ro',
422             );
423              
424              
425             =head4 parameter_type
426              
427              
428             =cut
429              
430             has parameter_type =>
431             (is => 'ro',
432             );
433              
434              
435             =head4 parse_error
436              
437              
438             =cut
439              
440             has parse_error =>
441             (is => 'ro',
442             );
443              
444              
445             =head4 pickle
446              
447              
448             =cut
449              
450             has pickle =>
451             (is => 'ro',
452             );
453              
454              
455             =head4 suggestion
456              
457              
458             =cut
459              
460             has suggestion =>
461             (is => 'ro',
462             );
463              
464              
465             =head4 source
466              
467              
468             =cut
469              
470             has source =>
471             (is => 'ro',
472             );
473              
474              
475             =head4 step_definition
476              
477              
478             =cut
479              
480             has step_definition =>
481             (is => 'ro',
482             );
483              
484              
485             =head4 test_case
486              
487              
488             =cut
489              
490             has test_case =>
491             (is => 'ro',
492             );
493              
494              
495             =head4 test_case_finished
496              
497              
498             =cut
499              
500             has test_case_finished =>
501             (is => 'ro',
502             );
503              
504              
505             =head4 test_case_started
506              
507              
508             =cut
509              
510             has test_case_started =>
511             (is => 'ro',
512             );
513              
514              
515             =head4 test_run_finished
516              
517              
518             =cut
519              
520             has test_run_finished =>
521             (is => 'ro',
522             );
523              
524              
525             =head4 test_run_started
526              
527              
528             =cut
529              
530             has test_run_started =>
531             (is => 'ro',
532             );
533              
534              
535             =head4 test_step_finished
536              
537              
538             =cut
539              
540             has test_step_finished =>
541             (is => 'ro',
542             );
543              
544              
545             =head4 test_step_started
546              
547              
548             =cut
549              
550             has test_step_started =>
551             (is => 'ro',
552             );
553              
554              
555             =head4 test_run_hook_started
556              
557              
558             =cut
559              
560             has test_run_hook_started =>
561             (is => 'ro',
562             );
563              
564              
565             =head4 test_run_hook_finished
566              
567              
568             =cut
569              
570             has test_run_hook_finished =>
571             (is => 'ro',
572             );
573              
574              
575             =head4 undefined_parameter_type
576              
577              
578             =cut
579              
580             has undefined_parameter_type =>
581             (is => 'ro',
582             );
583              
584              
585             }
586              
587             package Cucumber::Messages::Exception {
588             $Cucumber::Messages::Exception::VERSION = '32.2.0';
589             =head2 Cucumber::Messages::Exception
590              
591             =head3 DESCRIPTION
592              
593             Represents the Exception message in Cucumber's
594             L.
595              
596             A simplified representation of an exception
597              
598             =head3 ATTRIBUTES
599              
600             =cut
601              
602 3     3   27 use Moo;
  3         6  
  3         16  
603             extends 'Cucumber::Messages::Message';
604              
605 3     3   1405 use Scalar::Util qw( blessed );
  3         7  
  3         697  
606              
607             my %types = (
608             type => 'string',
609             message => 'string',
610             stack_trace => 'string',
611             );
612              
613             # This is a work-around for the fact that Moo doesn't have introspection
614             # and Perl doesn't have boolean values...
615             sub _types {
616 0     0     return \%types;
617             }
618              
619              
620              
621             =head4 type
622              
623             The type of the exception that caused this result. E.g. "Error" or "org.opentest4j.AssertionFailedError"
624             =cut
625              
626             has type =>
627             (is => 'ro',
628             required => 1,
629             default => sub { '' },
630             );
631              
632              
633             =head4 message
634              
635             The message of exception that caused this result. E.g. expected: "a" but was: "b"
636             =cut
637              
638             has message =>
639             (is => 'ro',
640             );
641              
642              
643             =head4 stack_trace
644              
645             The stringified stack trace of the exception that caused this result
646             =cut
647              
648             has stack_trace =>
649             (is => 'ro',
650             );
651              
652              
653             }
654              
655             package Cucumber::Messages::ExternalAttachment {
656             $Cucumber::Messages::ExternalAttachment::VERSION = '32.2.0';
657             =head2 Cucumber::Messages::ExternalAttachment
658              
659             =head3 DESCRIPTION
660              
661             Represents the ExternalAttachment message in Cucumber's
662             L.
663              
664             Represents an attachment that is stored externally rather than embedded in the message stream.
665              
666             This message type is used for large attachments (e.g., video files) that are already
667             on the filesystem and should not be loaded into memory. Instead of embedding the content,
668             only a URL reference is stored.
669              
670             A formatter or other consumer of messages may replace an Attachment with an ExternalAttachment if it makes sense to do so.
671              
672             =head3 ATTRIBUTES
673              
674             =cut
675              
676 3     3   23 use Moo;
  3         6  
  3         16  
677             extends 'Cucumber::Messages::Message';
678              
679 3     3   1371 use Scalar::Util qw( blessed );
  3         6  
  3         857  
680              
681             my %types = (
682             url => 'string',
683             media_type => 'string',
684             test_case_started_id => 'string',
685             test_step_id => 'string',
686             test_run_hook_started_id => 'string',
687             timestamp => 'Cucumber::Messages::Timestamp',
688             );
689              
690             # This is a work-around for the fact that Moo doesn't have introspection
691             # and Perl doesn't have boolean values...
692             sub _types {
693 0     0     return \%types;
694             }
695              
696              
697              
698             =head4 url
699              
700             A URL where the attachment can be retrieved. This could be a file:// URL for
701             local filesystem paths, or an http(s):// URL for remote resources.
702             =cut
703              
704             has url =>
705             (is => 'ro',
706             required => 1,
707             default => sub { '' },
708             );
709              
710              
711             =head4 media_type
712              
713             The media type of the data. This can be any valid
714             [IANA Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml)
715             as well as Cucumber-specific media types such as `text/x.cucumber.gherkin+plain`
716             and `text/x.cucumber.stacktrace+plain`
717             =cut
718              
719             has media_type =>
720             (is => 'ro',
721             required => 1,
722             default => sub { '' },
723             );
724              
725              
726             =head4 test_case_started_id
727              
728             The identifier of the test case attempt if the attachment was created during the execution of a test step
729             =cut
730              
731             has test_case_started_id =>
732             (is => 'ro',
733             );
734              
735              
736             =head4 test_step_id
737              
738             The identifier of the test step if the attachment was created during the execution of a test step
739             =cut
740              
741             has test_step_id =>
742             (is => 'ro',
743             );
744              
745              
746             =head4 test_run_hook_started_id
747              
748             The identifier of the test run hook execution if the attachment was created during the execution of a test run hook
749             =cut
750              
751             has test_run_hook_started_id =>
752             (is => 'ro',
753             );
754              
755              
756             =head4 timestamp
757              
758             When the attachment was created
759             =cut
760              
761             has timestamp =>
762             (is => 'ro',
763             );
764              
765              
766             }
767              
768             package Cucumber::Messages::GherkinDocument {
769             $Cucumber::Messages::GherkinDocument::VERSION = '32.2.0';
770             =head2 Cucumber::Messages::GherkinDocument
771              
772             =head3 DESCRIPTION
773              
774             Represents the GherkinDocument message in Cucumber's
775             L.
776              
777             The [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree) of a Gherkin document.
778             Cucumber implementations should *not* depend on `GherkinDocument` or any of its
779             children for execution - use [Pickle](#io.cucumber.messages.Pickle) instead.
780              
781             The only consumers of `GherkinDocument` should only be formatters that produce
782             "rich" output, resembling the original Gherkin document.
783              
784             =head3 ATTRIBUTES
785              
786             =cut
787              
788 3     3   28 use Moo;
  3         7  
  3         25  
789             extends 'Cucumber::Messages::Message';
790              
791 3     3   1430 use Scalar::Util qw( blessed );
  3         18  
  3         766  
792              
793             my %types = (
794             uri => 'string',
795             feature => 'Cucumber::Messages::Feature',
796             comments => '[]Cucumber::Messages::Comment',
797             );
798              
799             # This is a work-around for the fact that Moo doesn't have introspection
800             # and Perl doesn't have boolean values...
801             sub _types {
802 0     0     return \%types;
803             }
804              
805              
806              
807             =head4 uri
808              
809             The [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier)
810             of the source, typically a file path relative to the root directory
811             =cut
812              
813             has uri =>
814             (is => 'ro',
815             );
816              
817              
818             =head4 feature
819              
820              
821             =cut
822              
823             has feature =>
824             (is => 'ro',
825             );
826              
827              
828             =head4 comments
829              
830             All the comments in the Gherkin document
831             =cut
832              
833             has comments =>
834             (is => 'ro',
835             required => 1,
836             default => sub { [] },
837             );
838              
839              
840             }
841              
842             package Cucumber::Messages::Background {
843             $Cucumber::Messages::Background::VERSION = '32.2.0';
844             =head2 Cucumber::Messages::Background
845              
846             =head3 DESCRIPTION
847              
848             Represents the Background message in Cucumber's
849             L.
850              
851              
852              
853             =head3 ATTRIBUTES
854              
855             =cut
856              
857 3     3   25 use Moo;
  3         6  
  3         32  
858             extends 'Cucumber::Messages::Message';
859              
860 3     3   1450 use Scalar::Util qw( blessed );
  3         6  
  3         1181  
861              
862             my %types = (
863             location => 'Cucumber::Messages::Location',
864             keyword => 'string',
865             name => 'string',
866             description => 'string',
867             steps => '[]Cucumber::Messages::Step',
868             id => 'string',
869             );
870              
871             # This is a work-around for the fact that Moo doesn't have introspection
872             # and Perl doesn't have boolean values...
873             sub _types {
874 0     0     return \%types;
875             }
876              
877              
878              
879             =head4 location
880              
881             The location of the `Background` keyword
882             =cut
883              
884             has location =>
885             (is => 'ro',
886             required => 1,
887             default => sub { Cucumber::Messages::Location->new() },
888             );
889              
890              
891             =head4 keyword
892              
893              
894             =cut
895              
896             has keyword =>
897             (is => 'ro',
898             required => 1,
899             default => sub { '' },
900             );
901              
902              
903             =head4 name
904              
905              
906             =cut
907              
908             has name =>
909             (is => 'ro',
910             required => 1,
911             default => sub { '' },
912             );
913              
914              
915             =head4 description
916              
917              
918             =cut
919              
920             has description =>
921             (is => 'ro',
922             required => 1,
923             default => sub { '' },
924             );
925              
926              
927             =head4 steps
928              
929              
930             =cut
931              
932             has steps =>
933             (is => 'ro',
934             required => 1,
935             default => sub { [] },
936             );
937              
938              
939             =head4 id
940              
941              
942             =cut
943              
944             has id =>
945             (is => 'ro',
946             required => 1,
947             default => sub { '' },
948             );
949              
950              
951             }
952              
953             package Cucumber::Messages::Comment {
954             $Cucumber::Messages::Comment::VERSION = '32.2.0';
955             =head2 Cucumber::Messages::Comment
956              
957             =head3 DESCRIPTION
958              
959             Represents the Comment message in Cucumber's
960             L.
961              
962             A comment in a Gherkin document
963              
964             =head3 ATTRIBUTES
965              
966             =cut
967              
968 3     3   27 use Moo;
  3         14  
  3         33  
969             extends 'Cucumber::Messages::Message';
970              
971 3     3   1350 use Scalar::Util qw( blessed );
  3         7  
  3         758  
972              
973             my %types = (
974             location => 'Cucumber::Messages::Location',
975             text => 'string',
976             );
977              
978             # This is a work-around for the fact that Moo doesn't have introspection
979             # and Perl doesn't have boolean values...
980             sub _types {
981 0     0     return \%types;
982             }
983              
984              
985              
986             =head4 location
987              
988             The location of the comment
989             =cut
990              
991             has location =>
992             (is => 'ro',
993             required => 1,
994             default => sub { Cucumber::Messages::Location->new() },
995             );
996              
997              
998             =head4 text
999              
1000             The text of the comment
1001             =cut
1002              
1003             has text =>
1004             (is => 'ro',
1005             required => 1,
1006             default => sub { '' },
1007             );
1008              
1009              
1010             }
1011              
1012             package Cucumber::Messages::DataTable {
1013             $Cucumber::Messages::DataTable::VERSION = '32.2.0';
1014             =head2 Cucumber::Messages::DataTable
1015              
1016             =head3 DESCRIPTION
1017              
1018             Represents the DataTable message in Cucumber's
1019             L.
1020              
1021              
1022              
1023             =head3 ATTRIBUTES
1024              
1025             =cut
1026              
1027 3     3   26 use Moo;
  3         17  
  3         15  
1028             extends 'Cucumber::Messages::Message';
1029              
1030 3     3   1345 use Scalar::Util qw( blessed );
  3         19  
  3         731  
1031              
1032             my %types = (
1033             location => 'Cucumber::Messages::Location',
1034             rows => '[]Cucumber::Messages::TableRow',
1035             );
1036              
1037             # This is a work-around for the fact that Moo doesn't have introspection
1038             # and Perl doesn't have boolean values...
1039             sub _types {
1040 0     0     return \%types;
1041             }
1042              
1043              
1044              
1045             =head4 location
1046              
1047              
1048             =cut
1049              
1050             has location =>
1051             (is => 'ro',
1052             required => 1,
1053             default => sub { Cucumber::Messages::Location->new() },
1054             );
1055              
1056              
1057             =head4 rows
1058              
1059              
1060             =cut
1061              
1062             has rows =>
1063             (is => 'ro',
1064             required => 1,
1065             default => sub { [] },
1066             );
1067              
1068              
1069             }
1070              
1071             package Cucumber::Messages::DocString {
1072             $Cucumber::Messages::DocString::VERSION = '32.2.0';
1073             =head2 Cucumber::Messages::DocString
1074              
1075             =head3 DESCRIPTION
1076              
1077             Represents the DocString message in Cucumber's
1078             L.
1079              
1080              
1081              
1082             =head3 ATTRIBUTES
1083              
1084             =cut
1085              
1086 3     3   24 use Moo;
  3         7  
  3         16  
1087             extends 'Cucumber::Messages::Message';
1088              
1089 3     3   1531 use Scalar::Util qw( blessed );
  3         8  
  3         868  
1090              
1091             my %types = (
1092             location => 'Cucumber::Messages::Location',
1093             media_type => 'string',
1094             content => 'string',
1095             delimiter => 'string',
1096             );
1097              
1098             # This is a work-around for the fact that Moo doesn't have introspection
1099             # and Perl doesn't have boolean values...
1100             sub _types {
1101 0     0     return \%types;
1102             }
1103              
1104              
1105              
1106             =head4 location
1107              
1108              
1109             =cut
1110              
1111             has location =>
1112             (is => 'ro',
1113             required => 1,
1114             default => sub { Cucumber::Messages::Location->new() },
1115             );
1116              
1117              
1118             =head4 media_type
1119              
1120              
1121             =cut
1122              
1123             has media_type =>
1124             (is => 'ro',
1125             );
1126              
1127              
1128             =head4 content
1129              
1130              
1131             =cut
1132              
1133             has content =>
1134             (is => 'ro',
1135             required => 1,
1136             default => sub { '' },
1137             );
1138              
1139              
1140             =head4 delimiter
1141              
1142              
1143             =cut
1144              
1145             has delimiter =>
1146             (is => 'ro',
1147             required => 1,
1148             default => sub { '' },
1149             );
1150              
1151              
1152             }
1153              
1154             package Cucumber::Messages::Examples {
1155             $Cucumber::Messages::Examples::VERSION = '32.2.0';
1156             =head2 Cucumber::Messages::Examples
1157              
1158             =head3 DESCRIPTION
1159              
1160             Represents the Examples message in Cucumber's
1161             L.
1162              
1163              
1164              
1165             =head3 ATTRIBUTES
1166              
1167             =cut
1168              
1169 3     3   27 use Moo;
  3         6  
  3         15  
1170             extends 'Cucumber::Messages::Message';
1171              
1172 3     3   1938 use Scalar::Util qw( blessed );
  3         7  
  3         1138  
1173              
1174             my %types = (
1175             location => 'Cucumber::Messages::Location',
1176             tags => '[]Cucumber::Messages::Tag',
1177             keyword => 'string',
1178             name => 'string',
1179             description => 'string',
1180             table_header => 'Cucumber::Messages::TableRow',
1181             table_body => '[]Cucumber::Messages::TableRow',
1182             id => 'string',
1183             );
1184              
1185             # This is a work-around for the fact that Moo doesn't have introspection
1186             # and Perl doesn't have boolean values...
1187             sub _types {
1188 0     0     return \%types;
1189             }
1190              
1191              
1192              
1193             =head4 location
1194              
1195             The location of the `Examples` keyword
1196             =cut
1197              
1198             has location =>
1199             (is => 'ro',
1200             required => 1,
1201             default => sub { Cucumber::Messages::Location->new() },
1202             );
1203              
1204              
1205             =head4 tags
1206              
1207              
1208             =cut
1209              
1210             has tags =>
1211             (is => 'ro',
1212             required => 1,
1213             default => sub { [] },
1214             );
1215              
1216              
1217             =head4 keyword
1218              
1219              
1220             =cut
1221              
1222             has keyword =>
1223             (is => 'ro',
1224             required => 1,
1225             default => sub { '' },
1226             );
1227              
1228              
1229             =head4 name
1230              
1231              
1232             =cut
1233              
1234             has name =>
1235             (is => 'ro',
1236             required => 1,
1237             default => sub { '' },
1238             );
1239              
1240              
1241             =head4 description
1242              
1243              
1244             =cut
1245              
1246             has description =>
1247             (is => 'ro',
1248             required => 1,
1249             default => sub { '' },
1250             );
1251              
1252              
1253             =head4 table_header
1254              
1255              
1256             =cut
1257              
1258             has table_header =>
1259             (is => 'ro',
1260             );
1261              
1262              
1263             =head4 table_body
1264              
1265              
1266             =cut
1267              
1268             has table_body =>
1269             (is => 'ro',
1270             required => 1,
1271             default => sub { [] },
1272             );
1273              
1274              
1275             =head4 id
1276              
1277              
1278             =cut
1279              
1280             has id =>
1281             (is => 'ro',
1282             required => 1,
1283             default => sub { '' },
1284             );
1285              
1286              
1287             }
1288              
1289             package Cucumber::Messages::Feature {
1290             $Cucumber::Messages::Feature::VERSION = '32.2.0';
1291             =head2 Cucumber::Messages::Feature
1292              
1293             =head3 DESCRIPTION
1294              
1295             Represents the Feature message in Cucumber's
1296             L.
1297              
1298              
1299              
1300             =head3 ATTRIBUTES
1301              
1302             =cut
1303              
1304 3     3   26 use Moo;
  3         7  
  3         15  
1305             extends 'Cucumber::Messages::Message';
1306              
1307 3     3   1503 use Scalar::Util qw( blessed );
  3         8  
  3         1247  
1308              
1309             my %types = (
1310             location => 'Cucumber::Messages::Location',
1311             tags => '[]Cucumber::Messages::Tag',
1312             language => 'string',
1313             keyword => 'string',
1314             name => 'string',
1315             description => 'string',
1316             children => '[]Cucumber::Messages::FeatureChild',
1317             );
1318              
1319             # This is a work-around for the fact that Moo doesn't have introspection
1320             # and Perl doesn't have boolean values...
1321             sub _types {
1322 0     0     return \%types;
1323             }
1324              
1325              
1326              
1327             =head4 location
1328              
1329             The location of the `Feature` keyword
1330             =cut
1331              
1332             has location =>
1333             (is => 'ro',
1334             required => 1,
1335             default => sub { Cucumber::Messages::Location->new() },
1336             );
1337              
1338              
1339             =head4 tags
1340              
1341             All the tags placed above the `Feature` keyword
1342             =cut
1343              
1344             has tags =>
1345             (is => 'ro',
1346             required => 1,
1347             default => sub { [] },
1348             );
1349              
1350              
1351             =head4 language
1352              
1353             The [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) language code of the Gherkin document
1354             =cut
1355              
1356             has language =>
1357             (is => 'ro',
1358             required => 1,
1359             default => sub { '' },
1360             );
1361              
1362              
1363             =head4 keyword
1364              
1365             The text of the `Feature` keyword (in the language specified by `language`)
1366             =cut
1367              
1368             has keyword =>
1369             (is => 'ro',
1370             required => 1,
1371             default => sub { '' },
1372             );
1373              
1374              
1375             =head4 name
1376              
1377             The name of the feature (the text following the `keyword`)
1378             =cut
1379              
1380             has name =>
1381             (is => 'ro',
1382             required => 1,
1383             default => sub { '' },
1384             );
1385              
1386              
1387             =head4 description
1388              
1389             The line(s) underneath the line with the `keyword` that are used as description
1390             =cut
1391              
1392             has description =>
1393             (is => 'ro',
1394             required => 1,
1395             default => sub { '' },
1396             );
1397              
1398              
1399             =head4 children
1400              
1401             Zero or more children
1402             =cut
1403              
1404             has children =>
1405             (is => 'ro',
1406             required => 1,
1407             default => sub { [] },
1408             );
1409              
1410              
1411             }
1412              
1413             package Cucumber::Messages::FeatureChild {
1414             $Cucumber::Messages::FeatureChild::VERSION = '32.2.0';
1415             =head2 Cucumber::Messages::FeatureChild
1416              
1417             =head3 DESCRIPTION
1418              
1419             Represents the FeatureChild message in Cucumber's
1420             L.
1421              
1422             A child node of a `Feature` node
1423              
1424             =head3 ATTRIBUTES
1425              
1426             =cut
1427              
1428 3     3   25 use Moo;
  3         6  
  3         16  
1429             extends 'Cucumber::Messages::Message';
1430              
1431 3     3   1349 use Scalar::Util qw( blessed );
  3         7  
  3         772  
1432              
1433             my %types = (
1434             rule => 'Cucumber::Messages::Rule',
1435             background => 'Cucumber::Messages::Background',
1436             scenario => 'Cucumber::Messages::Scenario',
1437             );
1438              
1439             # This is a work-around for the fact that Moo doesn't have introspection
1440             # and Perl doesn't have boolean values...
1441             sub _types {
1442 0     0     return \%types;
1443             }
1444              
1445              
1446              
1447             =head4 rule
1448              
1449              
1450             =cut
1451              
1452             has rule =>
1453             (is => 'ro',
1454             );
1455              
1456              
1457             =head4 background
1458              
1459              
1460             =cut
1461              
1462             has background =>
1463             (is => 'ro',
1464             );
1465              
1466              
1467             =head4 scenario
1468              
1469              
1470             =cut
1471              
1472             has scenario =>
1473             (is => 'ro',
1474             );
1475              
1476              
1477             }
1478              
1479             package Cucumber::Messages::Rule {
1480             $Cucumber::Messages::Rule::VERSION = '32.2.0';
1481             =head2 Cucumber::Messages::Rule
1482              
1483             =head3 DESCRIPTION
1484              
1485             Represents the Rule message in Cucumber's
1486             L.
1487              
1488              
1489              
1490             =head3 ATTRIBUTES
1491              
1492             =cut
1493              
1494 3     3   27 use Moo;
  3         6  
  3         33  
1495             extends 'Cucumber::Messages::Message';
1496              
1497 3     3   1304 use Scalar::Util qw( blessed );
  3         6  
  3         1428  
1498              
1499             my %types = (
1500             location => 'Cucumber::Messages::Location',
1501             tags => '[]Cucumber::Messages::Tag',
1502             keyword => 'string',
1503             name => 'string',
1504             description => 'string',
1505             children => '[]Cucumber::Messages::RuleChild',
1506             id => 'string',
1507             );
1508              
1509             # This is a work-around for the fact that Moo doesn't have introspection
1510             # and Perl doesn't have boolean values...
1511             sub _types {
1512 0     0     return \%types;
1513             }
1514              
1515              
1516              
1517             =head4 location
1518              
1519             The location of the `Rule` keyword
1520             =cut
1521              
1522             has location =>
1523             (is => 'ro',
1524             required => 1,
1525             default => sub { Cucumber::Messages::Location->new() },
1526             );
1527              
1528              
1529             =head4 tags
1530              
1531             All the tags placed above the `Rule` keyword
1532             =cut
1533              
1534             has tags =>
1535             (is => 'ro',
1536             required => 1,
1537             default => sub { [] },
1538             );
1539              
1540              
1541             =head4 keyword
1542              
1543              
1544             =cut
1545              
1546             has keyword =>
1547             (is => 'ro',
1548             required => 1,
1549             default => sub { '' },
1550             );
1551              
1552              
1553             =head4 name
1554              
1555              
1556             =cut
1557              
1558             has name =>
1559             (is => 'ro',
1560             required => 1,
1561             default => sub { '' },
1562             );
1563              
1564              
1565             =head4 description
1566              
1567              
1568             =cut
1569              
1570             has description =>
1571             (is => 'ro',
1572             required => 1,
1573             default => sub { '' },
1574             );
1575              
1576              
1577             =head4 children
1578              
1579              
1580             =cut
1581              
1582             has children =>
1583             (is => 'ro',
1584             required => 1,
1585             default => sub { [] },
1586             );
1587              
1588              
1589             =head4 id
1590              
1591              
1592             =cut
1593              
1594             has id =>
1595             (is => 'ro',
1596             required => 1,
1597             default => sub { '' },
1598             );
1599              
1600              
1601             }
1602              
1603             package Cucumber::Messages::RuleChild {
1604             $Cucumber::Messages::RuleChild::VERSION = '32.2.0';
1605             =head2 Cucumber::Messages::RuleChild
1606              
1607             =head3 DESCRIPTION
1608              
1609             Represents the RuleChild message in Cucumber's
1610             L.
1611              
1612             A child node of a `Rule` node
1613              
1614             =head3 ATTRIBUTES
1615              
1616             =cut
1617              
1618 3     3   29 use Moo;
  3         7  
  3         16  
1619             extends 'Cucumber::Messages::Message';
1620              
1621 3     3   1326 use Scalar::Util qw( blessed );
  3         16  
  3         592  
1622              
1623             my %types = (
1624             background => 'Cucumber::Messages::Background',
1625             scenario => 'Cucumber::Messages::Scenario',
1626             );
1627              
1628             # This is a work-around for the fact that Moo doesn't have introspection
1629             # and Perl doesn't have boolean values...
1630             sub _types {
1631 0     0     return \%types;
1632             }
1633              
1634              
1635              
1636             =head4 background
1637              
1638              
1639             =cut
1640              
1641             has background =>
1642             (is => 'ro',
1643             );
1644              
1645              
1646             =head4 scenario
1647              
1648              
1649             =cut
1650              
1651             has scenario =>
1652             (is => 'ro',
1653             );
1654              
1655              
1656             }
1657              
1658             package Cucumber::Messages::Scenario {
1659             $Cucumber::Messages::Scenario::VERSION = '32.2.0';
1660             =head2 Cucumber::Messages::Scenario
1661              
1662             =head3 DESCRIPTION
1663              
1664             Represents the Scenario message in Cucumber's
1665             L.
1666              
1667              
1668              
1669             =head3 ATTRIBUTES
1670              
1671             =cut
1672              
1673 3     3   26 use Moo;
  3         6  
  3         17  
1674             extends 'Cucumber::Messages::Message';
1675              
1676 3     3   1448 use Scalar::Util qw( blessed );
  3         7  
  3         1152  
1677              
1678             my %types = (
1679             location => 'Cucumber::Messages::Location',
1680             tags => '[]Cucumber::Messages::Tag',
1681             keyword => 'string',
1682             name => 'string',
1683             description => 'string',
1684             steps => '[]Cucumber::Messages::Step',
1685             examples => '[]Cucumber::Messages::Examples',
1686             id => 'string',
1687             );
1688              
1689             # This is a work-around for the fact that Moo doesn't have introspection
1690             # and Perl doesn't have boolean values...
1691             sub _types {
1692 0     0     return \%types;
1693             }
1694              
1695              
1696              
1697             =head4 location
1698              
1699             The location of the `Scenario` keyword
1700             =cut
1701              
1702             has location =>
1703             (is => 'ro',
1704             required => 1,
1705             default => sub { Cucumber::Messages::Location->new() },
1706             );
1707              
1708              
1709             =head4 tags
1710              
1711              
1712             =cut
1713              
1714             has tags =>
1715             (is => 'ro',
1716             required => 1,
1717             default => sub { [] },
1718             );
1719              
1720              
1721             =head4 keyword
1722              
1723              
1724             =cut
1725              
1726             has keyword =>
1727             (is => 'ro',
1728             required => 1,
1729             default => sub { '' },
1730             );
1731              
1732              
1733             =head4 name
1734              
1735              
1736             =cut
1737              
1738             has name =>
1739             (is => 'ro',
1740             required => 1,
1741             default => sub { '' },
1742             );
1743              
1744              
1745             =head4 description
1746              
1747              
1748             =cut
1749              
1750             has description =>
1751             (is => 'ro',
1752             required => 1,
1753             default => sub { '' },
1754             );
1755              
1756              
1757             =head4 steps
1758              
1759              
1760             =cut
1761              
1762             has steps =>
1763             (is => 'ro',
1764             required => 1,
1765             default => sub { [] },
1766             );
1767              
1768              
1769             =head4 examples
1770              
1771              
1772             =cut
1773              
1774             has examples =>
1775             (is => 'ro',
1776             required => 1,
1777             default => sub { [] },
1778             );
1779              
1780              
1781             =head4 id
1782              
1783              
1784             =cut
1785              
1786             has id =>
1787             (is => 'ro',
1788             required => 1,
1789             default => sub { '' },
1790             );
1791              
1792              
1793             }
1794              
1795             package Cucumber::Messages::Step {
1796             $Cucumber::Messages::Step::VERSION = '32.2.0';
1797             =head2 Cucumber::Messages::Step
1798              
1799             =head3 DESCRIPTION
1800              
1801             Represents the Step message in Cucumber's
1802             L.
1803              
1804             A step
1805              
1806             =head3 ATTRIBUTES
1807              
1808             =cut
1809              
1810 3     3   25 use Moo;
  3         6  
  3         38  
1811             extends 'Cucumber::Messages::Message';
1812              
1813 3     3   1353 use Scalar::Util qw( blessed );
  3         6  
  3         668  
1814              
1815             my %types = (
1816             location => 'Cucumber::Messages::Location',
1817             keyword => 'string',
1818             keyword_type => '',
1819             text => 'string',
1820             doc_string => 'Cucumber::Messages::DocString',
1821             data_table => 'Cucumber::Messages::DataTable',
1822             id => 'string',
1823             );
1824              
1825             # This is a work-around for the fact that Moo doesn't have introspection
1826             # and Perl doesn't have boolean values...
1827             sub _types {
1828 0     0     return \%types;
1829             }
1830              
1831              
1832              
1833             =head4 location
1834              
1835             The location of the steps' `keyword`
1836             =cut
1837              
1838             has location =>
1839             (is => 'ro',
1840             required => 1,
1841             default => sub { Cucumber::Messages::Location->new() },
1842             );
1843              
1844              
1845             =head4 keyword
1846              
1847             The actual keyword as it appeared in the source.
1848             =cut
1849              
1850             has keyword =>
1851             (is => 'ro',
1852             required => 1,
1853             default => sub { '' },
1854             );
1855              
1856              
1857             =head4 keyword_type
1858              
1859             The test phase signalled by the keyword: Context definition (Given), Action performance (When), Outcome assertion (Then). Other keywords signal Continuation (And and But) from a prior keyword. Please note that all translations which a dialect maps to multiple keywords (`*` is in this category for all dialects), map to 'Unknown'.
1860              
1861             Available constants for valid values of this field:
1862              
1863             =over
1864              
1865             =item * KEYWORDTYPE_UNKNOWN
1866              
1867             =item * KEYWORDTYPE_CONTEXT
1868              
1869             =item * KEYWORDTYPE_ACTION
1870              
1871             =item * KEYWORDTYPE_OUTCOME
1872              
1873             =item * KEYWORDTYPE_CONJUNCTION
1874              
1875             =back
1876              
1877             =cut
1878              
1879              
1880             use constant {
1881 3         741 KEYWORDTYPE_UNKNOWN => 'Unknown',
1882             KEYWORDTYPE_CONTEXT => 'Context',
1883             KEYWORDTYPE_ACTION => 'Action',
1884             KEYWORDTYPE_OUTCOME => 'Outcome',
1885             KEYWORDTYPE_CONJUNCTION => 'Conjunction',
1886 3     3   35 };
  3         6  
1887              
1888             has keyword_type =>
1889             (is => 'ro',
1890             );
1891              
1892              
1893             =head4 text
1894              
1895              
1896             =cut
1897              
1898             has text =>
1899             (is => 'ro',
1900             required => 1,
1901             default => sub { '' },
1902             );
1903              
1904              
1905             =head4 doc_string
1906              
1907              
1908             =cut
1909              
1910             has doc_string =>
1911             (is => 'ro',
1912             );
1913              
1914              
1915             =head4 data_table
1916              
1917              
1918             =cut
1919              
1920             has data_table =>
1921             (is => 'ro',
1922             );
1923              
1924              
1925             =head4 id
1926              
1927             Unique ID to be able to reference the Step from PickleStep
1928             =cut
1929              
1930             has id =>
1931             (is => 'ro',
1932             required => 1,
1933             default => sub { '' },
1934             );
1935              
1936              
1937             }
1938              
1939             package Cucumber::Messages::TableCell {
1940             $Cucumber::Messages::TableCell::VERSION = '32.2.0';
1941             =head2 Cucumber::Messages::TableCell
1942              
1943             =head3 DESCRIPTION
1944              
1945             Represents the TableCell message in Cucumber's
1946             L.
1947              
1948             A cell in a `TableRow`
1949              
1950             =head3 ATTRIBUTES
1951              
1952             =cut
1953              
1954 3     3   21 use Moo;
  3         6  
  3         14  
1955             extends 'Cucumber::Messages::Message';
1956              
1957 3     3   1225 use Scalar::Util qw( blessed );
  3         5  
  3         625  
1958              
1959             my %types = (
1960             location => 'Cucumber::Messages::Location',
1961             value => 'string',
1962             );
1963              
1964             # This is a work-around for the fact that Moo doesn't have introspection
1965             # and Perl doesn't have boolean values...
1966             sub _types {
1967 0     0     return \%types;
1968             }
1969              
1970              
1971              
1972             =head4 location
1973              
1974             The location of the cell
1975             =cut
1976              
1977             has location =>
1978             (is => 'ro',
1979             required => 1,
1980             default => sub { Cucumber::Messages::Location->new() },
1981             );
1982              
1983              
1984             =head4 value
1985              
1986             The value of the cell
1987             =cut
1988              
1989             has value =>
1990             (is => 'ro',
1991             required => 1,
1992             default => sub { '' },
1993             );
1994              
1995              
1996             }
1997              
1998             package Cucumber::Messages::TableRow {
1999             $Cucumber::Messages::TableRow::VERSION = '32.2.0';
2000             =head2 Cucumber::Messages::TableRow
2001              
2002             =head3 DESCRIPTION
2003              
2004             Represents the TableRow message in Cucumber's
2005             L.
2006              
2007             A row in a table
2008              
2009             =head3 ATTRIBUTES
2010              
2011             =cut
2012              
2013 3     3   20 use Moo;
  3         9  
  3         12  
2014             extends 'Cucumber::Messages::Message';
2015              
2016 3     3   1199 use Scalar::Util qw( blessed );
  3         32  
  3         842  
2017              
2018             my %types = (
2019             location => 'Cucumber::Messages::Location',
2020             cells => '[]Cucumber::Messages::TableCell',
2021             id => 'string',
2022             );
2023              
2024             # This is a work-around for the fact that Moo doesn't have introspection
2025             # and Perl doesn't have boolean values...
2026             sub _types {
2027 0     0     return \%types;
2028             }
2029              
2030              
2031              
2032             =head4 location
2033              
2034             The location of the first cell in the row
2035             =cut
2036              
2037             has location =>
2038             (is => 'ro',
2039             required => 1,
2040             default => sub { Cucumber::Messages::Location->new() },
2041             );
2042              
2043              
2044             =head4 cells
2045              
2046             Cells in the row
2047             =cut
2048              
2049             has cells =>
2050             (is => 'ro',
2051             required => 1,
2052             default => sub { [] },
2053             );
2054              
2055              
2056             =head4 id
2057              
2058              
2059             =cut
2060              
2061             has id =>
2062             (is => 'ro',
2063             required => 1,
2064             default => sub { '' },
2065             );
2066              
2067              
2068             }
2069              
2070             package Cucumber::Messages::Tag {
2071             $Cucumber::Messages::Tag::VERSION = '32.2.0';
2072             =head2 Cucumber::Messages::Tag
2073              
2074             =head3 DESCRIPTION
2075              
2076             Represents the Tag message in Cucumber's
2077             L.
2078              
2079             A tag
2080              
2081             =head3 ATTRIBUTES
2082              
2083             =cut
2084              
2085 3     3   26 use Moo;
  3         7  
  3         14  
2086             extends 'Cucumber::Messages::Message';
2087              
2088 3     3   1208 use Scalar::Util qw( blessed );
  3         10  
  3         747  
2089              
2090             my %types = (
2091             location => 'Cucumber::Messages::Location',
2092             name => 'string',
2093             id => 'string',
2094             );
2095              
2096             # This is a work-around for the fact that Moo doesn't have introspection
2097             # and Perl doesn't have boolean values...
2098             sub _types {
2099 0     0     return \%types;
2100             }
2101              
2102              
2103              
2104             =head4 location
2105              
2106             Location of the tag
2107             =cut
2108              
2109             has location =>
2110             (is => 'ro',
2111             required => 1,
2112             default => sub { Cucumber::Messages::Location->new() },
2113             );
2114              
2115              
2116             =head4 name
2117              
2118             The name of the tag (including the leading `@`)
2119             =cut
2120              
2121             has name =>
2122             (is => 'ro',
2123             required => 1,
2124             default => sub { '' },
2125             );
2126              
2127              
2128             =head4 id
2129              
2130             Unique ID to be able to reference the Tag from PickleTag
2131             =cut
2132              
2133             has id =>
2134             (is => 'ro',
2135             required => 1,
2136             default => sub { '' },
2137             );
2138              
2139              
2140             }
2141              
2142             package Cucumber::Messages::Hook {
2143             $Cucumber::Messages::Hook::VERSION = '32.2.0';
2144             =head2 Cucumber::Messages::Hook
2145              
2146             =head3 DESCRIPTION
2147              
2148             Represents the Hook message in Cucumber's
2149             L.
2150              
2151              
2152              
2153             =head3 ATTRIBUTES
2154              
2155             =cut
2156              
2157 3     3   21 use Moo;
  3         14  
  3         14  
2158             extends 'Cucumber::Messages::Message';
2159              
2160 3     3   1203 use Scalar::Util qw( blessed );
  3         7  
  3         787  
2161              
2162             my %types = (
2163             id => 'string',
2164             name => 'string',
2165             source_reference => 'Cucumber::Messages::SourceReference',
2166             tag_expression => 'string',
2167             type => '',
2168             );
2169              
2170             # This is a work-around for the fact that Moo doesn't have introspection
2171             # and Perl doesn't have boolean values...
2172             sub _types {
2173 0     0     return \%types;
2174             }
2175              
2176              
2177              
2178             =head4 id
2179              
2180              
2181             =cut
2182              
2183             has id =>
2184             (is => 'ro',
2185             required => 1,
2186             default => sub { '' },
2187             );
2188              
2189              
2190             =head4 name
2191              
2192              
2193             =cut
2194              
2195             has name =>
2196             (is => 'ro',
2197             );
2198              
2199              
2200             =head4 source_reference
2201              
2202              
2203             =cut
2204              
2205             has source_reference =>
2206             (is => 'ro',
2207             required => 1,
2208             default => sub { Cucumber::Messages::SourceReference->new() },
2209             );
2210              
2211              
2212             =head4 tag_expression
2213              
2214              
2215             =cut
2216              
2217             has tag_expression =>
2218             (is => 'ro',
2219             );
2220              
2221              
2222             =head4 type
2223              
2224              
2225              
2226             Available constants for valid values of this field:
2227              
2228             =over
2229              
2230             =item * TYPE_BEFORE_TEST_RUN
2231              
2232             =item * TYPE_AFTER_TEST_RUN
2233              
2234             =item * TYPE_BEFORE_TEST_CASE
2235              
2236             =item * TYPE_AFTER_TEST_CASE
2237              
2238             =item * TYPE_BEFORE_TEST_STEP
2239              
2240             =item * TYPE_AFTER_TEST_STEP
2241              
2242             =back
2243              
2244             =cut
2245              
2246              
2247             use constant {
2248 3         502 TYPE_BEFORE_TEST_RUN => 'BEFORE_TEST_RUN',
2249             TYPE_AFTER_TEST_RUN => 'AFTER_TEST_RUN',
2250             TYPE_BEFORE_TEST_CASE => 'BEFORE_TEST_CASE',
2251             TYPE_AFTER_TEST_CASE => 'AFTER_TEST_CASE',
2252             TYPE_BEFORE_TEST_STEP => 'BEFORE_TEST_STEP',
2253             TYPE_AFTER_TEST_STEP => 'AFTER_TEST_STEP',
2254 3     3   23 };
  3         7  
2255              
2256             has type =>
2257             (is => 'ro',
2258             );
2259              
2260              
2261             }
2262              
2263             package Cucumber::Messages::Location {
2264             $Cucumber::Messages::Location::VERSION = '32.2.0';
2265             =head2 Cucumber::Messages::Location
2266              
2267             =head3 DESCRIPTION
2268              
2269             Represents the Location message in Cucumber's
2270             L.
2271              
2272             Points to a line and a column in a text file
2273              
2274             =head3 ATTRIBUTES
2275              
2276             =cut
2277              
2278 3     3   22 use Moo;
  3         13  
  3         16  
2279             extends 'Cucumber::Messages::Message';
2280              
2281 3     3   1148 use Scalar::Util qw( blessed );
  3         6  
  3         554  
2282              
2283             my %types = (
2284             line => 'number',
2285             column => 'number',
2286             );
2287              
2288             # This is a work-around for the fact that Moo doesn't have introspection
2289             # and Perl doesn't have boolean values...
2290             sub _types {
2291 0     0     return \%types;
2292             }
2293              
2294              
2295              
2296             =head4 line
2297              
2298              
2299             =cut
2300              
2301             has line =>
2302             (is => 'ro',
2303             required => 1,
2304             default => sub { 0 },
2305             );
2306              
2307              
2308             =head4 column
2309              
2310              
2311             =cut
2312              
2313             has column =>
2314             (is => 'ro',
2315             );
2316              
2317              
2318             }
2319              
2320             package Cucumber::Messages::Meta {
2321             $Cucumber::Messages::Meta::VERSION = '32.2.0';
2322             =head2 Cucumber::Messages::Meta
2323              
2324             =head3 DESCRIPTION
2325              
2326             Represents the Meta message in Cucumber's
2327             L.
2328              
2329             This message contains meta information about the environment. Consumers can use
2330             this for various purposes.
2331              
2332             =head3 ATTRIBUTES
2333              
2334             =cut
2335              
2336 3     3   21 use Moo;
  3         5  
  3         13  
2337             extends 'Cucumber::Messages::Message';
2338              
2339 3     3   1302 use Scalar::Util qw( blessed );
  3         15  
  3         1066  
2340              
2341             my %types = (
2342             protocol_version => 'string',
2343             implementation => 'Cucumber::Messages::Product',
2344             runtime => 'Cucumber::Messages::Product',
2345             os => 'Cucumber::Messages::Product',
2346             cpu => 'Cucumber::Messages::Product',
2347             ci => 'Cucumber::Messages::Ci',
2348             );
2349              
2350             # This is a work-around for the fact that Moo doesn't have introspection
2351             # and Perl doesn't have boolean values...
2352             sub _types {
2353 0     0     return \%types;
2354             }
2355              
2356              
2357              
2358             =head4 protocol_version
2359              
2360             The [SEMVER](https://semver.org/) version number of the protocol
2361             =cut
2362              
2363             has protocol_version =>
2364             (is => 'ro',
2365             required => 1,
2366             default => sub { '' },
2367             );
2368              
2369              
2370             =head4 implementation
2371              
2372             SpecFlow, Cucumber-JVM, Cucumber.js, Cucumber-Ruby, Behat etc.
2373             =cut
2374              
2375             has implementation =>
2376             (is => 'ro',
2377             required => 1,
2378             default => sub { Cucumber::Messages::Product->new() },
2379             );
2380              
2381              
2382             =head4 runtime
2383              
2384             Java, Ruby, Node.js etc
2385             =cut
2386              
2387             has runtime =>
2388             (is => 'ro',
2389             required => 1,
2390             default => sub { Cucumber::Messages::Product->new() },
2391             );
2392              
2393              
2394             =head4 os
2395              
2396             Windows, Linux, MacOS etc
2397             =cut
2398              
2399             has os =>
2400             (is => 'ro',
2401             required => 1,
2402             default => sub { Cucumber::Messages::Product->new() },
2403             );
2404              
2405              
2406             =head4 cpu
2407              
2408             386, arm, amd64 etc
2409             =cut
2410              
2411             has cpu =>
2412             (is => 'ro',
2413             required => 1,
2414             default => sub { Cucumber::Messages::Product->new() },
2415             );
2416              
2417              
2418             =head4 ci
2419              
2420              
2421             =cut
2422              
2423             has ci =>
2424             (is => 'ro',
2425             );
2426              
2427              
2428             }
2429              
2430             package Cucumber::Messages::Ci {
2431             $Cucumber::Messages::Ci::VERSION = '32.2.0';
2432             =head2 Cucumber::Messages::Ci
2433              
2434             =head3 DESCRIPTION
2435              
2436             Represents the Ci message in Cucumber's
2437             L.
2438              
2439             CI environment
2440              
2441             =head3 ATTRIBUTES
2442              
2443             =cut
2444              
2445 3     3   25 use Moo;
  3         4  
  3         40  
2446             extends 'Cucumber::Messages::Message';
2447              
2448 3     3   1206 use Scalar::Util qw( blessed );
  3         6  
  3         644  
2449              
2450             my %types = (
2451             name => 'string',
2452             url => 'string',
2453             build_number => 'string',
2454             git => 'Cucumber::Messages::Git',
2455             );
2456              
2457             # This is a work-around for the fact that Moo doesn't have introspection
2458             # and Perl doesn't have boolean values...
2459             sub _types {
2460 0     0     return \%types;
2461             }
2462              
2463              
2464              
2465             =head4 name
2466              
2467             Name of the CI product, e.g. "Jenkins", "CircleCI" etc.
2468             =cut
2469              
2470             has name =>
2471             (is => 'ro',
2472             required => 1,
2473             default => sub { '' },
2474             );
2475              
2476              
2477             =head4 url
2478              
2479             Link to the build
2480             =cut
2481              
2482             has url =>
2483             (is => 'ro',
2484             );
2485              
2486              
2487             =head4 build_number
2488              
2489             The build number. Some CI servers use non-numeric build numbers, which is why this is a string
2490             =cut
2491              
2492             has build_number =>
2493             (is => 'ro',
2494             );
2495              
2496              
2497             =head4 git
2498              
2499              
2500             =cut
2501              
2502             has git =>
2503             (is => 'ro',
2504             );
2505              
2506              
2507             }
2508              
2509             package Cucumber::Messages::Git {
2510             $Cucumber::Messages::Git::VERSION = '32.2.0';
2511             =head2 Cucumber::Messages::Git
2512              
2513             =head3 DESCRIPTION
2514              
2515             Represents the Git message in Cucumber's
2516             L.
2517              
2518             Information about Git, provided by the Build/CI server as environment
2519             variables.
2520              
2521             =head3 ATTRIBUTES
2522              
2523             =cut
2524              
2525 3     3   21 use Moo;
  3         5  
  3         14  
2526             extends 'Cucumber::Messages::Message';
2527              
2528 3     3   1265 use Scalar::Util qw( blessed );
  3         5  
  3         757  
2529              
2530             my %types = (
2531             remote => 'string',
2532             revision => 'string',
2533             branch => 'string',
2534             tag => 'string',
2535             );
2536              
2537             # This is a work-around for the fact that Moo doesn't have introspection
2538             # and Perl doesn't have boolean values...
2539             sub _types {
2540 0     0     return \%types;
2541             }
2542              
2543              
2544              
2545             =head4 remote
2546              
2547              
2548             =cut
2549              
2550             has remote =>
2551             (is => 'ro',
2552             required => 1,
2553             default => sub { '' },
2554             );
2555              
2556              
2557             =head4 revision
2558              
2559              
2560             =cut
2561              
2562             has revision =>
2563             (is => 'ro',
2564             required => 1,
2565             default => sub { '' },
2566             );
2567              
2568              
2569             =head4 branch
2570              
2571              
2572             =cut
2573              
2574             has branch =>
2575             (is => 'ro',
2576             );
2577              
2578              
2579             =head4 tag
2580              
2581              
2582             =cut
2583              
2584             has tag =>
2585             (is => 'ro',
2586             );
2587              
2588              
2589             }
2590              
2591             package Cucumber::Messages::Product {
2592             $Cucumber::Messages::Product::VERSION = '32.2.0';
2593             =head2 Cucumber::Messages::Product
2594              
2595             =head3 DESCRIPTION
2596              
2597             Represents the Product message in Cucumber's
2598             L.
2599              
2600             Used to describe various properties of Meta
2601              
2602             =head3 ATTRIBUTES
2603              
2604             =cut
2605              
2606 3     3   24 use Moo;
  3         7  
  3         13  
2607             extends 'Cucumber::Messages::Message';
2608              
2609 3     3   1351 use Scalar::Util qw( blessed );
  3         6  
  3         694  
2610              
2611             my %types = (
2612             name => 'string',
2613             version => 'string',
2614             );
2615              
2616             # This is a work-around for the fact that Moo doesn't have introspection
2617             # and Perl doesn't have boolean values...
2618             sub _types {
2619 0     0     return \%types;
2620             }
2621              
2622              
2623              
2624             =head4 name
2625              
2626             The product name
2627             =cut
2628              
2629             has name =>
2630             (is => 'ro',
2631             required => 1,
2632             default => sub { '' },
2633             );
2634              
2635              
2636             =head4 version
2637              
2638             The product version
2639             =cut
2640              
2641             has version =>
2642             (is => 'ro',
2643             );
2644              
2645              
2646             }
2647              
2648             package Cucumber::Messages::ParameterType {
2649             $Cucumber::Messages::ParameterType::VERSION = '32.2.0';
2650             =head2 Cucumber::Messages::ParameterType
2651              
2652             =head3 DESCRIPTION
2653              
2654             Represents the ParameterType message in Cucumber's
2655             L.
2656              
2657              
2658              
2659             =head3 ATTRIBUTES
2660              
2661             =cut
2662              
2663 3     3   43 use Moo;
  3         7  
  3         13  
2664             extends 'Cucumber::Messages::Message';
2665              
2666 3     3   1842 use Scalar::Util qw( blessed );
  3         7  
  3         940  
2667              
2668             my %types = (
2669             name => 'string',
2670             regular_expressions => '[]string',
2671             prefer_for_regular_expression_match => 'boolean',
2672             use_for_snippets => 'boolean',
2673             id => 'string',
2674             source_reference => 'Cucumber::Messages::SourceReference',
2675             );
2676              
2677             # This is a work-around for the fact that Moo doesn't have introspection
2678             # and Perl doesn't have boolean values...
2679             sub _types {
2680 0     0     return \%types;
2681             }
2682              
2683              
2684              
2685             =head4 name
2686              
2687             The name is unique, so we don't need an id.
2688             =cut
2689              
2690             has name =>
2691             (is => 'ro',
2692             required => 1,
2693             default => sub { '' },
2694             );
2695              
2696              
2697             =head4 regular_expressions
2698              
2699              
2700             =cut
2701              
2702             has regular_expressions =>
2703             (is => 'ro',
2704             required => 1,
2705             default => sub { [] },
2706             );
2707              
2708              
2709             =head4 prefer_for_regular_expression_match
2710              
2711              
2712             =cut
2713              
2714             has prefer_for_regular_expression_match =>
2715             (is => 'ro',
2716             required => 1,
2717             default => sub { '' },
2718             );
2719              
2720              
2721             =head4 use_for_snippets
2722              
2723              
2724             =cut
2725              
2726             has use_for_snippets =>
2727             (is => 'ro',
2728             required => 1,
2729             default => sub { '' },
2730             );
2731              
2732              
2733             =head4 id
2734              
2735              
2736             =cut
2737              
2738             has id =>
2739             (is => 'ro',
2740             required => 1,
2741             default => sub { '' },
2742             );
2743              
2744              
2745             =head4 source_reference
2746              
2747              
2748             =cut
2749              
2750             has source_reference =>
2751             (is => 'ro',
2752             );
2753              
2754              
2755             }
2756              
2757             package Cucumber::Messages::ParseError {
2758             $Cucumber::Messages::ParseError::VERSION = '32.2.0';
2759             =head2 Cucumber::Messages::ParseError
2760              
2761             =head3 DESCRIPTION
2762              
2763             Represents the ParseError message in Cucumber's
2764             L.
2765              
2766              
2767              
2768             =head3 ATTRIBUTES
2769              
2770             =cut
2771              
2772 3     3   25 use Moo;
  3         6  
  3         14  
2773             extends 'Cucumber::Messages::Message';
2774              
2775 3     3   1395 use Scalar::Util qw( blessed );
  3         6  
  3         618  
2776              
2777             my %types = (
2778             source => 'Cucumber::Messages::SourceReference',
2779             message => 'string',
2780             );
2781              
2782             # This is a work-around for the fact that Moo doesn't have introspection
2783             # and Perl doesn't have boolean values...
2784             sub _types {
2785 0     0     return \%types;
2786             }
2787              
2788              
2789              
2790             =head4 source
2791              
2792              
2793             =cut
2794              
2795             has source =>
2796             (is => 'ro',
2797             required => 1,
2798             default => sub { Cucumber::Messages::SourceReference->new() },
2799             );
2800              
2801              
2802             =head4 message
2803              
2804              
2805             =cut
2806              
2807             has message =>
2808             (is => 'ro',
2809             required => 1,
2810             default => sub { '' },
2811             );
2812              
2813              
2814             }
2815              
2816             package Cucumber::Messages::Pickle {
2817             $Cucumber::Messages::Pickle::VERSION = '32.2.0';
2818             =head2 Cucumber::Messages::Pickle
2819              
2820             =head3 DESCRIPTION
2821              
2822             Represents the Pickle message in Cucumber's
2823             L.
2824              
2825             A `Pickle` represents a template for a `TestCase`. It is typically derived
2826             from another format, such as [GherkinDocument](#io.cucumber.messages.GherkinDocument).
2827             In the future a `Pickle` may be derived from other formats such as Markdown or
2828             Excel files.
2829              
2830             By making `Pickle` the main data structure Cucumber uses for execution, the
2831             implementation of Cucumber itself becomes simpler, as it doesn't have to deal
2832             with the complex structure of a [GherkinDocument](#io.cucumber.messages.GherkinDocument).
2833              
2834             Each `PickleStep` of a `Pickle` is matched with a `StepDefinition` to create a `TestCase`
2835              
2836             =head3 ATTRIBUTES
2837              
2838             =cut
2839              
2840 3     3   21 use Moo;
  3         6  
  3         14  
2841             extends 'Cucumber::Messages::Message';
2842              
2843 3     3   1225 use Scalar::Util qw( blessed );
  3         13  
  3         1108  
2844              
2845             my %types = (
2846             id => 'string',
2847             uri => 'string',
2848             location => 'Cucumber::Messages::Location',
2849             name => 'string',
2850             language => 'string',
2851             steps => '[]Cucumber::Messages::PickleStep',
2852             tags => '[]Cucumber::Messages::PickleTag',
2853             ast_node_ids => '[]string',
2854             );
2855              
2856             # This is a work-around for the fact that Moo doesn't have introspection
2857             # and Perl doesn't have boolean values...
2858             sub _types {
2859 0     0     return \%types;
2860             }
2861              
2862              
2863              
2864             =head4 id
2865              
2866             A unique id for the pickle
2867             =cut
2868              
2869             has id =>
2870             (is => 'ro',
2871             required => 1,
2872             default => sub { '' },
2873             );
2874              
2875              
2876             =head4 uri
2877              
2878             The uri of the source file
2879             =cut
2880              
2881             has uri =>
2882             (is => 'ro',
2883             required => 1,
2884             default => sub { '' },
2885             );
2886              
2887              
2888             =head4 location
2889              
2890             The location of this pickle in source file. A pickle constructed from `Examples` will point to the example row.
2891             =cut
2892              
2893             has location =>
2894             (is => 'ro',
2895             );
2896              
2897              
2898             =head4 name
2899              
2900             The name of the pickle
2901             =cut
2902              
2903             has name =>
2904             (is => 'ro',
2905             required => 1,
2906             default => sub { '' },
2907             );
2908              
2909              
2910             =head4 language
2911              
2912             The language of the pickle
2913             =cut
2914              
2915             has language =>
2916             (is => 'ro',
2917             required => 1,
2918             default => sub { '' },
2919             );
2920              
2921              
2922             =head4 steps
2923              
2924             One or more steps
2925             =cut
2926              
2927             has steps =>
2928             (is => 'ro',
2929             required => 1,
2930             default => sub { [] },
2931             );
2932              
2933              
2934             =head4 tags
2935              
2936             One or more tags. If this pickle is constructed from a Gherkin document,
2937             It includes inherited tags from the `Feature` as well.
2938             =cut
2939              
2940             has tags =>
2941             (is => 'ro',
2942             required => 1,
2943             default => sub { [] },
2944             );
2945              
2946              
2947             =head4 ast_node_ids
2948              
2949             Points to the AST node locations of the pickle. The last one represents the unique
2950             id of the pickle. A pickle constructed from `Examples` will have the first
2951             id originating from the `Scenario` AST node, and the second from the `TableRow` AST node.
2952             =cut
2953              
2954             has ast_node_ids =>
2955             (is => 'ro',
2956             required => 1,
2957             default => sub { [] },
2958             );
2959              
2960              
2961             }
2962              
2963             package Cucumber::Messages::PickleDocString {
2964             $Cucumber::Messages::PickleDocString::VERSION = '32.2.0';
2965             =head2 Cucumber::Messages::PickleDocString
2966              
2967             =head3 DESCRIPTION
2968              
2969             Represents the PickleDocString message in Cucumber's
2970             L.
2971              
2972              
2973              
2974             =head3 ATTRIBUTES
2975              
2976             =cut
2977              
2978 3     3   23 use Moo;
  3         6  
  3         14  
2979             extends 'Cucumber::Messages::Message';
2980              
2981 3     3   1480 use Scalar::Util qw( blessed );
  3         11  
  3         579  
2982              
2983             my %types = (
2984             media_type => 'string',
2985             content => 'string',
2986             );
2987              
2988             # This is a work-around for the fact that Moo doesn't have introspection
2989             # and Perl doesn't have boolean values...
2990             sub _types {
2991 0     0     return \%types;
2992             }
2993              
2994              
2995              
2996             =head4 media_type
2997              
2998              
2999             =cut
3000              
3001             has media_type =>
3002             (is => 'ro',
3003             );
3004              
3005              
3006             =head4 content
3007              
3008              
3009             =cut
3010              
3011             has content =>
3012             (is => 'ro',
3013             required => 1,
3014             default => sub { '' },
3015             );
3016              
3017              
3018             }
3019              
3020             package Cucumber::Messages::PickleStep {
3021             $Cucumber::Messages::PickleStep::VERSION = '32.2.0';
3022             =head2 Cucumber::Messages::PickleStep
3023              
3024             =head3 DESCRIPTION
3025              
3026             Represents the PickleStep message in Cucumber's
3027             L.
3028              
3029             An executable step
3030              
3031             =head3 ATTRIBUTES
3032              
3033             =cut
3034              
3035 3     3   21 use Moo;
  3         15  
  3         13  
3036             extends 'Cucumber::Messages::Message';
3037              
3038 3     3   1164 use Scalar::Util qw( blessed );
  3         5  
  3         645  
3039              
3040             my %types = (
3041             argument => 'Cucumber::Messages::PickleStepArgument',
3042             ast_node_ids => '[]string',
3043             id => 'string',
3044             type => '',
3045             text => 'string',
3046             );
3047              
3048             # This is a work-around for the fact that Moo doesn't have introspection
3049             # and Perl doesn't have boolean values...
3050             sub _types {
3051 0     0     return \%types;
3052             }
3053              
3054              
3055              
3056             =head4 argument
3057              
3058              
3059             =cut
3060              
3061             has argument =>
3062             (is => 'ro',
3063             );
3064              
3065              
3066             =head4 ast_node_ids
3067              
3068             References the IDs of the source of the step. For Gherkin, this can be
3069             the ID of a Step, and possibly also the ID of a TableRow
3070             =cut
3071              
3072             has ast_node_ids =>
3073             (is => 'ro',
3074             required => 1,
3075             default => sub { [] },
3076             );
3077              
3078              
3079             =head4 id
3080              
3081             A unique ID for the PickleStep
3082             =cut
3083              
3084             has id =>
3085             (is => 'ro',
3086             required => 1,
3087             default => sub { '' },
3088             );
3089              
3090              
3091             =head4 type
3092              
3093             The context in which the step was specified: context (Given), action (When) or outcome (Then).
3094              
3095             Note that the keywords `But` and `And` inherit their meaning from prior steps and the `*` 'keyword' doesn't have specific meaning (hence Unknown)
3096              
3097             Available constants for valid values of this field:
3098              
3099             =over
3100              
3101             =item * TYPE_UNKNOWN
3102              
3103             =item * TYPE_CONTEXT
3104              
3105             =item * TYPE_ACTION
3106              
3107             =item * TYPE_OUTCOME
3108              
3109             =back
3110              
3111             =cut
3112              
3113              
3114             use constant {
3115 3         691 TYPE_UNKNOWN => 'Unknown',
3116             TYPE_CONTEXT => 'Context',
3117             TYPE_ACTION => 'Action',
3118             TYPE_OUTCOME => 'Outcome',
3119 3     3   19 };
  3         8  
3120              
3121             has type =>
3122             (is => 'ro',
3123             );
3124              
3125              
3126             =head4 text
3127              
3128              
3129             =cut
3130              
3131             has text =>
3132             (is => 'ro',
3133             required => 1,
3134             default => sub { '' },
3135             );
3136              
3137              
3138             }
3139              
3140             package Cucumber::Messages::PickleStepArgument {
3141             $Cucumber::Messages::PickleStepArgument::VERSION = '32.2.0';
3142             =head2 Cucumber::Messages::PickleStepArgument
3143              
3144             =head3 DESCRIPTION
3145              
3146             Represents the PickleStepArgument message in Cucumber's
3147             L.
3148              
3149             An optional argument
3150              
3151             =head3 ATTRIBUTES
3152              
3153             =cut
3154              
3155 3     3   22 use Moo;
  3         5  
  3         22  
3156             extends 'Cucumber::Messages::Message';
3157              
3158 3     3   1194 use Scalar::Util qw( blessed );
  3         7  
  3         486  
3159              
3160             my %types = (
3161             doc_string => 'Cucumber::Messages::PickleDocString',
3162             data_table => 'Cucumber::Messages::PickleTable',
3163             );
3164              
3165             # This is a work-around for the fact that Moo doesn't have introspection
3166             # and Perl doesn't have boolean values...
3167             sub _types {
3168 0     0     return \%types;
3169             }
3170              
3171              
3172              
3173             =head4 doc_string
3174              
3175              
3176             =cut
3177              
3178             has doc_string =>
3179             (is => 'ro',
3180             );
3181              
3182              
3183             =head4 data_table
3184              
3185              
3186             =cut
3187              
3188             has data_table =>
3189             (is => 'ro',
3190             );
3191              
3192              
3193             }
3194              
3195             package Cucumber::Messages::PickleTable {
3196             $Cucumber::Messages::PickleTable::VERSION = '32.2.0';
3197             =head2 Cucumber::Messages::PickleTable
3198              
3199             =head3 DESCRIPTION
3200              
3201             Represents the PickleTable message in Cucumber's
3202             L.
3203              
3204              
3205              
3206             =head3 ATTRIBUTES
3207              
3208             =cut
3209              
3210 3     3   19 use Moo;
  3         5  
  3         13  
3211             extends 'Cucumber::Messages::Message';
3212              
3213 3     3   1127 use Scalar::Util qw( blessed );
  3         5  
  3         547  
3214              
3215             my %types = (
3216             rows => '[]Cucumber::Messages::PickleTableRow',
3217             );
3218              
3219             # This is a work-around for the fact that Moo doesn't have introspection
3220             # and Perl doesn't have boolean values...
3221             sub _types {
3222 0     0     return \%types;
3223             }
3224              
3225              
3226              
3227             =head4 rows
3228              
3229              
3230             =cut
3231              
3232             has rows =>
3233             (is => 'ro',
3234             required => 1,
3235             default => sub { [] },
3236             );
3237              
3238              
3239             }
3240              
3241             package Cucumber::Messages::PickleTableCell {
3242             $Cucumber::Messages::PickleTableCell::VERSION = '32.2.0';
3243             =head2 Cucumber::Messages::PickleTableCell
3244              
3245             =head3 DESCRIPTION
3246              
3247             Represents the PickleTableCell message in Cucumber's
3248             L.
3249              
3250              
3251              
3252             =head3 ATTRIBUTES
3253              
3254             =cut
3255              
3256 3     3   21 use Moo;
  3         6  
  3         19  
3257             extends 'Cucumber::Messages::Message';
3258              
3259 3     3   1172 use Scalar::Util qw( blessed );
  3         6  
  3         528  
3260              
3261             my %types = (
3262             value => 'string',
3263             );
3264              
3265             # This is a work-around for the fact that Moo doesn't have introspection
3266             # and Perl doesn't have boolean values...
3267             sub _types {
3268 0     0     return \%types;
3269             }
3270              
3271              
3272              
3273             =head4 value
3274              
3275              
3276             =cut
3277              
3278             has value =>
3279             (is => 'ro',
3280             required => 1,
3281             default => sub { '' },
3282             );
3283              
3284              
3285             }
3286              
3287             package Cucumber::Messages::PickleTableRow {
3288             $Cucumber::Messages::PickleTableRow::VERSION = '32.2.0';
3289             =head2 Cucumber::Messages::PickleTableRow
3290              
3291             =head3 DESCRIPTION
3292              
3293             Represents the PickleTableRow message in Cucumber's
3294             L.
3295              
3296              
3297              
3298             =head3 ATTRIBUTES
3299              
3300             =cut
3301              
3302 3     3   20 use Moo;
  3         11  
  3         13  
3303             extends 'Cucumber::Messages::Message';
3304              
3305 3     3   1135 use Scalar::Util qw( blessed );
  3         6  
  3         572  
3306              
3307             my %types = (
3308             cells => '[]Cucumber::Messages::PickleTableCell',
3309             );
3310              
3311             # This is a work-around for the fact that Moo doesn't have introspection
3312             # and Perl doesn't have boolean values...
3313             sub _types {
3314 0     0     return \%types;
3315             }
3316              
3317              
3318              
3319             =head4 cells
3320              
3321              
3322             =cut
3323              
3324             has cells =>
3325             (is => 'ro',
3326             required => 1,
3327             default => sub { [] },
3328             );
3329              
3330              
3331             }
3332              
3333             package Cucumber::Messages::PickleTag {
3334             $Cucumber::Messages::PickleTag::VERSION = '32.2.0';
3335             =head2 Cucumber::Messages::PickleTag
3336              
3337             =head3 DESCRIPTION
3338              
3339             Represents the PickleTag message in Cucumber's
3340             L.
3341              
3342             A tag
3343              
3344             =head3 ATTRIBUTES
3345              
3346             =cut
3347              
3348 3     3   22 use Moo;
  3         6  
  3         17  
3349             extends 'Cucumber::Messages::Message';
3350              
3351 3     3   1166 use Scalar::Util qw( blessed );
  3         5  
  3         662  
3352              
3353             my %types = (
3354             name => 'string',
3355             ast_node_id => 'string',
3356             );
3357              
3358             # This is a work-around for the fact that Moo doesn't have introspection
3359             # and Perl doesn't have boolean values...
3360             sub _types {
3361 0     0     return \%types;
3362             }
3363              
3364              
3365              
3366             =head4 name
3367              
3368              
3369             =cut
3370              
3371             has name =>
3372             (is => 'ro',
3373             required => 1,
3374             default => sub { '' },
3375             );
3376              
3377              
3378             =head4 ast_node_id
3379              
3380             Points to the AST node this was created from
3381             =cut
3382              
3383             has ast_node_id =>
3384             (is => 'ro',
3385             required => 1,
3386             default => sub { '' },
3387             );
3388              
3389              
3390             }
3391              
3392             package Cucumber::Messages::Source {
3393             $Cucumber::Messages::Source::VERSION = '32.2.0';
3394             =head2 Cucumber::Messages::Source
3395              
3396             =head3 DESCRIPTION
3397              
3398             Represents the Source message in Cucumber's
3399             L.
3400              
3401             A source file, typically a Gherkin document or Java/Ruby/JavaScript source code
3402              
3403             =head3 ATTRIBUTES
3404              
3405             =cut
3406              
3407 3     3   22 use Moo;
  3         5  
  3         27  
3408             extends 'Cucumber::Messages::Message';
3409              
3410 3     3   1261 use Scalar::Util qw( blessed );
  3         7  
  3         583  
3411              
3412             my %types = (
3413             uri => 'string',
3414             data => 'string',
3415             media_type => '',
3416             );
3417              
3418             # This is a work-around for the fact that Moo doesn't have introspection
3419             # and Perl doesn't have boolean values...
3420             sub _types {
3421 0     0     return \%types;
3422             }
3423              
3424              
3425              
3426             =head4 uri
3427              
3428             The [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier)
3429             of the source, typically a file path relative to the root directory
3430             =cut
3431              
3432             has uri =>
3433             (is => 'ro',
3434             required => 1,
3435             default => sub { '' },
3436             );
3437              
3438              
3439             =head4 data
3440              
3441             The contents of the file
3442             =cut
3443              
3444             has data =>
3445             (is => 'ro',
3446             required => 1,
3447             default => sub { '' },
3448             );
3449              
3450              
3451             =head4 media_type
3452              
3453             The media type of the file. Can be used to specify custom types, such as
3454             text/x.cucumber.gherkin+plain
3455              
3456             Available constants for valid values of this field:
3457              
3458             =over
3459              
3460             =item * MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_PLAIN
3461              
3462             =item * MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_MARKDOWN
3463              
3464             =back
3465              
3466             =cut
3467              
3468              
3469             use constant {
3470 3         423 MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_PLAIN => 'text/x.cucumber.gherkin+plain',
3471             MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_MARKDOWN => 'text/x.cucumber.gherkin+markdown',
3472 3     3   21 };
  3         7  
3473              
3474             has media_type =>
3475             (is => 'ro',
3476             required => 1,
3477             default => sub { MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_PLAIN },
3478             );
3479              
3480              
3481             }
3482              
3483             package Cucumber::Messages::SourceReference {
3484             $Cucumber::Messages::SourceReference::VERSION = '32.2.0';
3485             =head2 Cucumber::Messages::SourceReference
3486              
3487             =head3 DESCRIPTION
3488              
3489             Represents the SourceReference message in Cucumber's
3490             L.
3491              
3492             Points to a [Source](#io.cucumber.messages.Source) identified by `uri` and a
3493             [Location](#io.cucumber.messages.Location) within that file.
3494              
3495             =head3 ATTRIBUTES
3496              
3497             =cut
3498              
3499 3     3   20 use Moo;
  3         6  
  3         25  
3500             extends 'Cucumber::Messages::Message';
3501              
3502 3     3   1195 use Scalar::Util qw( blessed );
  3         6  
  3         539  
3503              
3504             my %types = (
3505             uri => 'string',
3506             java_method => 'Cucumber::Messages::JavaMethod',
3507             java_stack_trace_element => 'Cucumber::Messages::JavaStackTraceElement',
3508             location => 'Cucumber::Messages::Location',
3509             );
3510              
3511             # This is a work-around for the fact that Moo doesn't have introspection
3512             # and Perl doesn't have boolean values...
3513             sub _types {
3514 0     0     return \%types;
3515             }
3516              
3517              
3518              
3519             =head4 uri
3520              
3521              
3522             =cut
3523              
3524             has uri =>
3525             (is => 'ro',
3526             );
3527              
3528              
3529             =head4 java_method
3530              
3531              
3532             =cut
3533              
3534             has java_method =>
3535             (is => 'ro',
3536             );
3537              
3538              
3539             =head4 java_stack_trace_element
3540              
3541              
3542             =cut
3543              
3544             has java_stack_trace_element =>
3545             (is => 'ro',
3546             );
3547              
3548              
3549             =head4 location
3550              
3551              
3552             =cut
3553              
3554             has location =>
3555             (is => 'ro',
3556             );
3557              
3558              
3559             }
3560              
3561             package Cucumber::Messages::JavaMethod {
3562             $Cucumber::Messages::JavaMethod::VERSION = '32.2.0';
3563             =head2 Cucumber::Messages::JavaMethod
3564              
3565             =head3 DESCRIPTION
3566              
3567             Represents the JavaMethod message in Cucumber's
3568             L.
3569              
3570              
3571              
3572             =head3 ATTRIBUTES
3573              
3574             =cut
3575              
3576 3     3   21 use Moo;
  3         6  
  3         25  
3577             extends 'Cucumber::Messages::Message';
3578              
3579 3     3   1246 use Scalar::Util qw( blessed );
  3         18  
  3         799  
3580              
3581             my %types = (
3582             class_name => 'string',
3583             method_name => 'string',
3584             method_parameter_types => '[]string',
3585             );
3586              
3587             # This is a work-around for the fact that Moo doesn't have introspection
3588             # and Perl doesn't have boolean values...
3589             sub _types {
3590 0     0     return \%types;
3591             }
3592              
3593              
3594              
3595             =head4 class_name
3596              
3597              
3598             =cut
3599              
3600             has class_name =>
3601             (is => 'ro',
3602             required => 1,
3603             default => sub { '' },
3604             );
3605              
3606              
3607             =head4 method_name
3608              
3609              
3610             =cut
3611              
3612             has method_name =>
3613             (is => 'ro',
3614             required => 1,
3615             default => sub { '' },
3616             );
3617              
3618              
3619             =head4 method_parameter_types
3620              
3621              
3622             =cut
3623              
3624             has method_parameter_types =>
3625             (is => 'ro',
3626             required => 1,
3627             default => sub { [] },
3628             );
3629              
3630              
3631             }
3632              
3633             package Cucumber::Messages::JavaStackTraceElement {
3634             $Cucumber::Messages::JavaStackTraceElement::VERSION = '32.2.0';
3635             =head2 Cucumber::Messages::JavaStackTraceElement
3636              
3637             =head3 DESCRIPTION
3638              
3639             Represents the JavaStackTraceElement message in Cucumber's
3640             L.
3641              
3642              
3643              
3644             =head3 ATTRIBUTES
3645              
3646             =cut
3647              
3648 3     3   23 use Moo;
  3         7  
  3         14  
3649             extends 'Cucumber::Messages::Message';
3650              
3651 3     3   1161 use Scalar::Util qw( blessed );
  3         6  
  3         812  
3652              
3653             my %types = (
3654             class_name => 'string',
3655             file_name => 'string',
3656             method_name => 'string',
3657             );
3658              
3659             # This is a work-around for the fact that Moo doesn't have introspection
3660             # and Perl doesn't have boolean values...
3661             sub _types {
3662 0     0     return \%types;
3663             }
3664              
3665              
3666              
3667             =head4 class_name
3668              
3669              
3670             =cut
3671              
3672             has class_name =>
3673             (is => 'ro',
3674             required => 1,
3675             default => sub { '' },
3676             );
3677              
3678              
3679             =head4 file_name
3680              
3681              
3682             =cut
3683              
3684             has file_name =>
3685             (is => 'ro',
3686             required => 1,
3687             default => sub { '' },
3688             );
3689              
3690              
3691             =head4 method_name
3692              
3693              
3694             =cut
3695              
3696             has method_name =>
3697             (is => 'ro',
3698             required => 1,
3699             default => sub { '' },
3700             );
3701              
3702              
3703             }
3704              
3705             package Cucumber::Messages::StepDefinition {
3706             $Cucumber::Messages::StepDefinition::VERSION = '32.2.0';
3707             =head2 Cucumber::Messages::StepDefinition
3708              
3709             =head3 DESCRIPTION
3710              
3711             Represents the StepDefinition message in Cucumber's
3712             L.
3713              
3714              
3715              
3716             =head3 ATTRIBUTES
3717              
3718             =cut
3719              
3720 3     3   49 use Moo;
  3         7  
  3         14  
3721             extends 'Cucumber::Messages::Message';
3722              
3723 3     3   1180 use Scalar::Util qw( blessed );
  3         7  
  3         747  
3724              
3725             my %types = (
3726             id => 'string',
3727             pattern => 'Cucumber::Messages::StepDefinitionPattern',
3728             source_reference => 'Cucumber::Messages::SourceReference',
3729             );
3730              
3731             # This is a work-around for the fact that Moo doesn't have introspection
3732             # and Perl doesn't have boolean values...
3733             sub _types {
3734 0     0     return \%types;
3735             }
3736              
3737              
3738              
3739             =head4 id
3740              
3741              
3742             =cut
3743              
3744             has id =>
3745             (is => 'ro',
3746             required => 1,
3747             default => sub { '' },
3748             );
3749              
3750              
3751             =head4 pattern
3752              
3753              
3754             =cut
3755              
3756             has pattern =>
3757             (is => 'ro',
3758             required => 1,
3759             default => sub { Cucumber::Messages::StepDefinitionPattern->new() },
3760             );
3761              
3762              
3763             =head4 source_reference
3764              
3765              
3766             =cut
3767              
3768             has source_reference =>
3769             (is => 'ro',
3770             required => 1,
3771             default => sub { Cucumber::Messages::SourceReference->new() },
3772             );
3773              
3774              
3775             }
3776              
3777             package Cucumber::Messages::StepDefinitionPattern {
3778             $Cucumber::Messages::StepDefinitionPattern::VERSION = '32.2.0';
3779             =head2 Cucumber::Messages::StepDefinitionPattern
3780              
3781             =head3 DESCRIPTION
3782              
3783             Represents the StepDefinitionPattern message in Cucumber's
3784             L.
3785              
3786              
3787              
3788             =head3 ATTRIBUTES
3789              
3790             =cut
3791              
3792 3     3   48 use Moo;
  3         7  
  3         24  
3793             extends 'Cucumber::Messages::Message';
3794              
3795 3     3   1209 use Scalar::Util qw( blessed );
  3         6  
  3         460  
3796              
3797             my %types = (
3798             source => 'string',
3799             type => '',
3800             );
3801              
3802             # This is a work-around for the fact that Moo doesn't have introspection
3803             # and Perl doesn't have boolean values...
3804             sub _types {
3805 0     0     return \%types;
3806             }
3807              
3808              
3809              
3810             =head4 source
3811              
3812              
3813             =cut
3814              
3815             has source =>
3816             (is => 'ro',
3817             required => 1,
3818             default => sub { '' },
3819             );
3820              
3821              
3822             =head4 type
3823              
3824              
3825              
3826             Available constants for valid values of this field:
3827              
3828             =over
3829              
3830             =item * TYPE_CUCUMBER_EXPRESSION
3831              
3832             =item * TYPE_REGULAR_EXPRESSION
3833              
3834             =back
3835              
3836             =cut
3837              
3838              
3839             use constant {
3840 3         471 TYPE_CUCUMBER_EXPRESSION => 'CUCUMBER_EXPRESSION',
3841             TYPE_REGULAR_EXPRESSION => 'REGULAR_EXPRESSION',
3842 3     3   22 };
  3         6  
3843              
3844             has type =>
3845             (is => 'ro',
3846             required => 1,
3847             default => sub { TYPE_CUCUMBER_EXPRESSION },
3848             );
3849              
3850              
3851             }
3852              
3853             package Cucumber::Messages::Suggestion {
3854             $Cucumber::Messages::Suggestion::VERSION = '32.2.0';
3855             =head2 Cucumber::Messages::Suggestion
3856              
3857             =head3 DESCRIPTION
3858              
3859             Represents the Suggestion message in Cucumber's
3860             L.
3861              
3862             A suggested fragment of code to implement an undefined step
3863              
3864             =head3 ATTRIBUTES
3865              
3866             =cut
3867              
3868 3     3   19 use Moo;
  3         7  
  3         13  
3869             extends 'Cucumber::Messages::Message';
3870              
3871 3     3   1276 use Scalar::Util qw( blessed );
  3         8  
  3         729  
3872              
3873             my %types = (
3874             id => 'string',
3875             pickle_step_id => 'string',
3876             snippets => '[]Cucumber::Messages::Snippet',
3877             );
3878              
3879             # This is a work-around for the fact that Moo doesn't have introspection
3880             # and Perl doesn't have boolean values...
3881             sub _types {
3882 0     0     return \%types;
3883             }
3884              
3885              
3886              
3887             =head4 id
3888              
3889             A unique id for this suggestion
3890             =cut
3891              
3892             has id =>
3893             (is => 'ro',
3894             required => 1,
3895             default => sub { '' },
3896             );
3897              
3898              
3899             =head4 pickle_step_id
3900              
3901             The ID of the `PickleStep` this `Suggestion` was created for.
3902             =cut
3903              
3904             has pickle_step_id =>
3905             (is => 'ro',
3906             required => 1,
3907             default => sub { '' },
3908             );
3909              
3910              
3911             =head4 snippets
3912              
3913             A collection of code snippets that could implement the undefined step
3914             =cut
3915              
3916             has snippets =>
3917             (is => 'ro',
3918             required => 1,
3919             default => sub { [] },
3920             );
3921              
3922              
3923             }
3924              
3925             package Cucumber::Messages::Snippet {
3926             $Cucumber::Messages::Snippet::VERSION = '32.2.0';
3927             =head2 Cucumber::Messages::Snippet
3928              
3929             =head3 DESCRIPTION
3930              
3931             Represents the Snippet message in Cucumber's
3932             L.
3933              
3934              
3935              
3936             =head3 ATTRIBUTES
3937              
3938             =cut
3939              
3940 3     3   22 use Moo;
  3         6  
  3         13  
3941             extends 'Cucumber::Messages::Message';
3942              
3943 3     3   1225 use Scalar::Util qw( blessed );
  3         8  
  3         696  
3944              
3945             my %types = (
3946             language => 'string',
3947             code => 'string',
3948             );
3949              
3950             # This is a work-around for the fact that Moo doesn't have introspection
3951             # and Perl doesn't have boolean values...
3952             sub _types {
3953 0     0     return \%types;
3954             }
3955              
3956              
3957              
3958             =head4 language
3959              
3960             The programming language of the code.
3961              
3962             This must be formatted as an all lowercase identifier such that syntax highlighters like [Prism](https://prismjs.com/#supported-languages) or [Highlight.js](https://github.com/highlightjs/highlight.js/blob/main/SUPPORTED_LANGUAGES.md) can recognize it.
3963             For example: `cpp`, `cs`, `go`, `java`, `javascript`, `php`, `python`, `ruby`, `scala`.
3964             =cut
3965              
3966             has language =>
3967             (is => 'ro',
3968             required => 1,
3969             default => sub { '' },
3970             );
3971              
3972              
3973             =head4 code
3974              
3975             A snippet of code
3976             =cut
3977              
3978             has code =>
3979             (is => 'ro',
3980             required => 1,
3981             default => sub { '' },
3982             );
3983              
3984              
3985             }
3986              
3987             package Cucumber::Messages::TestCase {
3988             $Cucumber::Messages::TestCase::VERSION = '32.2.0';
3989             =head2 Cucumber::Messages::TestCase
3990              
3991             =head3 DESCRIPTION
3992              
3993             Represents the TestCase message in Cucumber's
3994             L.
3995              
3996             A `TestCase` contains a sequence of `TestStep`s.
3997              
3998             =head3 ATTRIBUTES
3999              
4000             =cut
4001              
4002 3     3   21 use Moo;
  3         7  
  3         28  
4003             extends 'Cucumber::Messages::Message';
4004              
4005 3     3   1123 use Scalar::Util qw( blessed );
  3         6  
  3         838  
4006              
4007             my %types = (
4008             id => 'string',
4009             pickle_id => 'string',
4010             test_steps => '[]Cucumber::Messages::TestStep',
4011             test_run_started_id => 'string',
4012             );
4013              
4014             # This is a work-around for the fact that Moo doesn't have introspection
4015             # and Perl doesn't have boolean values...
4016             sub _types {
4017 0     0     return \%types;
4018             }
4019              
4020              
4021              
4022             =head4 id
4023              
4024              
4025             =cut
4026              
4027             has id =>
4028             (is => 'ro',
4029             required => 1,
4030             default => sub { '' },
4031             );
4032              
4033              
4034             =head4 pickle_id
4035              
4036             The ID of the `Pickle` this `TestCase` is derived from.
4037             =cut
4038              
4039             has pickle_id =>
4040             (is => 'ro',
4041             required => 1,
4042             default => sub { '' },
4043             );
4044              
4045              
4046             =head4 test_steps
4047              
4048              
4049             =cut
4050              
4051             has test_steps =>
4052             (is => 'ro',
4053             required => 1,
4054             default => sub { [] },
4055             );
4056              
4057              
4058             =head4 test_run_started_id
4059              
4060             Identifier for the test run that this test case belongs to
4061             =cut
4062              
4063             has test_run_started_id =>
4064             (is => 'ro',
4065             );
4066              
4067              
4068             }
4069              
4070             package Cucumber::Messages::Group {
4071             $Cucumber::Messages::Group::VERSION = '32.2.0';
4072             =head2 Cucumber::Messages::Group
4073              
4074             =head3 DESCRIPTION
4075              
4076             Represents the Group message in Cucumber's
4077             L.
4078              
4079              
4080              
4081             =head3 ATTRIBUTES
4082              
4083             =cut
4084              
4085 3     3   22 use Moo;
  3         7  
  3         13  
4086             extends 'Cucumber::Messages::Message';
4087              
4088 3     3   1169 use Scalar::Util qw( blessed );
  3         6  
  3         582  
4089              
4090             my %types = (
4091             children => '[]Cucumber::Messages::Group',
4092             start => 'number',
4093             value => 'string',
4094             );
4095              
4096             # This is a work-around for the fact that Moo doesn't have introspection
4097             # and Perl doesn't have boolean values...
4098             sub _types {
4099 0     0     return \%types;
4100             }
4101              
4102              
4103              
4104             =head4 children
4105              
4106             The nested capture groups of an argument.
4107             Absent if the group has no nested capture groups.
4108             =cut
4109              
4110             has children =>
4111             (is => 'ro',
4112             );
4113              
4114              
4115             =head4 start
4116              
4117              
4118             =cut
4119              
4120             has start =>
4121             (is => 'ro',
4122             );
4123              
4124              
4125             =head4 value
4126              
4127              
4128             =cut
4129              
4130             has value =>
4131             (is => 'ro',
4132             );
4133              
4134              
4135             }
4136              
4137             package Cucumber::Messages::StepMatchArgument {
4138             $Cucumber::Messages::StepMatchArgument::VERSION = '32.2.0';
4139             =head2 Cucumber::Messages::StepMatchArgument
4140              
4141             =head3 DESCRIPTION
4142              
4143             Represents the StepMatchArgument message in Cucumber's
4144             L.
4145              
4146             Represents a single argument extracted from a step match and passed to a step definition.
4147             This is used for the following purposes:
4148             - Construct an argument to pass to a step definition (possibly through a parameter type transform)
4149             - Highlight the matched parameter in rich formatters such as the HTML formatter
4150              
4151             This message closely matches the `Argument` class in the `cucumber-expressions` library.
4152              
4153             =head3 ATTRIBUTES
4154              
4155             =cut
4156              
4157 3     3   22 use Moo;
  3         5  
  3         30  
4158             extends 'Cucumber::Messages::Message';
4159              
4160 3     3   1202 use Scalar::Util qw( blessed );
  3         6  
  3         643  
4161              
4162             my %types = (
4163             group => 'Cucumber::Messages::Group',
4164             parameter_type_name => 'string',
4165             );
4166              
4167             # This is a work-around for the fact that Moo doesn't have introspection
4168             # and Perl doesn't have boolean values...
4169             sub _types {
4170 0     0     return \%types;
4171             }
4172              
4173              
4174              
4175             =head4 group
4176              
4177             Represents the outermost capture group of an argument. This message closely matches the
4178             `Group` class in the `cucumber-expressions` library.
4179             =cut
4180              
4181             has group =>
4182             (is => 'ro',
4183             required => 1,
4184             default => sub { Cucumber::Messages::Group->new() },
4185             );
4186              
4187              
4188             =head4 parameter_type_name
4189              
4190              
4191             =cut
4192              
4193             has parameter_type_name =>
4194             (is => 'ro',
4195             );
4196              
4197              
4198             }
4199              
4200             package Cucumber::Messages::StepMatchArgumentsList {
4201             $Cucumber::Messages::StepMatchArgumentsList::VERSION = '32.2.0';
4202             =head2 Cucumber::Messages::StepMatchArgumentsList
4203              
4204             =head3 DESCRIPTION
4205              
4206             Represents the StepMatchArgumentsList message in Cucumber's
4207             L.
4208              
4209              
4210              
4211             =head3 ATTRIBUTES
4212              
4213             =cut
4214              
4215 3     3   22 use Moo;
  3         6  
  3         15  
4216             extends 'Cucumber::Messages::Message';
4217              
4218 3     3   1377 use Scalar::Util qw( blessed );
  3         5  
  3         680  
4219              
4220             my %types = (
4221             step_match_arguments => '[]Cucumber::Messages::StepMatchArgument',
4222             );
4223              
4224             # This is a work-around for the fact that Moo doesn't have introspection
4225             # and Perl doesn't have boolean values...
4226             sub _types {
4227 0     0     return \%types;
4228             }
4229              
4230              
4231              
4232             =head4 step_match_arguments
4233              
4234              
4235             =cut
4236              
4237             has step_match_arguments =>
4238             (is => 'ro',
4239             required => 1,
4240             default => sub { [] },
4241             );
4242              
4243              
4244             }
4245              
4246             package Cucumber::Messages::TestStep {
4247             $Cucumber::Messages::TestStep::VERSION = '32.2.0';
4248             =head2 Cucumber::Messages::TestStep
4249              
4250             =head3 DESCRIPTION
4251              
4252             Represents the TestStep message in Cucumber's
4253             L.
4254              
4255             A `TestStep` is derived from either a `PickleStep` combined with a `StepDefinition`, or from a `Hook`.
4256              
4257             When derived from a PickleStep:
4258             * For `UNDEFINED` steps `stepDefinitionIds` and `stepMatchArgumentsLists` will be empty.
4259             * For `AMBIGUOUS` steps, there will be multiple entries in `stepDefinitionIds` and `stepMatchArgumentsLists`. The first entry in the stepMatchArgumentsLists holds the list of arguments for the first matching step definition, the second entry for the second, etc
4260              
4261             =head3 ATTRIBUTES
4262              
4263             =cut
4264              
4265 3     3   23 use Moo;
  3         7  
  3         15  
4266             extends 'Cucumber::Messages::Message';
4267              
4268 3     3   1181 use Scalar::Util qw( blessed );
  3         8  
  3         771  
4269              
4270             my %types = (
4271             hook_id => 'string',
4272             id => 'string',
4273             pickle_step_id => 'string',
4274             step_definition_ids => '[]string',
4275             step_match_arguments_lists => '[]Cucumber::Messages::StepMatchArgumentsList',
4276             );
4277              
4278             # This is a work-around for the fact that Moo doesn't have introspection
4279             # and Perl doesn't have boolean values...
4280             sub _types {
4281 0     0     return \%types;
4282             }
4283              
4284              
4285              
4286             =head4 hook_id
4287              
4288             Pointer to the `Hook` (if derived from a Hook)
4289             =cut
4290              
4291             has hook_id =>
4292             (is => 'ro',
4293             );
4294              
4295              
4296             =head4 id
4297              
4298              
4299             =cut
4300              
4301             has id =>
4302             (is => 'ro',
4303             required => 1,
4304             default => sub { '' },
4305             );
4306              
4307              
4308             =head4 pickle_step_id
4309              
4310             Pointer to the `PickleStep` (if derived from a `PickleStep`)
4311             =cut
4312              
4313             has pickle_step_id =>
4314             (is => 'ro',
4315             );
4316              
4317              
4318             =head4 step_definition_ids
4319              
4320             Pointer to all the matching `StepDefinition`s (if derived from a `PickleStep`).
4321              
4322             Each element represents a matching step definition.
4323             =cut
4324              
4325             has step_definition_ids =>
4326             (is => 'ro',
4327             );
4328              
4329              
4330             =head4 step_match_arguments_lists
4331              
4332             A list of list of StepMatchArgument (if derived from a `PickleStep`).
4333              
4334             Each element represents the arguments for a matching step definition.
4335             =cut
4336              
4337             has step_match_arguments_lists =>
4338             (is => 'ro',
4339             );
4340              
4341              
4342             }
4343              
4344             package Cucumber::Messages::TestCaseFinished {
4345             $Cucumber::Messages::TestCaseFinished::VERSION = '32.2.0';
4346             =head2 Cucumber::Messages::TestCaseFinished
4347              
4348             =head3 DESCRIPTION
4349              
4350             Represents the TestCaseFinished message in Cucumber's
4351             L.
4352              
4353              
4354              
4355             =head3 ATTRIBUTES
4356              
4357             =cut
4358              
4359 3     3   24 use Moo;
  3         6  
  3         14  
4360             extends 'Cucumber::Messages::Message';
4361              
4362 3     3   1338 use Scalar::Util qw( blessed );
  3         8  
  3         847  
4363              
4364             my %types = (
4365             test_case_started_id => 'string',
4366             timestamp => 'Cucumber::Messages::Timestamp',
4367             will_be_retried => 'boolean',
4368             );
4369              
4370             # This is a work-around for the fact that Moo doesn't have introspection
4371             # and Perl doesn't have boolean values...
4372             sub _types {
4373 0     0     return \%types;
4374             }
4375              
4376              
4377              
4378             =head4 test_case_started_id
4379              
4380              
4381             =cut
4382              
4383             has test_case_started_id =>
4384             (is => 'ro',
4385             required => 1,
4386             default => sub { '' },
4387             );
4388              
4389              
4390             =head4 timestamp
4391              
4392              
4393             =cut
4394              
4395             has timestamp =>
4396             (is => 'ro',
4397             required => 1,
4398             default => sub { Cucumber::Messages::Timestamp->new() },
4399             );
4400              
4401              
4402             =head4 will_be_retried
4403              
4404              
4405             =cut
4406              
4407             has will_be_retried =>
4408             (is => 'ro',
4409             required => 1,
4410             default => sub { '' },
4411             );
4412              
4413              
4414             }
4415              
4416             package Cucumber::Messages::TestCaseStarted {
4417             $Cucumber::Messages::TestCaseStarted::VERSION = '32.2.0';
4418             =head2 Cucumber::Messages::TestCaseStarted
4419              
4420             =head3 DESCRIPTION
4421              
4422             Represents the TestCaseStarted message in Cucumber's
4423             L.
4424              
4425              
4426              
4427             =head3 ATTRIBUTES
4428              
4429             =cut
4430              
4431 3     3   23 use Moo;
  3         50  
  3         16  
4432             extends 'Cucumber::Messages::Message';
4433              
4434 3     3   1177 use Scalar::Util qw( blessed );
  3         7  
  3         977  
4435              
4436             my %types = (
4437             attempt => 'number',
4438             id => 'string',
4439             test_case_id => 'string',
4440             worker_id => 'string',
4441             timestamp => 'Cucumber::Messages::Timestamp',
4442             );
4443              
4444             # This is a work-around for the fact that Moo doesn't have introspection
4445             # and Perl doesn't have boolean values...
4446             sub _types {
4447 0     0     return \%types;
4448             }
4449              
4450              
4451              
4452             =head4 attempt
4453              
4454             The first attempt should have value 0, and for each retry the value
4455             should increase by 1.
4456             =cut
4457              
4458             has attempt =>
4459             (is => 'ro',
4460             required => 1,
4461             default => sub { 0 },
4462             );
4463              
4464              
4465             =head4 id
4466              
4467             Because a `TestCase` can be run multiple times (in case of a retry),
4468             we use this field to group messages relating to the same attempt.
4469             =cut
4470              
4471             has id =>
4472             (is => 'ro',
4473             required => 1,
4474             default => sub { '' },
4475             );
4476              
4477              
4478             =head4 test_case_id
4479              
4480              
4481             =cut
4482              
4483             has test_case_id =>
4484             (is => 'ro',
4485             required => 1,
4486             default => sub { '' },
4487             );
4488              
4489              
4490             =head4 worker_id
4491              
4492             An identifier for the worker process running this test case, if test cases are being run in parallel. The identifier will be unique per worker, but no particular format is defined - it could be an index, uuid, machine name etc - and as such should be assumed that it's not human readable.
4493             =cut
4494              
4495             has worker_id =>
4496             (is => 'ro',
4497             );
4498              
4499              
4500             =head4 timestamp
4501              
4502              
4503             =cut
4504              
4505             has timestamp =>
4506             (is => 'ro',
4507             required => 1,
4508             default => sub { Cucumber::Messages::Timestamp->new() },
4509             );
4510              
4511              
4512             }
4513              
4514             package Cucumber::Messages::TestRunFinished {
4515             $Cucumber::Messages::TestRunFinished::VERSION = '32.2.0';
4516             =head2 Cucumber::Messages::TestRunFinished
4517              
4518             =head3 DESCRIPTION
4519              
4520             Represents the TestRunFinished message in Cucumber's
4521             L.
4522              
4523              
4524              
4525             =head3 ATTRIBUTES
4526              
4527             =cut
4528              
4529 3     3   23 use Moo;
  3         5  
  3         13  
4530             extends 'Cucumber::Messages::Message';
4531              
4532 3     3   1177 use Scalar::Util qw( blessed );
  3         21  
  3         778  
4533              
4534             my %types = (
4535             message => 'string',
4536             success => 'boolean',
4537             timestamp => 'Cucumber::Messages::Timestamp',
4538             exception => 'Cucumber::Messages::Exception',
4539             test_run_started_id => 'string',
4540             );
4541              
4542             # This is a work-around for the fact that Moo doesn't have introspection
4543             # and Perl doesn't have boolean values...
4544             sub _types {
4545 0     0     return \%types;
4546             }
4547              
4548              
4549              
4550             =head4 message
4551              
4552             An informative message about the test run. Typically additional information about failure, but not necessarily.
4553             =cut
4554              
4555             has message =>
4556             (is => 'ro',
4557             );
4558              
4559              
4560             =head4 success
4561              
4562             A test run is successful if all steps are either passed or skipped, all before/after hooks passed and no other exceptions where thrown.
4563             =cut
4564              
4565             has success =>
4566             (is => 'ro',
4567             required => 1,
4568             default => sub { '' },
4569             );
4570              
4571              
4572             =head4 timestamp
4573              
4574             Timestamp when the TestRun is finished
4575             =cut
4576              
4577             has timestamp =>
4578             (is => 'ro',
4579             required => 1,
4580             default => sub { Cucumber::Messages::Timestamp->new() },
4581             );
4582              
4583              
4584             =head4 exception
4585              
4586             Any exception thrown during the test run, if any. Does not include exceptions thrown while executing steps.
4587             =cut
4588              
4589             has exception =>
4590             (is => 'ro',
4591             );
4592              
4593              
4594             =head4 test_run_started_id
4595              
4596              
4597             =cut
4598              
4599             has test_run_started_id =>
4600             (is => 'ro',
4601             );
4602              
4603              
4604             }
4605              
4606             package Cucumber::Messages::TestRunHookFinished {
4607             $Cucumber::Messages::TestRunHookFinished::VERSION = '32.2.0';
4608             =head2 Cucumber::Messages::TestRunHookFinished
4609              
4610             =head3 DESCRIPTION
4611              
4612             Represents the TestRunHookFinished message in Cucumber's
4613             L.
4614              
4615              
4616              
4617             =head3 ATTRIBUTES
4618              
4619             =cut
4620              
4621 3     3   22 use Moo;
  3         24  
  3         14  
4622             extends 'Cucumber::Messages::Message';
4623              
4624 3     3   1257 use Scalar::Util qw( blessed );
  3         6  
  3         826  
4625              
4626             my %types = (
4627             test_run_hook_started_id => 'string',
4628             result => 'Cucumber::Messages::TestStepResult',
4629             timestamp => 'Cucumber::Messages::Timestamp',
4630             );
4631              
4632             # This is a work-around for the fact that Moo doesn't have introspection
4633             # and Perl doesn't have boolean values...
4634             sub _types {
4635 0     0     return \%types;
4636             }
4637              
4638              
4639              
4640             =head4 test_run_hook_started_id
4641              
4642             Identifier for the hook execution that has finished
4643             =cut
4644              
4645             has test_run_hook_started_id =>
4646             (is => 'ro',
4647             required => 1,
4648             default => sub { '' },
4649             );
4650              
4651              
4652             =head4 result
4653              
4654              
4655             =cut
4656              
4657             has result =>
4658             (is => 'ro',
4659             required => 1,
4660             default => sub { Cucumber::Messages::TestStepResult->new() },
4661             );
4662              
4663              
4664             =head4 timestamp
4665              
4666              
4667             =cut
4668              
4669             has timestamp =>
4670             (is => 'ro',
4671             required => 1,
4672             default => sub { Cucumber::Messages::Timestamp->new() },
4673             );
4674              
4675              
4676             }
4677              
4678             package Cucumber::Messages::TestRunHookStarted {
4679             $Cucumber::Messages::TestRunHookStarted::VERSION = '32.2.0';
4680             =head2 Cucumber::Messages::TestRunHookStarted
4681              
4682             =head3 DESCRIPTION
4683              
4684             Represents the TestRunHookStarted message in Cucumber's
4685             L.
4686              
4687              
4688              
4689             =head3 ATTRIBUTES
4690              
4691             =cut
4692              
4693 3     3   21 use Moo;
  3         17  
  3         14  
4694             extends 'Cucumber::Messages::Message';
4695              
4696 3     3   1226 use Scalar::Util qw( blessed );
  3         6  
  3         946  
4697              
4698             my %types = (
4699             id => 'string',
4700             test_run_started_id => 'string',
4701             hook_id => 'string',
4702             worker_id => 'string',
4703             timestamp => 'Cucumber::Messages::Timestamp',
4704             );
4705              
4706             # This is a work-around for the fact that Moo doesn't have introspection
4707             # and Perl doesn't have boolean values...
4708             sub _types {
4709 0     0     return \%types;
4710             }
4711              
4712              
4713              
4714             =head4 id
4715              
4716             Unique identifier for this hook execution
4717             =cut
4718              
4719             has id =>
4720             (is => 'ro',
4721             required => 1,
4722             default => sub { '' },
4723             );
4724              
4725              
4726             =head4 test_run_started_id
4727              
4728             Identifier for the test run that this hook execution belongs to
4729             =cut
4730              
4731             has test_run_started_id =>
4732             (is => 'ro',
4733             required => 1,
4734             default => sub { '' },
4735             );
4736              
4737              
4738             =head4 hook_id
4739              
4740             Identifier for the hook that will be executed
4741             =cut
4742              
4743             has hook_id =>
4744             (is => 'ro',
4745             required => 1,
4746             default => sub { '' },
4747             );
4748              
4749              
4750             =head4 worker_id
4751              
4752             An identifier for the worker process running this hook, if parallel workers are in use. The identifier will be unique per worker, but no particular format is defined - it could be an index, uuid, machine name etc - and as such should be assumed that it's not human readable.
4753             =cut
4754              
4755             has worker_id =>
4756             (is => 'ro',
4757             );
4758              
4759              
4760             =head4 timestamp
4761              
4762              
4763             =cut
4764              
4765             has timestamp =>
4766             (is => 'ro',
4767             required => 1,
4768             default => sub { Cucumber::Messages::Timestamp->new() },
4769             );
4770              
4771              
4772             }
4773              
4774             package Cucumber::Messages::TestRunStarted {
4775             $Cucumber::Messages::TestRunStarted::VERSION = '32.2.0';
4776             =head2 Cucumber::Messages::TestRunStarted
4777              
4778             =head3 DESCRIPTION
4779              
4780             Represents the TestRunStarted message in Cucumber's
4781             L.
4782              
4783              
4784              
4785             =head3 ATTRIBUTES
4786              
4787             =cut
4788              
4789 3     3   30 use Moo;
  3         7  
  3         13  
4790             extends 'Cucumber::Messages::Message';
4791              
4792 3     3   1216 use Scalar::Util qw( blessed );
  3         5  
  3         640  
4793              
4794             my %types = (
4795             timestamp => 'Cucumber::Messages::Timestamp',
4796             id => 'string',
4797             );
4798              
4799             # This is a work-around for the fact that Moo doesn't have introspection
4800             # and Perl doesn't have boolean values...
4801             sub _types {
4802 0     0     return \%types;
4803             }
4804              
4805              
4806              
4807             =head4 timestamp
4808              
4809              
4810             =cut
4811              
4812             has timestamp =>
4813             (is => 'ro',
4814             required => 1,
4815             default => sub { Cucumber::Messages::Timestamp->new() },
4816             );
4817              
4818              
4819             =head4 id
4820              
4821              
4822             =cut
4823              
4824             has id =>
4825             (is => 'ro',
4826             );
4827              
4828              
4829             }
4830              
4831             package Cucumber::Messages::TestStepFinished {
4832             $Cucumber::Messages::TestStepFinished::VERSION = '32.2.0';
4833             =head2 Cucumber::Messages::TestStepFinished
4834              
4835             =head3 DESCRIPTION
4836              
4837             Represents the TestStepFinished message in Cucumber's
4838             L.
4839              
4840              
4841              
4842             =head3 ATTRIBUTES
4843              
4844             =cut
4845              
4846 3     3   20 use Moo;
  3         7  
  3         22  
4847             extends 'Cucumber::Messages::Message';
4848              
4849 3     3   1169 use Scalar::Util qw( blessed );
  3         7  
  3         879  
4850              
4851             my %types = (
4852             test_case_started_id => 'string',
4853             test_step_id => 'string',
4854             test_step_result => 'Cucumber::Messages::TestStepResult',
4855             timestamp => 'Cucumber::Messages::Timestamp',
4856             );
4857              
4858             # This is a work-around for the fact that Moo doesn't have introspection
4859             # and Perl doesn't have boolean values...
4860             sub _types {
4861 0     0     return \%types;
4862             }
4863              
4864              
4865              
4866             =head4 test_case_started_id
4867              
4868              
4869             =cut
4870              
4871             has test_case_started_id =>
4872             (is => 'ro',
4873             required => 1,
4874             default => sub { '' },
4875             );
4876              
4877              
4878             =head4 test_step_id
4879              
4880              
4881             =cut
4882              
4883             has test_step_id =>
4884             (is => 'ro',
4885             required => 1,
4886             default => sub { '' },
4887             );
4888              
4889              
4890             =head4 test_step_result
4891              
4892              
4893             =cut
4894              
4895             has test_step_result =>
4896             (is => 'ro',
4897             required => 1,
4898             default => sub { Cucumber::Messages::TestStepResult->new() },
4899             );
4900              
4901              
4902             =head4 timestamp
4903              
4904              
4905             =cut
4906              
4907             has timestamp =>
4908             (is => 'ro',
4909             required => 1,
4910             default => sub { Cucumber::Messages::Timestamp->new() },
4911             );
4912              
4913              
4914             }
4915              
4916             package Cucumber::Messages::TestStepResult {
4917             $Cucumber::Messages::TestStepResult::VERSION = '32.2.0';
4918             =head2 Cucumber::Messages::TestStepResult
4919              
4920             =head3 DESCRIPTION
4921              
4922             Represents the TestStepResult message in Cucumber's
4923             L.
4924              
4925              
4926              
4927             =head3 ATTRIBUTES
4928              
4929             =cut
4930              
4931 3     3   21 use Moo;
  3         6  
  3         13  
4932             extends 'Cucumber::Messages::Message';
4933              
4934 3     3   1257 use Scalar::Util qw( blessed );
  3         15  
  3         682  
4935              
4936             my %types = (
4937             duration => 'Cucumber::Messages::Duration',
4938             message => 'string',
4939             status => '',
4940             exception => 'Cucumber::Messages::Exception',
4941             );
4942              
4943             # This is a work-around for the fact that Moo doesn't have introspection
4944             # and Perl doesn't have boolean values...
4945             sub _types {
4946 0     0     return \%types;
4947             }
4948              
4949              
4950              
4951             =head4 duration
4952              
4953              
4954             =cut
4955              
4956             has duration =>
4957             (is => 'ro',
4958             required => 1,
4959             default => sub { Cucumber::Messages::Duration->new() },
4960             );
4961              
4962              
4963             =head4 message
4964              
4965             An arbitrary bit of information that explains this result. If there was an exception, this should include a stringified representation of it including type, message and stack trace (the exact format will vary by platform).
4966             =cut
4967              
4968             has message =>
4969             (is => 'ro',
4970             );
4971              
4972              
4973             =head4 status
4974              
4975              
4976              
4977             Available constants for valid values of this field:
4978              
4979             =over
4980              
4981             =item * STATUS_UNKNOWN
4982              
4983             =item * STATUS_PASSED
4984              
4985             =item * STATUS_SKIPPED
4986              
4987             =item * STATUS_PENDING
4988              
4989             =item * STATUS_UNDEFINED
4990              
4991             =item * STATUS_AMBIGUOUS
4992              
4993             =item * STATUS_FAILED
4994              
4995             =back
4996              
4997             =cut
4998              
4999              
5000             use constant {
5001 3         807 STATUS_UNKNOWN => 'UNKNOWN',
5002             STATUS_PASSED => 'PASSED',
5003             STATUS_SKIPPED => 'SKIPPED',
5004             STATUS_PENDING => 'PENDING',
5005             STATUS_UNDEFINED => 'UNDEFINED',
5006             STATUS_AMBIGUOUS => 'AMBIGUOUS',
5007             STATUS_FAILED => 'FAILED',
5008 3     3   24 };
  3         6  
5009              
5010             has status =>
5011             (is => 'ro',
5012             required => 1,
5013             default => sub { STATUS_UNKNOWN },
5014             );
5015              
5016              
5017             =head4 exception
5018              
5019             Exception thrown while executing this step, if any.
5020             =cut
5021              
5022             has exception =>
5023             (is => 'ro',
5024             );
5025              
5026              
5027             }
5028              
5029             package Cucumber::Messages::TestStepStarted {
5030             $Cucumber::Messages::TestStepStarted::VERSION = '32.2.0';
5031             =head2 Cucumber::Messages::TestStepStarted
5032              
5033             =head3 DESCRIPTION
5034              
5035             Represents the TestStepStarted message in Cucumber's
5036             L.
5037              
5038              
5039              
5040             =head3 ATTRIBUTES
5041              
5042             =cut
5043              
5044 3     3   23 use Moo;
  3         6  
  3         16  
5045             extends 'Cucumber::Messages::Message';
5046              
5047 3     3   1234 use Scalar::Util qw( blessed );
  3         7  
  3         776  
5048              
5049             my %types = (
5050             test_case_started_id => 'string',
5051             test_step_id => 'string',
5052             timestamp => 'Cucumber::Messages::Timestamp',
5053             );
5054              
5055             # This is a work-around for the fact that Moo doesn't have introspection
5056             # and Perl doesn't have boolean values...
5057             sub _types {
5058 0     0     return \%types;
5059             }
5060              
5061              
5062              
5063             =head4 test_case_started_id
5064              
5065              
5066             =cut
5067              
5068             has test_case_started_id =>
5069             (is => 'ro',
5070             required => 1,
5071             default => sub { '' },
5072             );
5073              
5074              
5075             =head4 test_step_id
5076              
5077              
5078             =cut
5079              
5080             has test_step_id =>
5081             (is => 'ro',
5082             required => 1,
5083             default => sub { '' },
5084             );
5085              
5086              
5087             =head4 timestamp
5088              
5089              
5090             =cut
5091              
5092             has timestamp =>
5093             (is => 'ro',
5094             required => 1,
5095             default => sub { Cucumber::Messages::Timestamp->new() },
5096             );
5097              
5098              
5099             }
5100              
5101             package Cucumber::Messages::Timestamp {
5102             $Cucumber::Messages::Timestamp::VERSION = '32.2.0';
5103             =head2 Cucumber::Messages::Timestamp
5104              
5105             =head3 DESCRIPTION
5106              
5107             Represents the Timestamp message in Cucumber's
5108             L.
5109              
5110              
5111              
5112             =head3 ATTRIBUTES
5113              
5114             =cut
5115              
5116 3     3   23 use Moo;
  3         5  
  3         12  
5117             extends 'Cucumber::Messages::Message';
5118              
5119 3     3   1228 use Scalar::Util qw( blessed );
  3         7  
  3         773  
5120              
5121             my %types = (
5122             seconds => 'number',
5123             nanos => 'number',
5124             );
5125              
5126             # This is a work-around for the fact that Moo doesn't have introspection
5127             # and Perl doesn't have boolean values...
5128             sub _types {
5129 0     0     return \%types;
5130             }
5131              
5132              
5133              
5134             =head4 seconds
5135              
5136             Represents seconds of UTC time since Unix epoch
5137             1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
5138             9999-12-31T23:59:59Z inclusive.
5139             =cut
5140              
5141             has seconds =>
5142             (is => 'ro',
5143             required => 1,
5144             default => sub { 0 },
5145             );
5146              
5147              
5148             =head4 nanos
5149              
5150             Non-negative fractions of a second at nanosecond resolution. Negative
5151             second values with fractions must still have non-negative nanos values
5152             that count forward in time. Must be from 0 to 999,999,999
5153             inclusive.
5154             =cut
5155              
5156             has nanos =>
5157             (is => 'ro',
5158             required => 1,
5159             default => sub { 0 },
5160             );
5161              
5162              
5163             }
5164              
5165             package Cucumber::Messages::UndefinedParameterType {
5166             $Cucumber::Messages::UndefinedParameterType::VERSION = '32.2.0';
5167             =head2 Cucumber::Messages::UndefinedParameterType
5168              
5169             =head3 DESCRIPTION
5170              
5171             Represents the UndefinedParameterType message in Cucumber's
5172             L.
5173              
5174              
5175              
5176             =head3 ATTRIBUTES
5177              
5178             =cut
5179              
5180 3     3   22 use Moo;
  3         7  
  3         13  
5181             extends 'Cucumber::Messages::Message';
5182              
5183 3     3   1223 use Scalar::Util qw( blessed );
  3         6  
  3         1619  
5184              
5185             my %types = (
5186             expression => 'string',
5187             name => 'string',
5188             );
5189              
5190             # This is a work-around for the fact that Moo doesn't have introspection
5191             # and Perl doesn't have boolean values...
5192             sub _types {
5193 0     0     return \%types;
5194             }
5195              
5196              
5197              
5198             =head4 expression
5199              
5200              
5201             =cut
5202              
5203             has expression =>
5204             (is => 'ro',
5205             required => 1,
5206             default => sub { '' },
5207             );
5208              
5209              
5210             =head4 name
5211              
5212              
5213             =cut
5214              
5215             has name =>
5216             (is => 'ro',
5217             required => 1,
5218             default => sub { '' },
5219             );
5220              
5221              
5222             }
5223              
5224             1;
5225              
5226             __END__