Code Monkey home page Code Monkey logo

p6-data-dump-tree's Introduction

Data::Dump::Tree

Build Status

For perl6

Data::Dump::Tree - Renders data structures in a tree fashion with colors

Some blog entries you may want to look at:

http://blogs.perl.org/users/nadim_khemir/2017/08/perl-6-datadumptree-version-15.html

http://blogs.perl.org/users/nadim_khemir/2017/08/take-a-walk-on-the-c-side.html

https://perl6advent.wordpress.com/2016/12/21/show-me-the-data/

Imgur

Warning: This module is developed and tested with the latest rakudo. It may not work or install properly with your version of rakudo, there is a test suite run to check its fitness.

NAME

Data::Dump::Tree - Renders data structures as a tree

SYNOPSIS

use Data::Dump::Tree ;

ddt @your_data ;

my $d = Data::Dump::Tree.new(...) ;
$d.ddt: @your_data ;

$d does role { ... } ;
$d.ddt: @your_data ;

DESCRIPTION

Data::Dump::Tree renders your data structures as a tree for legibility.

It also can:

  • colors the output if you install Term::ANSIColor (highly recommended)

  • filter the data before rendering it

  • display two data structures side by side (DDTR::MultiColumns)

  • display the difference between two data structures (DDTR::Diff)

  • generate DHTML output (DDTR::DHTML)

  • display an interactive folding data structure (DDTR::Folding)

  • display parts of the data structure Horizontally (see :flat)

  • show NativeCall data types and representations (see int32 in examples/)

  • be used to "visit" a data structure and call callbacks you define

INTERFACE

sub ddt $data_to_dump, [$data_to_dump2, ...] :adverb, :named_argument, ...

Renders $data_to_dump

This interface accepts the following adverbs:

  • :print prints the rendered data, the default befhavior without adverb

  • :note 'note's the rendered data

  • :get returns the rendered data as a single string

  • :get_lines returns the rendering in its native format

  • :get_lines_integrated returns a list of rendered lines

  • :fold opens a Terminal::Print interface, module must be installed

  • :remote sends a rendering the to a listener

See examples/ddt.pl and ddt_receive.pl

  • :remote_fold sends a foldable rendering to a listener

See examples/remote/ddt_fold_send.pl and ddt_fold_receive.pl.

method ddt: $data_to_dump, [$data_to_dump2, ...], :adverb, :named_argument, ...

Renders $data_to_dump, see above for a list of adverbs.

USAGE

use Data::Dump::Tree ;

class MyClass { has Int $.size ; has Str $.name }

my $s = [
    'text',
    Rat.new(31, 10),
    {
	    a => 1,
	    b => 'string',
    },
    MyClass.new(:size(6), :name<P6 class>),
    'aaa' ~~ m:g/(a)/,
    ] ;

ddt $s, :title<A complex structure> ;

ddt $s, :!color ;

Output

A complex structure [5] @0
├ 0 = text.Str
├ 1 = 3.1 (31/10).Rat
├ 2 = {2} @1
│ ├ a => 1
│ └ b => string.Str
├ 3 = .MyClass @2
│ ├ $.size = 6
│ └ $.name = P6 class.Str
└ 4 = (3) @3
  ├ 0 = a[0]
  ├ 1 = a[1]
  └ 2 = a[2]

:caller and method ddt_backtrace: $backtrace = True

if :caller is given as an argument, the call site is added to the title

if you call ddt_backtrace, all the calls to method ddt, or sub ddt, will display a call stack.

Rendering

Each line of output consists 6 elements.

Data::Dump::Tree (DDT) has a default render mode for all data types but you can greatly influence what and how things are rendered.

Rendering elements

tree   binder  type     address 
|      |       |        |
v      v       v        v

|- key = value .MyClass @2

tree (glyphs)

The tree shows the relationship between the data elements. Data is indented under its container.

DDT default tree rendering makes it easy to see relationship between the elements of your data structure but you can influence its rendering.

key

The key is the name of the element being displayed; in the examples above the container is an array; Data:Dump::Tree uses the index of the element as the key its key. IE: '0', '1', '2', ...

binder

The string displayed between the key and the value.

value

The element's value; Data::Dump::Tree renders "terminal" variables, eg: Str, Int, Rat. Container have no value, but a content.

Type

The element's type with a '.' prepended. IE: '.Str', '.MyClass'

Data::Dump::Tree will render some types specifically:

  • Ints, and Bools, the type is not displayes to reduce noise

  • Hashes as {n} where n is the number of element of the hash

  • Arrays as [n]

  • Lists as (n)

  • Sets as .Set(n)

  • Sequences as .Seq(n) or .Seq(*) when lazy.

You control if sequences are rendered vertically or horizontally, how much of the sequence is rendered and if lazy sequences are rendered (and how many elements for lazy sequences).

Check examples/sequences.pl as well as the implementation in lib/Data/Dump/Tree/DescribeBaseObjects.pm.

  • Matches as [x..y] where x..y is the match range

See Match objects in the roles section below for configuration of the Match objects rendering.

address

The Data::Dump::Tree address is added to every container in the form of a '@' and an index that is incremented for each container. If a container is found multiple times in the output, it will be rendered as @address once then as a reference as §address

Containers can be named using set_element_name prior to rendering.

my $d = Data::Dump::Tree.new ;

$d.set_element_name: $s[5], 'some list' ;
$d.set_element_name: @a, 'some array' ;

$d.ddt: $s ;

A container's name will be displayed next to his address.

Configuration and Overrides

There are multiple ways to configure the Dumper. You can pass a configuration to the ddt() or create a dumper object with your configuration.

# subroutine interface
ddt $s, :titlei<text>, :width(115), :!color  ;

# basic object
my $dumper = Data::Dump::Tree.new ;

# pass you configuration at every call
$dumper.ddt: $s, :width(115), :!color ;

# configure object at creation time
my $dumper = Data::Dump::Tree.new: :width(79) ;

# use as configured
$dumper.ddt: $s ;

# or with a call time configuration override
$dumper.ddt: $s, :width(115), :max_depth(3) ;


# see roles for roles configuration

The example directory contain a lot of examples. Read and run the examples to learn how to use DDT.

colors

$color = True

Coloring is on if Term::ANSIColor is installed.

Setting this option to False forces the output to be monochrome.

ddt $s, :!color ;

%colors

You can pass your own colors. The default are:

%.colors =
    <
    ddt_address blue     perl_address yellow  link   green
    header      magenta  key         cyan     binder cyan
    value       reset

    gl_0 yellow   gl_1 reset   gl_2 green   gl_3 red
    > ;

Where colors are ANSI colors. reset means the default color.

By default the tree will not be colored and the key and binder use colors 'key' and 'binder'. For renderings with many and very long continuation lines, having colored glyphs and key-binder colored per level helps greatly.

$color_glyphs

Will set a default glyph color cycle.

# colored glyphs, will cycle
ddt @data, :color_glyphs ; # uses < gl_0 gl_1 gl_2 gl_3 >

@glyph_colors

You can also define your own color cycle with @glyph_colors:

# colored glyphs
ddt @data, :color_glyphs, glyph_colors => < gl_0 gl_1 > ;

$color_kbs

Will set a default key and binding color cycle.

# used color 'kb_0', 'kb_1' ... and cycles
ddt @data, :color_kbs ; #uses < kb_0 kb_1 ...  kb_10 >

@kb_colors

You can also define your own cycle with @kb_colors:

# colored glyphs, will cycle
ddt @data, :color_kbs, kb_colors => < kb_0 kb_1 > ;

$width = terminal width

Note that the glyps' width is subtracted from the width you pass,

ddt $s, :width(40) ;

DDT uses the whole terminal width if no width is given.

$width_minus = Int

Reduces the width, you can use it to reduce the computed width.

$indent = Str

The string is prepended to each line of the rendering

$nl = Bool

Add an empty line after the last line of the rendering

$max_depth = Int

Limit the depth of a dump. Default is: no limit.

$max_depth_message = True

Display a message telling that you have reached the $max_depth limit, setting this flag to false disable the message.

$max_lines = Int

Limit the number of lines in the rendering, an approximation as ddt does not end rendering in the middle of a multi line. There is no limit by default.

$display_info = True

When set to false, neither the type nor the address are displayed.

$display_type = True

By default this option is set.

$display_address = DDT_DISPLAY_ALL

By default this option is set, to change it use:

use Data::Dump::Tree;
use Data::Dump::Tree::Enums;

my $ddt = Data::Dump::Tree.new( :display_address(DDT_DISPLAY_NONE) );

$display_perl_address = False

Display the internal address of the objects. Default is False.

Str rendering

By default Str is rendered as the string with '.Str'

You can Control quoting and type display directly in the dumper without having to write a role for it.

  • $string_type

The type displayed for a Str.

  • $string_quote

The quote surrounding the string, it will be used on both sides of the string unless $string_quote_end is set.

  • $string_quote_end

Setting it allows you to have 'asymmetrical quotes' like [ the string ].

Tree rendering

The tree is drawn by default with Unicode characters (glyphs) + one space.

You can influence the rendering of the tree in multiple ways:

  • using glyphs or simple indenting

See role DDTR::FixedGlyphs.

  • rendering caracter set and spacing

See role AsciiGlyphs and CompactUnicodeGlyphs.

You can also create a role that defines the glyphs to use.

  • the color of the tree

See $color_glyphs above.

  • "color blob mode"

See for a way to gain control over the tree rendering.

Horizontal layout

You can use :flat( conditions ...) to render parts of your data horizontally. Horizontal layout is documented in the LayoutHorizontal.pm module and you can find examples in examples/flat.pm.

You can chose which elements, which type of element, even dynamically, to flatten, EG: Arrays with more than 15 elements.

dd's example output:

$($[[1, [2, [3, 4]]], ([6, [3]],), [1, [2, [3, 4]]]], [[1, [2, [3, 4]]],
[1, [2, [3, 4]]]], $[[1, 2], ([1, [2, [3, 4]]], [1, [2, [3, 4]]], [1,
[2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]], [1,
[2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]], [1,
[2, [3, 4]]]).Seq], [[1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, 2], [1, 2,
3], [1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3,
4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]]], $[[1, 2], ([1, [2, [3, 4]]],
[1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]],
[1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]], [1, [2, [3, 4]]],
[1, [2, [3, 4]]], [1, [2, [3, 4]]]).Seq], "12345678")

Same data rendered with ddt and I<:flat>:

 (6) @0
   0 = [3] @1       1 = [2] @9   2 = [2] @12        3 = [10] @25
   ├ 0 = [2] @2     ├ 0 = [2] §2 ├ 0 = [2] @13      ├ 0 = [2] §2
   │ ├ 0 = 1        └ 1 = [2] §2 │ ├ 0 = 1          ├ 1 = [2] §2
   │ └ 1 = [2] @3                │ └ 1 = 2          ├ 2 = [2] §13
   │   ├ 0 = 2                   └ 1 = .Seq(11) @14 ├ 3 = [3] @29
   │   └ 1 = [2] @4                ├ 0 = [2] §2     │ ├ 0 = 1
   │     ├ 0 = 3                   ├ 1 = [2] §2     │ ├ 1 = 2
   │     └ 1 = 4                   ├ 2 = [2] §2     │ └ 2 = 3
   ├ 1 = (1) @5                    ├ 3 = [2] §2     ├ 4 = [2] §2
   │ └ 0 = [2] @6                  ├ 4 = [2] §2     ├ 5 = [2] §2
   │   ├ 0 = 6                     ├ 5 = [2] §2     ├ 6 = [2] §2
   │   └ 1 = [1] @7                ├ 6 = [2] §2     ├ 7 = [2] §2
   │     └ 0 = 3                   ├ 7 = [2] §2     ├ 8 = [2] §2
   └ 2 = [2] §2                    ├ 8 = [2] §2     └ 9 = [2] §2
                                   ├ 9 = [2] §2
                                   └ ...
   4 = [2] §12 5 = 12345678.Str

Handling specific types

This section explains how to write specific handlers in classes that create a custom rendering

in your own classes

When Data::Dump::Tree renders an object, it first checks if it has an internal handler for that type; if no handler is found, the object is queried and its handler is used if it is found; finally, DDT uses a generic handler.

The module tests, examples directory, and Data::Dump::Tree::DescribeBaseobjects are a good places to look at for more examples of classes defining a custom rendering.

method ddt_get_header in your class

method ddt_get_header
{
# return 

# some text                       # class type

# usually blank for containers    |

# the value for terminals         |
|                                 |
v                                 v 

'',                              '.' ~ self.^name
}

method ddt_get_elements in your class

method ddt_get_elements
{
# return a list of elements data for each element of the container
 
# key           # binder    # value
(1,             ' = ',     'has no name'),
(3,             ' => ',    'abc'),
('attribute',   ': ',      '' ~ 1),
('sub object',  '--> ',    [1 .. 3]),
('from sub',    '',        something()),

}

The content of the original container is ignored, what you return is used. This lets you remove/add/modify elements.

someone else's class and base types

You can not add methods to classes that you do not control. Data::Dump::Tree has type handlers, via roles, that it uses to handle specific types contained the structure you want to render.

You can override the default handlers and add new ones.

Create a role following this template (here a hash example):

role your_hash_handler
{
#                        Type you want to handle is Hash
#                        ||||
#                        vvvv
multi method get_header (Hash $h)
    {
    # return 
    # optional description    # type (string to display)
    '',                       '{' ~ $h.elems ~ '}' }


multi method get_elements (Hash $h)
    {
    # return the elements of your object
    $h.sort(*.key)>>.kv.map: -> ($k, $v) {$k, ' => ', $v} 
    }
}

To make that handler active, make your dumper do the role

# using 'does'
my $d = Data::Dump::Tree.new: :width(80) ;
$d does your_hash_handler ;

$d.ddt: @your_data ;

# or by passing roles to the constructor
my $d = Data::Dump::Tree.new: :does(DDTR::MatchDetails, your_hash_handler) ;

# or by passing roles to dump() method
my $d = Data::Dump::Tree.new ;
$d.ddt: $m, :does(DDTR::MatchDetails, your_hash_handler) ;

# or by passing roles to ddt sub
ddt: $m, :does(DDTR::MatchDetails, your_hash_handler) ;

FINAL elements

So far we have seen how to render containers but sometimes we want to handle a type as if it was a Str or an Int, EG: not display its elements but instead display it on a single line.

You can, in a handler, specify that a type rendered is not a container, by returning DDT_FINAL in the type's get_header handler.

For example, the Rat class type handler does not show a floating number, it displays the Rat on a single line. Here is the handler:

multi method get_header (Rat $r)
{
# the rendering of the Rat
$r ~ ' (' ~ $r.numerator ~ '/' ~ $r.denominator ~ ')',

# its type
'.' ~ $r.^name,

# hint DDT that this is final
DDT_FINAL,

# hint DDT that this is has an address
DDT_HAS_ADDRESS,
}

Filtering

Imgur

Data::Dump::Tree lets you filter the data to dump.

NOTE: filter must be multi subs.

NOTE: $path, a list passed to filters, is set if you use :keep_paths option, otherwise an empty list is passed to the filters.

To pass a filter to the dumper:

ddt(
    $s,

    # all below are optional

    :removal_filter(&removal_filter, ...),
    :header_filters(&header_filter, ...),
    :elements_filters(&elements_filter,),
    :footer_filters(&footer_filters,),

    :keep_paths
    ) ;

Data::Dump::Tree filters are called in this order:

check if the element is to be removed from the rendering

* removal filters are called

let you change the header rendering returned by the type's handler

* header filters are called

let you change the elements of a container returned by the type's handler

* element filters are called

after the element is rendered

* footer filters are called

removal filter

This is called before the type's handler get_header is called. This allows you to efficiently remove elements from the rendering.

multi sub remove_filter(
    $dumper,
    $s, 		# "read only" object
    $path		# path in the data structure

)
{
True # return True if you want the element removed
}

header filter

This is called just after the type's get_header is called, this allows you, EG, to insert something in the tree rendering

multi sub header_filter(
    $dumper,				# the dumper
    $replacement                            # replacement
    $s,                                     # "read only" object
    ($depth, $path, $glyph, @renderings),   # info about tree

    ($key, $binder, $value, $type, $final, $want_address) # element info
    )
{
# Add something to the tree
@renderings.push: (|$glyph , ('', "HEADER", '')) ;
}

or change the default rendering of the object

multi sub header_filter(
    $dumper,				# the dumper
    \replacement                            # replacement
    Int $s,                                 # will only filter Ints
    ($depth, $path, $glyph, @renderings),   # info about the tree

    # what the type's handler has returned
    (\key, \binder, \value, \type, \final, \want_address) # can be changed
    )
{
@renderings.push: (|$glyph, ('', 'Int HEADER ' ~ $depth, '')) ;

# in this example we need to set limit or we would create lists forever
if $depth < 2 { replacement = <1 2> } ;

# key, binder, value, and type are Str

key = key ~ 'Hash replacement' ;
#binder = '' ;
#value = '' ;
#type = '' ;

final = DDT_NOT_FINAL ;
want_address = True ;
}

Note: You can not filter elements of type Mu with header filters but you can in element filters.

elements filter

Called after the type's get_elements. You can change the elements.

multi sub elements_filter(
    $dumper,
    Hash $s, # type to filter (ie Hash)

# rendering data you can optionaly use

($depth, $glyph, @renderings, ($key, $binder, $value, $path)),

# elements you can modify 
@sub_elements
)

{
# optionaly add something in the rendering
@renderings.push: (|$glyph, ('', 'SUB ELEMENTS', '')) ;

# set/filter  the elements 
@sub_elements = (('key', ' => ', 'value'), ('other_key', ': ', 1)) ;
}

footer filter

Called after the element is rendered.

multi sub footer_filter($dumper, $s, ($depth, $filter_glyph, @renderings))
{
# add message to the rendering after the element is rendered
@renderings.push: (|$filter_glyph, ('', "done with {$s.^name}", '')) ;
}

Removing elements

In removal filters

See removal filters above.

In header filters

  • remove the element

If you return a Data::Dump::Tree::Type::Nothing replacement in your filter, the element will not be displayed at all.

multi sub header_filter($dumper, \replacement, Tomatoe $s, $, $)
{
replacement = Data::Dump::Tree::Type::Nothing ;
}

As DDT streams the rendering, it can not go back to fix the glyphs of the previous element, this will probably show as slightly wrong tree lines.

  • or reduce the type's rendering in a type handler

This does not remove the element but can be useful, create a type handler which renders the type with minimal text. This is sometime preferable to removing.

In elements filters

  • use an elements filter for the container of the type you want to remove

If the element you don't want to see only appears in some containers, you can create a type handler, or filter, for that container type and weed out any reference to the element you don't want to see.

  • or reduce the element rendering

Returning a Data::Dump::Tree::Type::Nothing.new as value, that type renders an empty string.

multi sub elements_filter( ... )
{
    # other elements data ...
    
    # the element to reduce rendering of 

    # key          # binder   #value
    ('your key',   '',        Data::Dump::Tree::Type::Nothing.new),
}

Color Blob Mode (for lack of a better name)

When rendering very large data structures the default coloring helps, a better way to render large data set is to turn off coloring for most of the data and highlight only the data that is of greater interest. This makes it easier to visually skip large amount of data quickly. The best way of highlighting is by using background color not text color.

You can define "glyph filter" that controls the shape and color of the glyphs.

An example can be found in examples/background_color.pl6. A few renderings are generated, some look noisy but they are there to show you the different possibilities, the most interesting examples are the ones that highlight as little as possible. Remember to pass :!color to DDT so element coloring is off.

A simpler example is in examples/html.pl6, it uses a role defined in Data::Dump::Tree::ColorBlobLevel to set blob colors and filters to transform DOM::Tiny parsed data into a rendering more "HTML" like.

use Data::Dump::Tree::ColorBlobLevel ;

my $d = Data::Dump::Tree.new:
            :string_type(''),
            :string_quote('"'),
            :does[DDTR::ColorBlobLevel],
            :color_kbs,
            :header_filters[&header],
            :elements_filters[&elements],
            :nl ;

# you can also override foreground and background color per level
# after you have used the ColorBlobLevel role

# $d.blob_colors = <  on_125 on_61 on_33 on_37 on_64 > ;
# $d.blob_colors_fg = < 0 37 64 61> ;

This mode also work surprisingly well for very short renderings, in that case try to use role DDTR::FixedGlyphs.

Roles provided with Data::Dump::Tree

Data::Dump::Tree comes with a few extra roles that are not does'ed by the object returned by new()

Please feel free to send me roles you think would be useful to other.

You are welcome to make your own distribution for the roles too, I recommend using namespace DDTR::YourRole.

DDTR::AsciiGlyphs

Uses ASCII codes rather than Unicode to render the tree.

DDTR::CompactUnicodeGlyphs

This is the tightest rendering as only one character per level is used to display the tree glyphs.

DDTR::PerlString

Renders string containing control codes (eg: \n, ANSI, ...) with backslashed codes and hex values.

DDTR::FixedGlyphs

Replace all the glyphs by a single glyph; default is a two spaces glyph.

my $d = Data::Dump::Tree.new does DDTR::FixedGlyphs(' . ') ;

DDTR::NumberedLevel

Will add the level of the elements to the tree glyphs, useful with huge trees. If a Superscribe role is on, the level umber will also be superscribed

DDTR::SuperscribeType

Use this role to display the type in Unicode superscript letters.

DDTR::SuperscribeAddress

Use this role to display the address in Unicode superscript letters.

You can also use the method it provides in your type handlers and filters.

DDTR::Superscribe

Use this role to display the type and address in Unicode superscript letters.

Data::Dump::Tree::ColorBlobLevel

Colors the rendering per level.

Match objects

Match objects are displayed as the string that it matched as well as the match start and end position (inclusive, unlike .perl).

# multiline match
aaaaa
aaaaa
aaaaa
aaaaa
[0..23]

# same match with PerlString role
"'aaaaa\naaaaa\naaaaa\naaaaa\n'[0..23]"

Some Roles are provided to allows you to change how Match object are displayed.

DDTR::MatchLimitString

Limits the length of the match string.

# default max length of 10 characters
aaaaa\naaaa(+14)[0..23]

You can set the maximum string length either by specifying a length when the role is added to the dumper.

$dumper does DDTR::MatchLimit(15) ;

aaaaa\naaaaa\n(+12)'[0..23]

or by setting the $.match_string_limit member variable

$dumper does DDTR::MatchLimit ;
$dumper.match_string_limit = 15 ;

aaaaa\naaaaa\n(+12)[0..23]

The specified length is displayed, the length of the remaining part is displayed within parenthesis.

DDTR::MatchDetails

Give complete details about a Match. The match string is displayed as well as the match start and end position.

You can set the maximum string length either by specifying a length when the role is added to the dumper or by setting the $.match_string_limit member variable.

# from examples/match.pl

Match    [passwords]\n        jack=password1\n (+74) ⁰··¹¹³
├ <section>  ⁰··⁶⁸
│ ├ <header> [passwords]⁴··¹⁴
│ ├ <kvpair>
│ │ ├ <key> jack ²⁴··²⁷
│ │ └ <value> password1 ²⁹··³⁷
│ └ <kvpair>
│   ├ <key> joy ⁴⁷··⁴⁹
│   └ <value> muchmoresecure123 ⁵¹··⁶⁷
└ <section>  ⁶⁹··¹¹³
  ├ <header> [quotas]⁷³··⁸⁰
  ├ <kvpair>
  │ ├ <key> jack ⁹⁰··⁹³
  │ └ <value> 123 ⁹⁵··⁹⁷
  └ <kvpair>
    ├ <key> joy ¹⁰⁷··¹⁰⁹
    └ <value> 42 ¹¹¹··¹¹²

Custom Setup Roles

If you configure DDT in different ways to render different types, and you should, you will en up writing boilerplate setup code everywhere, you can define functions to return a setup object (or call ddt) or you can use a custom setup role. Custom Setup roles define a custom_setup method which is called by DDT before rendering your data.

A complete example can be found in examples/CustomSetup/CustomSetup.pm and examples/custom_setup.pl.

BUGS

Submit bugs (preferably as executable tests) and feel free to make suggestions.

Dumper Exception

As this module uses the MOP interface, it happens that it may use interfaces not implemented by some internal classes.

An example is Grammar that I tried to dump and got an exception about a class that I didn't even know existed.

Those exception are caught and displayed by the dumper as "DDT Exception: the_caught_exception"

Please let me know about them so I can add the necessary handlers to the distribution.

AUTHOR

Nadim ibn hamouda el Khemir https://github.com/nkh

Do not hesitate to ask for help.

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl6 itself.

SEE-ALSO

README.md in the example directory

Perl 5:

  • Data::TreeDumper

Perl 6:

  • Data::Dump

  • Pretty::Printer

p6-data-dump-tree's People

Contributors

briandfoy avatar gfldex avatar jj avatar molecules avatar nkh avatar samcv avatar shlomif avatar zoffixznet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

p6-data-dump-tree's Issues

display_address documentation

The Readme states

$display_address = True
By default this option is set.

but the display_adress parmaeter is no Bool.
In order to disable address you need to do something like:

use Data::Dump::Tree;
use Data::Dump::Tree::Enums;

my $ddt = Data::Dump::Tree.new( :display_address(DDT_DISPLAY_NONE) );

could you please update the documentation?

Test failure on panda install

$ panda install Data::Dump::Tree
==> Fetching Data::Dump::Tree
==> Building Data::Dump::Tree
==> Testing Data::Dump::Tree
t/00_use.t ................... ok
===SORRY!=== Error while compiling /home/jabowery/dev/planner/.panda-work/1483063444_1/t/01_all.t
Undeclared names:
    DDT_FINAL used at line 48
    DDT_HAS_NO_ADDRESS used at line 36
    DDT_NOT_FINAL used at line 36

t/01_all.t ................... 
Dubious, test returned 1 (wstat 256, 0x100)
No subtests run 
t/02_META.t .................. ok
t/05_class_attributes.t ...... ok
t/10_role.t .................. ok
t/11_class_vs_role.t ......... ok
Could not find symbol '&PerlString'
  in block <unit> at t/12_extra_standard_roles.t line 15

Actually thrown at:
  in block <unit> at t/12_extra_standard_roles.t line 15

# Looks like you planned 9 tests, but ran 1
t/12_extra_standard_roles.t .. 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 8/9 subtests 
Could not find symbol '&PerlString'
  in block <unit> at t/13_named_captures.t line 28

Actually thrown at:
  in block <unit> at t/13_named_captures.t line 28

t/13_named_captures.t ........ 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 2/2 subtests 
Could not find symbol '&PerlString'
  in block <unit> at t/14.Match_limit.t line 17

Actually thrown at:
  in block <unit> at t/14.Match_limit.t line 17

# Looks like you planned 13 tests, but ran 1
t/14.Match_limit.t ........... 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 12/13 subtests 
t/20_nothing.t ............... ok
===SORRY!=== Error while compiling /home/jabowery/dev/planner/.panda-work/1483063444_1/t/21_terminal.t
Undeclared name:
    DDT_FINAL used at line 17

t/21_terminal.t .............. 
Dubious, test returned 1 (wstat 256, 0x100)
No subtests run 
t/31_default_base_class.t .... ok
t/32.exception.t ............. ok
t/40_type_Map.t .............. ok
===SORRY!=== Error while compiling /home/jabowery/dev/planner/.panda-work/1483063444_1/t/41_type_callframe.t
Undeclared name:
    DDT_FINAL used at line 21

t/41_type_callframe.t ........ 
Dubious, test returned 1 (wstat 256, 0x100)
No subtests run 
Could not find symbol '&PerlString'
  in block <unit> at t/42_type_Map.t line 27

Actually thrown at:
  in block <unit> at t/42_type_Map.t line 27

# Looks like you planned 8 tests, but ran 5
t/42_type_Map.t .............. 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 3/8 subtests 
t/70_sub_interface.t ......... ok
t/71_filter.t ................ ok
t/80_title.t ................. ok
t/81_color.t ................. ok
t/82_max_depth.t ............. ok
Could not find symbol '&AsciiGlyphs'
  in block <unit> at t/83_width.t line 8

Actually thrown at:
  in block <unit> at t/83_width.t line 8

t/83_width.t ................. 
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 10/10 subtests 

Test Summary Report
-------------------
t/01_all.t                 (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/12_extra_standard_roles.t (Wstat: 65280 Tests: 1 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 9 tests but ran 1.
t/13_named_captures.t      (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 2 tests but ran 0.
t/14.Match_limit.t         (Wstat: 65280 Tests: 1 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 13 tests but ran 1.
t/21_terminal.t            (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/41_type_callframe.t      (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/42_type_Map.t            (Wstat: 65280 Tests: 5 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 8 tests but ran 5.
t/83_width.t               (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 10 tests but ran 0.
Files=22, Tests=55, 13 wallclock secs ( 0.06 usr  0.03 sys + 11.78 cusr  1.18 csys = 13.05 CPU)
Result: FAIL
The spawned command 'prove' exited unsuccessfully (exit code: 1)
  in block  at /home/jabowery/.rakudobrew/moar-nom/install/share/perl6/site/sources/24811C576EF8F85E7672B26955C802BB2FC94675 (Panda::Common) line 85
  in sub run-and-gather-output at /home/jabowery/.rakudobrew/moar-nom/install/share/perl6/site/sources/24811C576EF8F85E7672B26955C802BB2FC94675 (Panda::Common) line 71
  in block  at /home/jabowery/.rakudobrew/moar-nom/install/share/perl6/site/sources/48E2EB9144E069353B240AD2D147B48C65F70152 (Panda::Tester) line 29
  in method test at /home/jabowery/.rakudobrew/moar-nom/install/share/perl6/site/sources/48E2EB9144E069353B240AD2D147B48C65F70152 (Panda::Tester) line 16
  in method install at /home/jabowery/.rakudobrew/moar-nom/install/share/perl6/site/sources/582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 185
  in method resolve at /home/jabowery/.rakudobrew/moar-nom/install/share/perl6/site/sources/582CB7486602954A4601BDCE5A0EAC54B05DA58A (Panda) line 263
  in sub MAIN at /home/jabowery/.rakudobrew/moar-nom/install/share/perl6/site/resources/E0D978079BB5081DE986D058BB8AB08252F05CC8 line 20
  in block <unit> at /home/jabowery/.rakudobrew/moar-nom/install/share/perl6/site/resources/E0D978079BB5081DE986D058BB8AB08252F05CC8 line 165

Add global "display where I was called" option

set a global option that forces al the call to dump to display where it is called

when using dump as a visualization tool, it's easy to forget a debug dump somewhere and have to search for it.

travis not setup

a green badge gives prospective users confidence to try your module

document typo

DDTR::AsciiGlyphs

Uses ASCII codes rather than ANSI to render the tree.

  • should be: ... rather than Unicode to ...

Terminal::Print not included in dependencies

Hi

Module fails to install using zef:

...
===> Installing: Data::Dump::Tree:ver<1.8.0>:auth<github:nkh>
===> Install [FAIL] for Data::Dump::Tree:ver<1.8.0>:auth<github:nkh>: ===SORRY!===
Could not find Terminal::Print at line 41 in:
    /root/.perl6
    /home/getresponse/perl/share/perl6/site
    /home/getresponse/perl/share/perl6/vendor
    /home/getresponse/perl/share/perl6
    CompUnit::Repository::AbsolutePath<72068448>
    CompUnit::Repository::NQP<50331688>
    CompUnit::Repository::Perl5<50331728>

When I installed Terminal::Print then Data::Dump::Tree installed just fine.

Installation problems: Preceding context expects a term, but found infix

I am trying to install Data::Dump::Tree:

$ zef install Data::Dump::Tree
[...]
===> Testing: Data::Dump::Tree:ver<1.8.0>:auth<github:nkh>
===SORRY!=== Error while compiling /home/hakon/.zef/store/P6-Data-Dump-Tree.git/a0374d5355253419a633151faa7e2
77172b570fc/lib/Data/Dump/Tree/MultiColumns.pm (Data::Dump::Tree::MultiColumns)
Preceding context expects a term, but found infix = instead
at /home/hakon/.zef/store/P6-Data-Dump-Tree.git/a0374d5355253419a633151faa7e277172b570fc/lib/Data/Dump/Tree/MultiCol
umns.pm (Data::Dump::Tree::MultiColumns):74
------> =SEE⏏-ALSO

  in method get_dump_lines at /home/hakon/.zef/store/P6-Data-Dump-Tree.git/a0374d5355253419a633151faa7e277172b570fc/lib/Data/Dump/Tree.pm (Data::Dump::Tree) line 150
  in sub get_dump_lines_integrated at /home/hakon/.zef/store/P6-Data-Dump-Tree.git/a0374d5355253419a633151faa7e277172b570fc/lib/Data/Dump/Tree.pm (Data::Dump::Tree) line 116
  in sub ddt at /home/hakon/.zef/store/P6-Data-Dump-Tree.git/a0374d5355253419a633151faa
7e277172b570fc/lib/Data/Dump/Tree.pm (Data::Dump::Tree) line 104
  in block <unit> at t/04_flat.t line 52
[...]

Here is the complete output from zef:
zef_out.txt

My Perl 6 version:

$ perl6 --version
This is Rakudo version 2017.09-458-gcf1673d9c built on MoarVM version 2017.09.1-608-ge051ee3c
implementing Perl 6.c.

handle 'NQPClassHOW'

$attribute.HOW.^name eq 'NQPClassHOW' should find types outside P6 type system (jnth)

Could not find Data::Dump::Tree::RemoteFoldObject

Hi,

I tried to install Data::Dump::Tree using zef, on a clean rakudo installation and I get this error message:

===> Install [FAIL] for Data::Dump::Tree:ver('1.7.0'):auth('github:nkh'): ===SORRY!===
Could not find Data::Dump::Tree::RemoteFoldObject at line 87 in:
/opt/rakudo/share/perl6/site
/opt/rakudo/share/perl6/vendor
/opt/rakudo/share/perl6
CompUnit::Repository::AbsolutePath<94416879887696>
CompUnit::Repository::NQP<94416880206432>
CompUnit::Repository::Perl5<94416880206472>

===SORRY!===
Could not find Data::Dump::Tree::RemoteFoldObject at line 87 in:
/opt/rakudo/share/perl6/site
/opt/rakudo/share/perl6/vendor
/opt/rakudo/share/perl6
CompUnit::Repository::AbsolutePath<94416879887696>
CompUnit::Repository::NQP<94416880206432>
CompUnit::Repository::Perl5<94416880206472>

in any at /opt/rakudo/share/perl6/precomp/1049D337DEF3307152AD072D6367A639E427DB18.1503406667.04303/A5/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 line 1
in block at /opt/rakudo/share/perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 581
in any at /opt/rakudo/share/perl6/precomp/1049D337DEF3307152AD072D6367A639E427DB18.1503406667.04303/A5/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 line 1
in block at /opt/rakudo/share/perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 589
in block at /opt/rakudo/share/perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 552
in sub at /opt/rakudo/share/perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 541
in method install at /opt/rakudo/share/perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 633
in sub MAIN at /opt/rakudo/share/perl6/sources/31FF9E8498781BF95868DF98AD861FCF1211BCC1 (Zef::CLI) line 152
in block at /opt/rakudo/share/perl6/resources/0031ECC6124802A80F7B7B073C50D0A1694E3020 line 1
in sub MAIN at /opt/rakudo/bin/zef line 2
in block at /opt/rakudo/bin/zef line 2

Add :max_lines

Stop rendering the data structure when a specified amount of lines is already in the rendering.

documentation changes needed

not all examples use: and an example or two have () but do not need them

Elements of the dump does not list binder

%.colors = does not list binder
name example/color.pl in doc

list the examples and what they do.

rename header filter, footer filter so it is easy to see which is which

@glyph_colors, refered as kb_colors in the example

$color_kbs, give example

typo: you own classes

Data::Dump::Tree cycle is: spaces are missing after =item, the MD renders wrong

"* DDT_HEADER" should be "* filter type DDT_HEADER"

DDT_SUB_ELEMENTS and DDT_FOOTER does not contain comment explaining the argument as DDT_HEADER does

Data::Dump::Tree::Type::Nothing silly examples in a sub elements filter should be the second example

P6: Data::Dump Pretty:Printer; missing a newline

Feature request: Dump without terminal escapes

Can't seem to figure out how to dump without escape codes or ANSI or anything like that.

Even with :color set to False, I still get a bunch of escape codes in the text, as in https://temp.perl6.party/buggable/7751147216384311499263736.txt

For example, this code looks OK in the terminal, but I'm not using a terminal and the data ends up being tainted:

$ perl6 -MData::Dump::Tree -e 'with [<a b c>, {:42a}] { say Data::Dump::Tree.new(:!color).get_dump: :!color, $_ }'

There are proper Unicode characters to draw the lines. Would be nice to have an option to dump in text format that can be displayed anywhere, not just the terminal.

zef install gives an error

doing shlomif@lap:~/Download/unpack/perl/p6/P6-Data-Dump-Tree$ /home/shlomif/.perl6/bin/zef install . on my Fedora 26 x86-64 system gives me this:

    CompUnit::Repository::Perl5<94345429047488>                                 
===SORRY!===        
Could not find Data::Dump::Tree::RemoteFoldObject at line 87 in:                
    /home/shlomif/.perl6                
    /usr/lib64/perl6/site               
    /usr/lib64/perl6/vendor             
    /usr/lib64/perl6                    
    CompUnit::Repository::AbsolutePath<94345429054944>                          
    CompUnit::Repository::NQP<94345429047448>                                   
    CompUnit::Repository::Perl5<94345429047488>                                 

  in block  at /home/shlomif/.perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 589
  in block  at /home/shlomif/.perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 552
  in sub  at /home/shlomif/.perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 541
  in method install at /home/shlomif/.perl6/sources/A5C13EF833A22B1E85E78D1CD88BE1B0B0B24DA1 (Zef::Client) line 633
  in sub MAIN at /home/shlomif/.perl6/sources/31FF9E8498781BF95868DF98AD861FCF1211BCC1 (Zef::CLI) line 152
  in block <unit> at /home/shlomif/.perl6/resources/0031ECC6124802A80F7B7B073C50D0A1694E3020 line 1


Please look into fixing it.

diff between two Seq results in error

38 ~/4/P6-Data-Dump-Tree [4b] ■ 1u p6 examples/diff_string.pl
.Seq @0 eqv .Seq @0
$!iter = Nil.Str === ├ $!iter = Nil.Str
$!list = Nil.Str === └ $!list = Nil.Str

This Seq has already been iterated, and its values consumed
(you might solve this by adding .cache on usages of the Seq, or
by assigning the Seq into an array)

42_type_Map: tests are out of date or wrong

# Failed test '13 dump lines, with capture'
# at t/42_type_Map.t line 19
# expected: '13'
#      got: '31'
# aaaaaaaa ~~ yyy (2) @0 (List|88436536:DDT:140389529972576)
# |- 0 = 
# |  |  'aaaa' [0..4|
# |  |  .Match
# |  |  @1
# |  |  (Match|yyy(Match|(Match|t1(Match))(Match|t2(Match))|(Array|88306608)):DDT:1403895299
# |  |  74168)
# |  `- yyy => 
# |     |  'aaaa' [0..4|
# |     |  .Match
# |     |  @2
# |     |  (Match|(Match|t1(Match))(Match|t2(Match))|(Array|88306608):DDT:140389529975568)
# |     |- 0 => 'aa' [0..2|.Match @3 (Match|t1(Match):DDT:140389529978040)
# |     |  `- t1 => 'aa' [0..2|.Match @4 (Match:DDT:140389529979440)
# |     `- 1 => 'a' [2..3|.Match @5 (Match|t2(Match):DDT:140389529980704)
# |        `- t2 => 'a' [2..3|.Match @6 (Match:DDT:140389529982104)
# `- 1 = 
#    |  'aaaa' [4..8|
#    |  .Match
#    |  @7
#    |  (Match|yyy(Match|(Match|t1(Match))(Match|t2(Match))|(Array|88306672)):DDT:1403895299
#    |  85232)
#    `- yyy => 
#       |  'aaaa' [4..8|
#       |  .Match
#       |  @8
#       |  (Match|(Match|t1(Match))(Match|t2(Match))|(Array|88306672):DDT:140389529986632)
#       |- 0 => 'aa' [4..6|.Match @9 (Match|t1(Match):DDT:140389529989104)
#       |  `- t1 => 'aa' [4..6|.Match @10 (Match:DDT:140389529990504)
#       `- 1 => 'a' [6..7|.Match @11 (Match|t2(Match):DDT:140389529991768)
#          `- t2 => 'a' [6..7|.Match @12 (Match:DDT:140389529993168)


# Failed test '5 lines: title, top match, 3 sub macthes'
# at t/42_type_Map.t line 23
# expected: '5'
#      got: '9'

# 'abc-abc-abc' [0..11|
# .Match @0 (Match|string(Match|part(Array|88306736)):DDT:140389533092704)
# `- string => 
#    |  'abc-abc-abc' [0..11|
#    |  .Match @1 (Match|part(Array|88306736):DDT:140389555825144)
#    |- part => 'abc' [0..3|.Match @2 (Match:DDT:140389555820984)
#    |- part => 'abc' [4..7|.Match @3 (Match:DDT:140389555820608)
#    `- part => 'abc' [8..11|.Match @4 (Match:DDT:140389555819880)


# Failed test 'top match'
# at t/42_type_Map.t line 24
#      expected: '/"string => 'abc-abc-abc'"/'
#      got: '
# 'abc-abc-abc' [0..11|
# .Match @0 (Match|string(Match|part(Array|88306736)):DDT:140389533092704)
# `- string => 
#    |  'abc-abc-abc' [0..11|
#    |  .Match @1 (Match|part(Array|88306736):DDT:140389555825144)
#    |- part => 'abc' [0..3|.Match @2 (Match:DDT:140389555820984)
#    |- part => 'abc' [4..7|.Match @3 (Match:DDT:140389555820608)
#    `- part => 'abc' [8..11|.Match @4 (Match:DDT:140389555819880)
# '

# 'abc-abc-abc' [0..11|
# .Match @0 (Match|string(Match|part(Array|88306736)):DDT:140389533092704)
# `- string => 
#    |  'abc-abc-abc' [0..11|
#    |  .Match @1 (Match|part(Array|88306736):DDT:140389555825144)
#    |- part => 'abc' [0..3|.Match @2 (Match:DDT:140389555820984)
#    |- part => 'abc' [4..7|.Match @3 (Match:DDT:140389555820608)
#    `- part => 'abc' [8..11|.Match @4 (Match:DDT:140389555819880)

# Looks like you failed 3 tests of 8
t/42_type_Map.t .............. 
Dubious, test returned 3 (wstat 768, 0x300)
Failed 3/8 subtests 

Bags can not be shown with DDT

$ perl6 -e 'use Data::Dump::Tree; ddt <a b c>.Bag'
Too many positionals passed; expected 2 arguments but got 3
  in method get_element_header at /Users/liz/Github/rakudo.moar/install/share/perl6/site/sources/25FB865044D56971153B54ECAC0E0CF89CA24FF5 (Data::Dump::Tree) line 517
  in method render_root at /Users/liz/Github/rakudo.moar/install/share/perl6/site/sources/25FB865044D56971153B54ECAC0E0CF89CA24FF5 (Data::Dump::Tree) line 229
  in method get_dump_lines at /Users/liz/Github/rakudo.moar/install/share/perl6/site/sources/25FB865044D56971153B54ECAC0E0CF89CA24FF5 (Data::Dump::Tree) line 167
  in method get_dump at /Users/liz/Github/rakudo.moar/install/share/perl6/site/sources/25FB865044D56971153B54ECAC0E0CF89CA24FF5 (Data::Dump::Tree) line 135
  in sub get_dump at /Users/liz/Github/rakudo.moar/install/share/perl6/site/sources/25FB865044D56971153B54ECAC0E0CF89CA24FF5 (Data::Dump::Tree) line 114
  in sub ddt at /Users/liz/Github/rakudo.moar/install/share/perl6/site/sources/25FB865044D56971153B54ECAC0E0CF89CA24FF5 (Data::Dump::Tree) line 110
  in block <unit> at -e line 1

test set object dumping

.Set @0
├ $!WHICH = Set|B072EC86606DADB644414F1CE5FD88DB5E4C7AF5.Str
└ $!elems = .Rakudo::Internals::IterationSet @1

:does() in the constructore doesn't seem to work

> perl6 -e 'use Data::Dump::Tree; role Foo {}; my $d = Data::Dump::Tree.new: :does(Foo); say $d ~~ Foo'
False

> perl6 -e 'use Data::Dump::Tree; role Foo {}; my $d = Data::Dump::Tree.new does Foo; say $d ~~ Foo' 
True

num64.new does not create a num64

There are several instances of num64.new in this codebase (e.g here) and that's an error.

It returns a Num and currently it's silently failing in this way, but will die on newer rakudos.

The proper way to construct a num64 would be using (my num64 $ = 888e0) instead, though in your uses you can likely just rely on auto-unboxing and use plain 888e0

Installation failing in 2018.03

That would be Ubuntu, with this error:

===> Testing: Data::Dump::Tree:ver<1.8.0>:auth<github:nkh>
Cannot instantiate a native type
  in block <unit> at t/48_type_NativeCall.t line 45

Generate docs into README

Seems the README has some docs, but not all of them.

GitHub doesn't support POD6, so it'd be nice if the the .pod doc in the distro was rendered into markdown included in the README.

Setting replacement to string in a header filter does not work

if, in a header filter, the replacement it set to a string, the string is not displayed in the dump.

In the example below we needed to transform the string to a list containing a single string for it to be displayed.

# example from the test of DDT::Foldable

sub filter(\r, $s, ($, $path, $glyph, @renderings), (\k, \b, \v, \f, \final, \want_address))
{
r = Data::Dump::Tree::Type::Nothing if k ~~ /'$.foldable'/ ;

if k ~~ /'@.folds'/
        {
        try
                {
                require Text::Table::Simple <&lol2table> ;

                r = lol2table(
                        < index skip folded parent >,
                        ($s.List Z 0..*).map: -> ($d, $i) { [$i, |$d] },
                        headers => corner_marker => '+'
                        ).join("\n").List ;

                }

        @renderings.push: "$!" if $! ;
        }
}


Test Failures on Mageia Linux x86-64 v6 with close-to-latest rakudo

Hi!

Here is the output of “PERL6LIB=lib,t prove -v -e perl6 t/ 2>&1 | tee ~/P6-Data-Dump.txt” on Mageia Linux x86-64 v6:

�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
t/00_use.t ................... 
1..1
ok 1 - can use
ok
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
===SORRY!===
Could not find Text::Table::Simple in:
    /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree
    /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib
    /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/t
    /home/shlomif/.perl6/2015.11-588-gf303efc
    /home/shlomif/Download/unpack/perl/p6/rakudobrew/moar-nom/install/share/perl6/site
    /home/shlomif/Download/unpack/perl/p6/rakudobrew/moar-nom/install/share/perl6/vendor
    /home/shlomif/Download/unpack/perl/p6/rakudobrew/moar-nom/install/share/perl6
    CompUnit::Repository::NQP<79626920>
    CompUnit::Repository::Perl5<79626960>
t/01_all.t ................... 
Dubious, test returned 1 (wstat 256, 0x100)
No subtests run 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/05_class_attributes.t:9

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/05_class_attributes.t:9

t/05_class_attributes.t ...... 
1..4
# Looks like you planned 4 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 4/4 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/10_role.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/10_role.t:1

t/10_role.t .................. 
1..5
# Looks like you planned 5 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 5/5 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/11_class_vs_role.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/11_class_vs_role.t:1

t/11_class_vs_role.t ......... 
1..7
# Looks like you planned 7 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 7/7 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/12_extra_standard_roles.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/12_extra_standard_roles.t:1

t/12_extra_standard_roles.t .. 
1..9
# Looks like you planned 9 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 9/9 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/13_named_captures.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/13_named_captures.t:1

t/13_named_captures.t ........ 
1..2
# Looks like you planned 2 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 2/2 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/20_nothing.t:9

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/20_nothing.t:9

t/20_nothing.t ............... 
1..3
# Looks like you planned 3 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 3/3 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/21_terminal.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in block <unit> at t/21_terminal.t:1

t/21_terminal.t .............. 
1..4
# Looks like you planned 4 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 4/4 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/31_default_base_class.t:11

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/31_default_base_class.t:11

t/31_default_base_class.t .... 
1..2
# Looks like you planned 2 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 2/2 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/32.exception.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/32.exception.t:1

t/32.exception.t ............. 
1..2
# Looks like you planned 2 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 2/2 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/70_sub_interface.t:8

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/70_sub_interface.t:8

t/70_sub_interface.t ......... 
1..1
# Looks like you planned 1 test, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/1 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/80_title.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/80_title.t:1

t/80_title.t ................. 
1..14
# Looks like you planned 14 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 14/14 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
t/81_color.t ................. 
1..1
ok 1 - colors
ok
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/82_max_depth.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/82_max_depth.t:1

t/82_max_depth.t ............. 
1..2
# Looks like you planned 2 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 2/2 subtests 
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
�[31m===�[0mSORRY!�[31m===�[0m Error while compiling /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm
'use lib' may not be pre-compiled
at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree/DescribeBaseObjects.pm:2
------> �[32muse lib '.'�[33m⏏�[31m ;�[0m
Could not find symbol '&AsciiGlyphs'
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/83_width.t:1

Actually thrown at:
  in method new at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:44
  in sub get_dump at /home/shlomif/Download/unpack/perl/p6/P6-Data-Dump-Tree/lib/Data/Dump/Tree.pm:52
  in block <unit> at t/83_width.t:1

t/83_width.t ................. 
1..10
# Looks like you planned 10 tests, but ran 0
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 10/10 subtests 

Test Summary Report
-------------------
t/01_all.t                 (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/05_class_attributes.t    (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 4 tests but ran 0.
t/10_role.t                (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 5 tests but ran 0.
t/11_class_vs_role.t       (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 7 tests but ran 0.
t/12_extra_standard_roles.t (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 9 tests but ran 0.
t/13_named_captures.t      (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 2 tests but ran 0.
t/20_nothing.t             (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 3 tests but ran 0.
t/21_terminal.t            (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 4 tests but ran 0.
t/31_default_base_class.t  (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 2 tests but ran 0.
t/32.exception.t           (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 2 tests but ran 0.
t/70_sub_interface.t       (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 1 tests but ran 0.
t/80_title.t               (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 14 tests but ran 0.
t/82_max_depth.t           (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 2 tests but ran 0.
t/83_width.t               (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 10 tests but ran 0.
Files=16, Tests=2, 50 wallclock secs ( 0.05 usr  0.02 sys + 48.16 cusr  1.75 csys = 49.98 CPU)
Result: FAIL

"all lines" test fails to install in long path

Earlier today, Data::Dump::Tree failed to install due to a failure in the "all lines" test. After some confusion and experimentation, I it has something to do with the length of the path in which it is being installed:

zef test .
===> Testing: Data::Dump::Tree:ver('1.8.0'):auth('github:nkh')

# Failed test 'all lines'
# at t/01_all.t line 75
# expected: '83'
#      got: '84'
# test data @ /home/username/500000_00000000/EXTREMELY_LONG_DIRECTORY_NAME/TO
# _MESS_WITH_DATA_DUMP_TREE/50000_000.dir/P6-Data-Dump-Tree/lib/Data/Dump/Tre
# e.pm (Data::Dump::Tree):162
# │ [21] @0 (Array|57556120)
# ├ 0 = text.Str
# ├ 1 = .Str:U
# ├ 2 = 12
# ├ 3 = Int:U
# ├ 4 = 3.1 (31/10).Rat
# ├ 5 = <anon> (Int $a, Str $string).Sub
# ├ 6 = .Routine:U
# ├ 7 = [0] @1 (Array|92649512)
# ├ 8 = [1] @2 (Array|92649568)
# │ └ 0 = 1
# ├ 9 = [1] @3 (Array|92649680)
# │ └ 0 = a.Str
# ├ 10 = [1] §2 (Array|92649568)
# ├ 11 = [1] §3 (Array|92649680)
# ├ 12 = (2) @6 (List|54610592)
# │ ├ 0 = a.Str
# │ └ 1 = b.Str
# ├ 13 = {4} @7 (Hash|96045856)
# │ ├ Nil => .Any:U @8 (Any|U13183816:DDT:TYPE_OBJECT)
# │ │ └ … max depth(3)
# │ ├ a => 1
# │ ├ b => string.Str
# │ └ default_nil => .Any:U §8 (Any|U13183816:DDT:TYPE_OBJECT)
# ├ 14 = .Cool @10 (Cool|48924816)
# ├ 15 =
# │ │ .GenericClass+{GenericRole}+{Whatnot}
# │ │  @11 (GenericClass+{GenericRole}+{Whatnot}|95964160)
# │ ├ $.whatnot is rw +{Whatnot} = 13
# │ ├ $.role +{GenericRole} = Nil
# │ ├ $.x = 5
# │ └ $!z = Nil
# ├ 16 = .Mangled @12 (Mangled|55139008)
# │ └ inner structure => [2] @13 (Array|48285504)
# │   └ … max depth(3)
# ├ 17 = Woof! .Dog (but this one is vagrant, no address)
# │ └ the dog's name is: fido.Str
# ├ 18 = Role{DescribeShyFinal} .Shy
# ├ 19 =
# │ │ say something about this class
# │ │ multiline
# │ │ .Strings
# │ │  multiline classes
# │ │  @14 (Strings|55138976)
# │ ├ has no name.Str
# │ ├ very very long
# │ │ explanation on multiple lines
# │ │   many lines
# │ │   many lines
# │ │   many lines
# │ │   many lines
# │ │   many lines
# │ │   .Str
# │ ├ single-long:
# │ │   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# │ │   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# │ │   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# │ │   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# │ │   xxxxxxxxxxxxxxxxxxxxxxxx
# │ │   .Str
# │ ├ multiple-long:
# │ │   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# │ │   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# │ │   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# │ │   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# │ │   xxxxxxxxxxxxxxxxxxxxxxxx
# │ │   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
# │ │   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
# │ │   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
# │ │   .Str
# │ ├ 12345678901234567890123456789012345[2] @15 (Array|52069408)
# │ │ └ … max depth(3)
# │ ├ 12345678901234567890123456789012345
# │ │ xxx
# │ │   test
# │ │   .Str
# │ └ coefficient = 1
# └ 20 = (3) @16 (List|96045136)
#   ├ 0 = a[0..0]
#   ├ 1 = a[1..1]
#   └ 2 = a[2..2]

# Looks like you failed 1 test of 1
===> Testing [FAIL]: Data::Dump::Tree:ver('1.8.0'):auth('github:nkh')

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.