From c916aef98a1cdb5b744a19f406f8f180456a0aeb Mon Sep 17 00:00:00 2001 From: Aleks-Daniel Jakimenko-Aleksejev Date: Sat, 9 Feb 2019 16:36:58 +0200 Subject: [PATCH] Sort attribute keys Otherwise hash randomization will cause them to be in different order every time, which makes tests fail. --- lib/HTML/Tag.pm6 | 3 ++- t/0010-html.t | 10 +++++----- t/0020-form.t | 28 ++++++++++++++-------------- t/0040-table.t | 2 +- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/lib/HTML/Tag.pm6 b/lib/HTML/Tag.pm6 index 62dd0f1..4bde460 100644 --- a/lib/HTML/Tag.pm6 +++ b/lib/HTML/Tag.pm6 @@ -12,7 +12,8 @@ class HTML::Tag method mktag(:$prefix, :$suffix = '>') { my $tag; $tag = $prefix if $prefix; - $.attr.keys.map: { when 'checked' { $tag ~= ' checked' } + $.attr.keys.sort.map: { + when 'checked' { $tag ~= ' checked' } when 'disabled' { $tag ~= ' disabled' } when 'readonly' { $tag ~= ' readonly' } when 'required' { $tag ~= ' required' } diff --git a/t/0010-html.t b/t/0010-html.t index 69a6fd1..78e14d0 100644 --- a/t/0010-html.t +++ b/t/0010-html.t @@ -13,13 +13,13 @@ use HTML::Tag::Macro; is HTML::Tag::p.new(:text('testing & here')).render, '

testing & here

', 'HTML::Tag::p works ok'; is HTML::Tag::p.new(text => 'test', :id('myID')).render, '

test

', 'HTML::Tag::p.id works'; is HTML::Tag::p.new(text => 'test', :class('myclass')).render, '

test

', 'HTML::Tag::p.class works'; -is HTML::Tag::p.new(:text('test'), :class('MYClass'), :id('myNAME')).render, '

test

', 'HTML::Tag::p.class and .id both work together'; +is HTML::Tag::p.new(:text('test'), :class('MYClass'), :id('myNAME')).render, '

test

', 'HTML::Tag::p.class and .id both work together'; # Anchor is HTML::Tag::a.new(:text('My Page'), :href('http://mydomain.com')).render, 'My Page', 'HTML::Tag::a works'; # Link -is HTML::Tag::link.new(:href('http://mydomain.com'), :rel('stylesheet'), :type('text/css')).render, '', 'HTML::Tag::link works'; +is HTML::Tag::link.new(:href('http://mydomain.com'), :rel('stylesheet'), :type('text/css')).render, '', 'HTML::Tag::link works'; # Break is HTML::Tag::br.new.render, '
', 'HTML::Tag::br works'; @@ -45,7 +45,7 @@ is HTML::Tag::div.new(:text('My Div'), :style('funnyfont')).render, '
My Span', 'HTML::Tag::span works'; # Form -is HTML::Tag::form.new(:action('/myscript/is') :id('myid')).render, '
', 'HTML::Tag::form works'; +is HTML::Tag::form.new(:action('/myscript/is') :id('myid')).render, '
', 'HTML::Tag::form works'; is HTML::Tag::input.new(:value('testval'), :min(0)).render, '', 'HTML::Tag::input works'; is HTML::Tag::input.new(:type('radio'), :checked(True)).render, '', 'HTML::Tag::input radio checked works'; is HTML::Tag::textarea.new(:text('This is in the box'), :id('boxy')).render, '', 'HTML::Tag::textarea works'; @@ -56,13 +56,13 @@ is HTML::Tag::fieldset.new(:form('myform'), :text($legend, $tag)).render, '', 'HTML::Tag::Macro:CSS works'; +'', 'HTML::Tag::Macro:CSS works'; # Image is HTML::Tag::img.new(:src('/img/foo.jpg'), :width(100), :height(150), :alt('funny pic'), - :border(0)).render, 'funny pic', 'HTML::Tag::img works.'; + :border(0)).render, 'funny pic', 'HTML::Tag::img works.'; # Table my $th1 = HTML::Tag::th.new(:text('Col1')); diff --git a/t/0020-form.t b/t/0020-form.t index c9878b9..94df478 100644 --- a/t/0020-form.t +++ b/t/0020-form.t @@ -19,7 +19,7 @@ my @def = ( { username => { }}, $form.def = @def; -is $form.render, '
', 'HTML::Tag::Macro::Form minimal def'; +is $form.render, '
', 'HTML::Tag::Macro::Form minimal def'; @def = ( { username => { autofocus => True }}, { password => { }}, @@ -29,11 +29,11 @@ is $form.render, '
', 'HTML::Tag::Macro::Form autofocus'; +is $form.render, '
', 'HTML::Tag::Macro::Form autofocus'; ok $form = HTML::Tag::Macro::Form.new(:def(@def), :action('/')), 'HTML::Tag::Macro::Form def passed directly in'; -is $form.render, '
', 'HTML::Tag::Macro::Form with labels'; +is $form.render, '
', 'HTML::Tag::Macro::Form with labels'; @def = ( { username => { }}, { password => { }}, @@ -44,14 +44,14 @@ is $form.render, '