Hello community,
here is the log from the commit of package perl-List-SomeUtils for
openSUSE:Factory checked in at 2017-08-19 10:55:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-List-SomeUtils (Old)
and /work/SRC/openSUSE:Factory/.perl-List-SomeUtils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-List-SomeUtils"
Sat Aug 19 10:55:08 2017 rev:4 rq:516819 version:0.56
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-List-SomeUtils/perl-List-SomeUtils.changes
2017-06-17 10:21:16.470265175 +0200
+++
/work/SRC/openSUSE:Factory/.perl-List-SomeUtils.new/perl-List-SomeUtils.changes
2017-08-19 10:55:09.499110155 +0200
@@ -1,0 +2,13 @@
+Thu Aug 3 05:43:00 UTC 2017 - [email protected]
+
+- updated to 0.56
+ see /usr/share/doc/packages/perl-List-SomeUtils/Changes
+
+ 0.56 2017-07-22
+ - Make sure we depend on the latest LSU::XS if the system support XS.
+
+ 0.55 2017-07-22
+ - Fixed incorrect comments in doc examples for uniq().
+ - Added a new function, mode(), requested by Jerrad Pierce. GH #2.
+
+-------------------------------------------------------------------
Old:
----
List-SomeUtils-0.54.tar.gz
New:
----
List-SomeUtils-0.56.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-List-SomeUtils.spec ++++++
--- /var/tmp/diff_new_pack.a5kPyM/_old 2017-08-19 10:55:10.346990605 +0200
+++ /var/tmp/diff_new_pack.a5kPyM/_new 2017-08-19 10:55:10.350990041 +0200
@@ -17,7 +17,7 @@
Name: perl-List-SomeUtils
-Version: 0.54
+Version: 0.56
Release: 0
%define cpan_name List-SomeUtils
Summary: Provide the stuff missing in List::Util
@@ -30,11 +30,11 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
-BuildRequires: perl(List::SomeUtils::XS) >= 0.52
+BuildRequires: perl(List::SomeUtils::XS) >= 0.54
BuildRequires: perl(Module::Implementation)
BuildRequires: perl(Test::LeakTrace)
BuildRequires: perl(Test::More) >= 0.96
-Requires: perl(List::SomeUtils::XS) >= 0.52
+Requires: perl(List::SomeUtils::XS) >= 0.54
Requires: perl(Module::Implementation)
%{perl_requires}
++++++ List-SomeUtils-0.54.tar.gz -> List-SomeUtils-0.56.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/Changes
new/List-SomeUtils-0.56/Changes
--- old/List-SomeUtils-0.54/Changes 2017-06-01 22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/Changes 2017-07-22 19:28:36.000000000 +0200
@@ -1,5 +1,12 @@
Revision history for Perl extension List-SomeUtils
+0.56 2017-07-22
+ - Make sure we depend on the latest LSU::XS if the system support XS.
+
+0.55 2017-07-22
+ - Fixed incorrect comments in doc examples for uniq().
+ - Added a new function, mode(), requested by Jerrad Pierce. GH #2.
+
0.54 2017-06-01
- Moved issue tracking to GitHub.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/MANIFEST
new/List-SomeUtils-0.56/MANIFEST
--- old/List-SomeUtils-0.54/MANIFEST 2017-06-01 22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/MANIFEST 2017-07-22 19:28:36.000000000 +0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest
v6.009.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest
v6.010.
CONTRIBUTING.md
Changes
INSTALL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/META.json
new/List-SomeUtils-0.56/META.json
--- old/List-SomeUtils-0.54/META.json 2017-06-01 22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/META.json 2017-07-22 19:28:36.000000000 +0200
@@ -7,7 +7,7 @@
"Dave Rolsky <[email protected]>"
],
"dynamic_config" : 1,
- "generated_by" : "Dist::Zilla version 6.009, CPAN::Meta::Converter version
2.150010",
+ "generated_by" : "Dist::Zilla version 6.010, CPAN::Meta::Converter version
2.150010",
"license" : [
"perl_5"
],
@@ -61,6 +61,7 @@
"requires" : {
"Carp" : "0",
"Exporter" : "0",
+ "List::Util" : "0",
"Module::Implementation" : "0",
"perl" : "5.006",
"strict" : "0",
@@ -75,6 +76,8 @@
"requires" : {
"ExtUtils::MakeMaker" : "0",
"File::Spec" : "0",
+ "Scalar::Util" : "0",
+ "Storable" : "0",
"Test::Builder::Module" : "0",
"Test::LeakTrace" : "0",
"Test::More" : "0.96",
@@ -88,11 +91,11 @@
"provides" : {
"List::SomeUtils" : {
"file" : "lib/List/SomeUtils.pm",
- "version" : "0.54"
+ "version" : "0.56"
},
"List::SomeUtils::PP" : {
"file" : "lib/List/SomeUtils/PP.pm",
- "version" : "0.54"
+ "version" : "0.56"
}
},
"release_status" : "stable",
@@ -107,7 +110,7 @@
"web" : "https://github.com/houseabsolute/List-SomeUtils"
}
},
- "version" : "0.54",
+ "version" : "0.56",
"x_Dist_Zilla" : {
"perl" : {
"version" : "5.024001"
@@ -121,7 +124,7 @@
}
},
"name" : "@DROLSKY/MakeMaker",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Git::GatherDir",
@@ -151,27 +154,27 @@
{
"class" : "Dist::Zilla::Plugin::ManifestSkip",
"name" : "@DROLSKY/ManifestSkip",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::License",
"name" : "@DROLSKY/License",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::ExecDir",
"name" : "@DROLSKY/ExecDir",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::ShareDir",
"name" : "@DROLSKY/ShareDir",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Manifest",
"name" : "@DROLSKY/Manifest",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::CheckVersionIncrement",
@@ -181,22 +184,22 @@
{
"class" : "Dist::Zilla::Plugin::TestRelease",
"name" : "@DROLSKY/TestRelease",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::ConfirmRelease",
"name" : "@DROLSKY/ConfirmRelease",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::UploadToCPAN",
"name" : "@DROLSKY/UploadToCPAN",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::VersionFromMainModule",
"name" : "@DROLSKY/VersionFromMainModule",
- "version" : "0.02"
+ "version" : "0.03"
},
{
"class" : "Dist::Zilla::Plugin::Authority",
@@ -206,7 +209,7 @@
{
"class" : "Dist::Zilla::Plugin::AutoPrereqs",
"name" : "@DROLSKY/AutoPrereqs",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::CopyFilesFromBuild",
@@ -231,7 +234,7 @@
{
"class" : "Dist::Zilla::Plugin::MetaResources",
"name" : "@DROLSKY/MetaResources",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::MetaProvides::Package",
@@ -241,13 +244,13 @@
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" :
"@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
- "version" : "6.009"
+ "version" : "6.010"
}
],
"include_underscores" : 0
},
"Dist::Zilla::Role::MetaProvider::Provider" : {
- "$Dist::Zilla::Role::MetaProvider::Provider::VERSION" :
"2.002003",
+ "$Dist::Zilla::Role::MetaProvider::Provider::VERSION" :
"2.002004",
"inherit_missing" : 1,
"inherit_version" : 1,
"meta_noindex" : 1
@@ -268,22 +271,22 @@
{
"class" : "Dist::Zilla::Plugin::MetaConfig",
"name" : "@DROLSKY/MetaConfig",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::MetaJSON",
"name" : "@DROLSKY/MetaJSON",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::MetaYAML",
"name" : "@DROLSKY/MetaYAML",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::NextRelease",
"name" : "@DROLSKY/NextRelease",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs",
@@ -294,7 +297,7 @@
}
},
"name" : "@DROLSKY/Test::More with subtest",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs",
@@ -305,7 +308,7 @@
}
},
"name" : "@DROLSKY/Modules for use with tidyall",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs",
@@ -316,7 +319,7 @@
}
},
"name" : "@DROLSKY/Test::Version which fixes
https://github.com/plicease/Test-Version/issues/7",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::PromptIfStale",
@@ -475,7 +478,7 @@
{
"class" : "Dist::Zilla::Plugin::PodSyntaxTests",
"name" : "@DROLSKY/PodSyntaxTests",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::RunExtraTests",
@@ -796,7 +799,7 @@
{
"class" : "Dist::Zilla::Plugin::CPANFile",
"name" : "@DROLSKY/CPANFile",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::DROLSKY::License",
@@ -926,7 +929,7 @@
"branch" : null,
"changelog" : "Changes",
"signed" : 0,
- "tag" : "v0.54",
+ "tag" : "v0.56",
"tag_format" : "v%v",
"tag_message" : "v%v"
},
@@ -1027,7 +1030,7 @@
}
},
"name" : "DevelopRequires",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::DynamicPrereqs",
@@ -1043,57 +1046,57 @@
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":InstallModules",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":IncModules",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":TestFiles",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ExtraTestFiles",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ExecFiles",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":PerlExecFiles",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ShareFiles",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":MainModule",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":AllFiles",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":NoFiles",
- "version" : "6.009"
+ "version" : "6.010"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" :
"@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
- "version" : "6.009"
+ "version" : "6.010"
}
],
"zilla" : {
@@ -1101,7 +1104,7 @@
"config" : {
"is_trial" : 0
},
- "version" : "6.009"
+ "version" : "6.010"
}
},
"x_authority" : "cpan:DROLSKY",
@@ -1119,6 +1122,6 @@
"Tokuhiro Matsuno <[email protected]>",
"Tom Wyant <[email protected]>"
],
- "x_serialization_backend" : "Cpanel::JSON::XS version 3.0229"
+ "x_serialization_backend" : "Cpanel::JSON::XS version 3.0233"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/META.yml
new/List-SomeUtils-0.56/META.yml
--- old/List-SomeUtils-0.54/META.yml 2017-06-01 22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/META.yml 2017-07-22 19:28:36.000000000 +0200
@@ -8,6 +8,8 @@
build_requires:
ExtUtils::MakeMaker: '0'
File::Spec: '0'
+ Scalar::Util: '0'
+ Storable: '0'
Test::Builder::Module: '0'
Test::LeakTrace: '0'
Test::More: '0.96'
@@ -19,7 +21,7 @@
ExtUtils::MakeMaker: '0'
Text::ParseWords: '0'
dynamic_config: 1
-generated_by: 'Dist::Zilla version 6.009, CPAN::Meta::Converter version
2.150010'
+generated_by: 'Dist::Zilla version 6.010, CPAN::Meta::Converter version
2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -28,13 +30,14 @@
provides:
List::SomeUtils:
file: lib/List/SomeUtils.pm
- version: '0.54'
+ version: '0.56'
List::SomeUtils::PP:
file: lib/List/SomeUtils/PP.pm
- version: '0.54'
+ version: '0.56'
requires:
Carp: '0'
Exporter: '0'
+ List::Util: '0'
Module::Implementation: '0'
perl: '5.006'
strict: '0'
@@ -44,7 +47,7 @@
bugtracker: https://github.com/houseabsolute/List-SomeUtils/issues
homepage: http://metacpan.org/release/List-SomeUtils
repository: git://github.com/houseabsolute/List-SomeUtils.git
-version: '0.54'
+version: '0.56'
x_Dist_Zilla:
perl:
version: '5.024001'
@@ -55,7 +58,7 @@
Dist::Zilla::Role::TestRunner:
default_jobs: 1
name: '@DROLSKY/MakeMaker'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::Git::GatherDir
config:
@@ -79,23 +82,23 @@
-
class: Dist::Zilla::Plugin::ManifestSkip
name: '@DROLSKY/ManifestSkip'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::License
name: '@DROLSKY/License'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::ExecDir
name: '@DROLSKY/ExecDir'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::ShareDir
name: '@DROLSKY/ShareDir'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::Manifest
name: '@DROLSKY/Manifest'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::CheckVersionIncrement
name: '@DROLSKY/CheckVersionIncrement'
@@ -103,19 +106,19 @@
-
class: Dist::Zilla::Plugin::TestRelease
name: '@DROLSKY/TestRelease'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::ConfirmRelease
name: '@DROLSKY/ConfirmRelease'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::UploadToCPAN
name: '@DROLSKY/UploadToCPAN'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::VersionFromMainModule
name: '@DROLSKY/VersionFromMainModule'
- version: '0.02'
+ version: '0.03'
-
class: Dist::Zilla::Plugin::Authority
name: '@DROLSKY/Authority'
@@ -123,7 +126,7 @@
-
class: Dist::Zilla::Plugin::AutoPrereqs
name: '@DROLSKY/AutoPrereqs'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::CopyFilesFromBuild
name: '@DROLSKY/CopyFilesFromBuild'
@@ -142,7 +145,7 @@
-
class: Dist::Zilla::Plugin::MetaResources
name: '@DROLSKY/MetaResources'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::MetaProvides::Package
config:
@@ -151,10 +154,10 @@
-
class: Dist::Zilla::Plugin::FinderCode
name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
- version: '6.009'
+ version: '6.010'
include_underscores: 0
Dist::Zilla::Role::MetaProvider::Provider:
- $Dist::Zilla::Role::MetaProvider::Provider::VERSION: '2.002003'
+ $Dist::Zilla::Role::MetaProvider::Provider::VERSION: '2.002004'
inherit_missing: '1'
inherit_version: '1'
meta_noindex: '1'
@@ -170,19 +173,19 @@
-
class: Dist::Zilla::Plugin::MetaConfig
name: '@DROLSKY/MetaConfig'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::MetaJSON
name: '@DROLSKY/MetaJSON'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::MetaYAML
name: '@DROLSKY/MetaYAML'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::NextRelease
name: '@DROLSKY/NextRelease'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::Prereqs
config:
@@ -190,7 +193,7 @@
phase: test
type: requires
name: '@DROLSKY/Test::More with subtest'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::Prereqs
config:
@@ -198,7 +201,7 @@
phase: develop
type: requires
name: '@DROLSKY/Modules for use with tidyall'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::Prereqs
config:
@@ -206,7 +209,7 @@
phase: develop
type: requires
name: '@DROLSKY/Test::Version which fixes
https://github.com/plicease/Test-Version/issues/7'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::PromptIfStale
config:
@@ -350,7 +353,7 @@
-
class: Dist::Zilla::Plugin::PodSyntaxTests
name: '@DROLSKY/PodSyntaxTests'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::RunExtraTests
config:
@@ -598,7 +601,7 @@
-
class: Dist::Zilla::Plugin::CPANFile
name: '@DROLSKY/CPANFile'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::DROLSKY::License
name: '@DROLSKY/DROLSKY::License'
@@ -698,7 +701,7 @@
branch: ~
changelog: Changes
signed: 0
- tag: v0.54
+ tag: v0.56
tag_format: v%v
tag_message: v%v
Dist::Zilla::Role::Git::Repo:
@@ -770,7 +773,7 @@
phase: develop
type: requires
name: DevelopRequires
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::DynamicPrereqs
config:
@@ -782,52 +785,52 @@
-
class: Dist::Zilla::Plugin::FinderCode
name: ':InstallModules'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':IncModules'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':TestFiles'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ExtraTestFiles'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ExecFiles'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':PerlExecFiles'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ShareFiles'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':MainModule'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':AllFiles'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':NoFiles'
- version: '6.009'
+ version: '6.010'
-
class: Dist::Zilla::Plugin::FinderCode
name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
- version: '6.009'
+ version: '6.010'
zilla:
class: Dist::Zilla::Dist::Builder
config:
is_trial: '0'
- version: '6.009'
+ version: '6.010'
x_authority: cpan:DROLSKY
x_contributors:
- 'Aaron Crane <[email protected]>'
@@ -842,4 +845,4 @@
- 'Toby Inkster <[email protected]>'
- 'Tokuhiro Matsuno <[email protected]>'
- 'Tom Wyant <[email protected]>'
-x_serialization_backend: 'YAML::Tiny version 1.69'
+x_serialization_backend: 'YAML::Tiny version 1.70'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/Makefile.PL
new/List-SomeUtils-0.56/Makefile.PL
--- old/List-SomeUtils-0.54/Makefile.PL 2017-06-01 22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/Makefile.PL 2017-07-22 19:28:36.000000000 +0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker
v6.009.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker
v6.010.
use strict;
use warnings;
@@ -20,6 +20,7 @@
"PREREQ_PM" => {
"Carp" => 0,
"Exporter" => 0,
+ "List::Util" => 0,
"Module::Implementation" => 0,
"strict" => 0,
"vars" => 0,
@@ -28,6 +29,8 @@
"TEST_REQUIRES" => {
"ExtUtils::MakeMaker" => 0,
"File::Spec" => 0,
+ "Scalar::Util" => 0,
+ "Storable" => 0,
"Test::Builder::Module" => 0,
"Test::LeakTrace" => 0,
"Test::More" => "0.96",
@@ -36,7 +39,7 @@
"lib" => 0,
"overload" => 0
},
- "VERSION" => "0.54",
+ "VERSION" => "0.56",
"test" => {
"TESTS" => "t/*.t"
}
@@ -48,7 +51,10 @@
"Exporter" => 0,
"ExtUtils::MakeMaker" => 0,
"File::Spec" => 0,
+ "List::Util" => 0,
"Module::Implementation" => 0,
+ "Scalar::Util" => 0,
+ "Storable" => 0,
"Test::Builder::Module" => 0,
"Test::LeakTrace" => 0,
"Test::More" => "0.96",
@@ -62,7 +68,7 @@
);
# inserted by Dist::Zilla::Plugin::DynamicPrereqs 0.033
-requires('List::SomeUtils::XS', '0.52') if !want_pp() and can_xs();
+requires('List::SomeUtils::XS', '0.54') if !want_pp() and can_xs();
unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/README.md
new/List-SomeUtils-0.56/README.md
--- old/List-SomeUtils-0.54/README.md 2017-06-01 22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/README.md 2017-07-22 19:28:36.000000000 +0200
@@ -4,7 +4,7 @@
# VERSION
-version 0.54
+version 0.56
# SYNOPSIS
@@ -33,15 +33,15 @@
# WHY DOES THIS MODULE EXIST?
You might wonder why this module exists when we already have
-[List::MoreUtils](https://metacpan.org/pod/List::MoreUtils). In fact, this
module is the same code as is found in LMU
-with no significant changes. However, the LMU distribution depends on several
-modules for configuration (to run the Makefile.PL) that some folks in the Perl
-community don't think are appropriate for a module high upstream in the CPAN
-river.
+[List::MoreUtils](https://metacpan.org/pod/List::MoreUtils). In fact, this
module is (nearly) the same code as is found
+in LMU with no significant changes. However, the LMU distribution depends on
+several modules for configuration (to run the Makefile.PL) that some folks in
+the Perl community don't think are appropriate for a module high upstream in
+the CPAN river.
I (Dave Rolsky) don't have a strong opinion on this, but I _do_ like the
functions provided by LMU, and I'm tired of getting patches and PRs to remove
-it from my code.
+LMU from my code.
This distribution exists to let me use the functionality I like without having
to get into tiring arguments about issues I don't really care about.
@@ -265,9 +265,9 @@
my $x = uniq 1, 1, 2, 2, 3, 5, 3, 4; # returns 5
# returns "Mike", "Michael", "Richard", "Rick"
my @n = distinct "Mike", "Michael", "Richard", "Rick", "Michael", "Rick"
- # returns '', 'S1', A5' and complains about "Use of uninitialized value"
+ # returns '', undef, 'S1', A5'
my @s = distinct '', undef, 'S1', 'A5'
- # returns undef, 'S1', A5' and complains about "Use of uninitialized value"
+ # returns '', undef, 'S1', A5'
my @w = uniq undef, '', 'S1', 'A5'
`distinct` is an alias for `uniq`.
@@ -581,6 +581,19 @@
fairly big in order for `minmax` to win over a naive implementation. This
limitation does not apply to the XS version.
+### mode LIST
+
+Calculates the most common items in the list and returns them as a list. This
+is effectively done by string comparisons, so references will be
+stringified. If they implement string overloading, this will be used.
+
+If more than one item appears the same number of times in the list, all such
+items will be returned. For example, the mode of a unique list is the list
+itself.
+
+This function **always** returns a list. That means that in scalar context you
+get a count indicating the number of modes in the list.
+
# MAINTENANCE
The maintenance goal is to preserve the documented semantics of the API;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/cpanfile
new/List-SomeUtils-0.56/cpanfile
--- old/List-SomeUtils-0.54/cpanfile 2017-06-01 22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/cpanfile 2017-07-22 19:28:36.000000000 +0200
@@ -1,5 +1,6 @@
requires "Carp" => "0";
requires "Exporter" => "0";
+requires "List::Util" => "0";
requires "Module::Implementation" => "0";
requires "perl" => "5.006";
requires "strict" => "0";
@@ -9,6 +10,8 @@
on 'test' => sub {
requires "ExtUtils::MakeMaker" => "0";
requires "File::Spec" => "0";
+ requires "Scalar::Util" => "0";
+ requires "Storable" => "0";
requires "Test::Builder::Module" => "0";
requires "Test::LeakTrace" => "0";
requires "Test::More" => "0.96";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/dist.ini
new/List-SomeUtils-0.56/dist.ini
--- old/List-SomeUtils-0.54/dist.ini 2017-06-01 22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/dist.ini 2017-07-22 19:28:36.000000000 +0200
@@ -23,4 +23,4 @@
[DynamicPrereqs]
:version = 0.029
--body = requires('List::SomeUtils::XS', '0.52') if !want_pp() and can_xs();
+-body = requires('List::SomeUtils::XS', '0.54') if !want_pp() and can_xs();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/inc/ExtUtils/HasCompiler.pm
new/List-SomeUtils-0.56/inc/ExtUtils/HasCompiler.pm
--- old/List-SomeUtils-0.54/inc/ExtUtils/HasCompiler.pm 2017-06-01
22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/inc/ExtUtils/HasCompiler.pm 2017-07-22
19:28:36.000000000 +0200
@@ -1,10 +1,10 @@
package ExtUtils::HasCompiler;
-$ExtUtils::HasCompiler::VERSION = '0.017';
+$ExtUtils::HasCompiler::VERSION = '0.021';
use strict;
use warnings;
use base 'Exporter';
-our @EXPORT_OK = qw/can_compile_loadable_object/;
+our @EXPORT_OK = qw/can_compile_loadable_object can_compile_static_library
can_compile_extension/;
our %EXPORT_TAGS = (all => \@EXPORT_OK);
use Config;
@@ -75,23 +75,14 @@
my ($source_handle, $source_name) = tempfile('TESTXXXX', DIR =>
$tempdir, SUFFIX => '.c', UNLINK => 1);
my $basename = basename($source_name, '.c');
-
- my $shortname = '_Loadable' . $counter++;
- my $package = "ExtUtils::HasCompiler::$shortname";
- printf $source_handle $loadable_object_format, $basename, $package or
do { carp "Couldn't write to $source_name: $!"; return };
- close $source_handle or do { carp "Couldn't close $source_name: $!";
return };
-
my $abs_basename = catfile($tempdir, $basename);
- my $object_file = $abs_basename . $config->get('_o');
- my $loadable_object = $abs_basename . '.' . $config->get('dlext');
- my $incdir = catdir($config->get('archlibexp'), 'CORE');
- my ($cc, $ccflags, $optimize, $cccdlflags, $ld, $ldflags, $lddlflags,
$libperl, $perllibs) = map { $config->get($_) } qw/cc ccflags optimize
cccdlflags ld ldflags lddlflags libperl perllibs/;
+ my ($cc, $ccflags, $optimize, $cccdlflags, $ld, $ldflags, $lddlflags,
$libperl, $perllibs, $archlibexp, $_o, $dlext) = map { $config->get($_) } qw/cc
ccflags optimize cccdlflags ld ldflags lddlflags libperl perllibs archlibexp _o
dlext/;
+
+ my $incdir = catdir($archlibexp, 'CORE');
+ my $object_file = $abs_basename.$_o;
+ my $loadable_object = "$abs_basename.$dlext";
- if ($prelinking{$^O}) {
- require ExtUtils::Mksymlists;
- ExtUtils::Mksymlists::Mksymlists(NAME => $basename, FILE =>
$abs_basename, IMPORTS => {});
- }
my @commands;
if ($^O eq 'MSWin32' && $cc =~ /^cl/) {
push @commands, qq{$cc $ccflags $cccdlflags $optimize /I
"$incdir" /c $source_name /Fo$object_file};
@@ -127,6 +118,16 @@
push @commands, qq{$ld $object_file -o $loadable_object
$lddlflags @extra};
}
+ if ($prelinking{$^O}) {
+ require ExtUtils::Mksymlists;
+ ExtUtils::Mksymlists::Mksymlists(NAME => $basename, FILE =>
$abs_basename, IMPORTS => {});
+ }
+
+ my $shortname = '_Loadable' . $counter++;
+ my $package = "ExtUtils::HasCompiler::$shortname";
+ printf $source_handle $loadable_object_format, $basename, $package or
do { carp "Couldn't write to $source_name: $!"; return };
+ close $source_handle or do { carp "Couldn't close $source_name: $!";
return };
+
for my $command (@commands) {
print $output "$command\n" if not $args{quiet};
system $command and do { carp "Couldn't execute $command: $!";
return };
@@ -152,6 +153,54 @@
}
}
+my %static_unsupported_on = map { $_ => 1 } qw/VMS aix MSWin32 cygwin/;
+sub can_compile_static_library {
+ my %args = @_;
+
+ my $output = $args{output} || \*STDOUT;
+
+ my $config = $args{config} || 'ExtUtils::HasCompiler::Config';
+ return if $config->get('useshrplib') eq 'true';
+
+ my ($source_handle, $source_name) = tempfile('TESTXXXX', DIR =>
$tempdir, SUFFIX => '.c', UNLINK => 1);
+ my $basename = basename($source_name, '.c');
+ my $abs_basename = catfile($tempdir, $basename);
+
+ my ($cc, $ccflags, $optimize, $ar, $full_ar, $ranlib, $archlibexp, $_o,
$lib_ext) = map { $config->get($_) } qw/cc ccflags optimize ar full_ar ranlib
archlibexp _o lib_ext/;
+ my $incdir = catdir($archlibexp, 'CORE');
+ my $object_file = "$abs_basename$_o";
+ my $static_library = $abs_basename.$lib_ext;
+
+ my @commands;
+ if ($static_unsupported_on{$^O}) {
+ return;
+ }
+ else {
+ my $my_ar = length $full_ar ? $full_ar : $ar;
+ push @commands, qq{$cc $ccflags $optimize "-I$incdir" -c
$source_name -o $object_file};
+ push @commands, qq{$my_ar cr $static_library $object_file};
+ push @commands, qq{$ranlib $static_library} if $ranlib ne ':';
+ }
+
+ my $shortname = '_Loadable' . $counter++;
+ my $package = "ExtUtils::HasCompiler::$shortname";
+ printf $source_handle $loadable_object_format, $basename, $package or
do { carp "Couldn't write to $source_name: $!"; return };
+ close $source_handle or do { carp "Couldn't close $source_name: $!";
return };
+
+ for my $command (@commands) {
+ print $output "$command\n" if not $args{quiet};
+ system $command and do { carp "Couldn't execute $command: $!";
return };
+ }
+ return 1;
+}
+
+sub can_compile_extension {
+ my %args = @_;
+ $args{config} ||= 'ExtUtils::HasCompiler::Config';
+ my $linktype = $args{linktype} || ($args{config}->get('usedl') ?
'dynamic' : 'static');
+ return $linktype eq 'static' ? can_compile_static_library(%args) :
can_compile_loadable_object(%args);
+}
+
sub ExtUtils::HasCompiler::Config::get {
my (undef, $key) = @_;
return $ENV{uc $key} || $Config{$key};
@@ -173,7 +222,17 @@
=head1 VERSION
-version 0.017
+version 0.021
+
+=head1 SYNOPSIS
+
+ use ExtUtils::HasCompiler 'can_compile_extension';
+ if (can_compile_extension()) {
+ ...
+ }
+ else {
+ ...
+ }
=head1 DESCRIPTION
@@ -203,6 +262,34 @@
=back
+=head2 can_compile_static_library(%opts)
+
+This checks if the system can compile and link a perl static library. It does
not check it it can compile a new perl with it. It may take the following
options:
+
+=over 4
+
+=item * quiet
+
+Do not output the executed compilation commands.
+
+=item * config
+
+An L<ExtUtils::Config|ExtUtils::Config> (compatible) object for configuration.
+
+=back
+
+=head2 can_compile_extension(%opts)
+
+This will call either C<can_compile_loadable_object>, or
C<can_compile_static_library>, depending on which is the default on your
configuration. In addition to the arguments listed above, it can take one more
optional argument:
+
+=over 4
+
+=item * linktype
+
+This will force the linktype to be either static or dynamic. Dynamic
compilation on a static perl won't work, but static libraries can be viable on
a dynamic perl.
+
+=back
+
=head1 AUTHOR
Leon Timmermans <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/lib/List/SomeUtils/PP.pm
new/List-SomeUtils-0.56/lib/List/SomeUtils/PP.pm
--- old/List-SomeUtils-0.54/lib/List/SomeUtils/PP.pm 2017-06-01
22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/lib/List/SomeUtils/PP.pm 2017-07-22
19:28:36.000000000 +0200
@@ -4,7 +4,9 @@
use strict;
use warnings;
-our $VERSION = '0.54';
+use List::Util qw( max );
+
+our $VERSION = '0.56';
sub any (&@)
{
@@ -543,6 +545,13 @@
map { [ $_, scalar( $code->() ) ] } @list;
}
+sub mode (@) {
+ my %v;
+ $v{$_}++ for @_;
+ my $max = max( values %v );
+ return grep { $v{$_} == $max } keys %v;
+}
+
1;
# ABSTRACT: Pure Perl implementation for List::SomeUtils
@@ -559,7 +568,7 @@
=head1 VERSION
-version 0.54
+version 0.56
=head1 DESCRIPTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/lib/List/SomeUtils.pm
new/List-SomeUtils-0.56/lib/List/SomeUtils.pm
--- old/List-SomeUtils-0.54/lib/List/SomeUtils.pm 2017-06-01
22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/lib/List/SomeUtils.pm 2017-07-22
19:28:36.000000000 +0200
@@ -4,29 +4,56 @@
use strict;
use warnings;
-our $VERSION = '0.54';
+our $VERSION = '0.56';
use Exporter qw( import );
use Module::Implementation;
my @subs = qw(
- any all none notall
- true false
- firstidx lastidx
- insert_after insert_after_string
- apply indexes
- after after_incl before before_incl
- firstval lastval
- each_array each_arrayref
- pairwise natatime
- mesh uniq
- minmax part
+ after
+ after_incl
+ all
+ all_u
+ any
+ any_u
+ apply
+ before
+ before_incl
bsearch
- sort_by nsort_by
- one any_u all_u none_u notall_u one_u
- firstres onlyidx onlyval onlyres lastres
- singleton bsearchidx
+ bsearchidx
+ each_array
+ each_arrayref
+ false
+ firstidx
+ firstres
+ firstval
+ indexes
+ insert_after
+ insert_after_string
+ lastidx
+ lastres
+ lastval
+ mesh
+ minmax
+ mode
+ natatime
+ none
+ none_u
+ notall
+ notall_u
+ nsort_by
+ one
+ one_u
+ onlyidx
+ onlyres
+ onlyval
+ pairwise
+ part
+ singleton
+ sort_by
+ true
+ uniq
);
my %aliases = (
@@ -83,7 +110,7 @@
=head1 VERSION
-version 0.54
+version 0.56
=head1 SYNOPSIS
@@ -112,15 +139,15 @@
=head1 WHY DOES THIS MODULE EXIST?
You might wonder why this module exists when we already have
-L<List::MoreUtils>. In fact, this module is the same code as is found in LMU
-with no significant changes. However, the LMU distribution depends on several
-modules for configuration (to run the Makefile.PL) that some folks in the Perl
-community don't think are appropriate for a module high upstream in the CPAN
-river.
+L<List::MoreUtils>. In fact, this module is (nearly) the same code as is found
+in LMU with no significant changes. However, the LMU distribution depends on
+several modules for configuration (to run the Makefile.PL) that some folks in
+the Perl community don't think are appropriate for a module high upstream in
+the CPAN river.
I (Dave Rolsky) don't have a strong opinion on this, but I I<do> like the
functions provided by LMU, and I'm tired of getting patches and PRs to remove
-it from my code.
+LMU from my code.
This distribution exists to let me use the functionality I like without having
to get into tiring arguments about issues I don't really care about.
@@ -353,9 +380,9 @@
my $x = uniq 1, 1, 2, 2, 3, 5, 3, 4; # returns 5
# returns "Mike", "Michael", "Richard", "Rick"
my @n = distinct "Mike", "Michael", "Richard", "Rick", "Michael", "Rick"
- # returns '', 'S1', A5' and complains about "Use of uninitialized value"
+ # returns '', undef, 'S1', A5'
my @s = distinct '', undef, 'S1', 'A5'
- # returns undef, 'S1', A5' and complains about "Use of uninitialized value"
+ # returns '', undef, 'S1', A5'
my @w = uniq undef, '', 'S1', 'A5'
C<distinct> is an alias for C<uniq>.
@@ -669,6 +696,19 @@
fairly big in order for C<minmax> to win over a naive implementation. This
limitation does not apply to the XS version.
+=head3 mode LIST
+
+Calculates the most common items in the list and returns them as a list. This
+is effectively done by string comparisons, so references will be
+stringified. If they implement string overloading, this will be used.
+
+If more than one item appears the same number of times in the list, all such
+items will be returned. For example, the mode of a unique list is the list
+itself.
+
+This function B<always> returns a list. That means that in scalar context you
+get a count indicating the number of modes in the list.
+
=head1 MAINTENANCE
The maintenance goal is to preserve the documented semantics of the API;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/t/00-report-prereqs.dd
new/List-SomeUtils-0.56/t/00-report-prereqs.dd
--- old/List-SomeUtils-0.54/t/00-report-prereqs.dd 2017-06-01
22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/t/00-report-prereqs.dd 2017-07-22
19:28:36.000000000 +0200
@@ -43,6 +43,7 @@
'requires' => {
'Carp' => '0',
'Exporter' => '0',
+ 'List::Util' => '0',
'Module::Implementation' => '0',
'perl' => '5.006',
'strict' => '0',
@@ -57,6 +58,8 @@
'requires' => {
'ExtUtils::MakeMaker' => '0',
'File::Spec' => '0',
+ 'Scalar::Util' => '0',
+ 'Storable' => '0',
'Test::Builder::Module' => '0',
'Test::LeakTrace' => '0',
'Test::More' => '0.96',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/List-SomeUtils-0.54/t/lib/LSU/Test/Functions.pm
new/List-SomeUtils-0.56/t/lib/LSU/Test/Functions.pm
--- old/List-SomeUtils-0.54/t/lib/LSU/Test/Functions.pm 2017-06-01
22:03:43.000000000 +0200
+++ new/List-SomeUtils-0.56/t/lib/LSU/Test/Functions.pm 2017-07-22
19:28:36.000000000 +0200
@@ -3,61 +3,65 @@
use strict;
use warnings;
-use Test::More;
-use Test::LSU;
-use Tie::Array ();
-use List::SomeUtils ':all';
-
use Config;
+use List::SomeUtils ':all';
+use Scalar::Util qw( weaken );
+use Storable qw( freeze );
+use Tie::Array ();
-my $have_scalar_util;
-eval "use Scalar::Util qw(); \$have_scalar_util = 1;";
-
-eval "use Storable qw();";
-$@ or Storable->import(qw(freeze));
+use Test::More 0.96;
+use Test::LSU;
# Run all tests
sub run_tests {
- test_any();
- test_all();
- test_none();
- test_notall();
- test_one();
- test_any_u();
- test_all_u();
- test_none_u();
- test_notall_u();
- test_one_u();
- test_true();
- test_false();
- test_firstidx();
- test_lastidx();
- test_onlyidx();
- test_insert_after();
- test_insert_after_string();
- test_apply();
- test_indexes();
- test_before();
- test_before_incl();
- test_after();
- test_after_incl();
- test_firstval();
- test_lastval();
- test_onlyval();
- test_firstres();
- test_lastres();
- test_onlyres();
- test_each_array();
- test_pairwise();
- test_natatime();
- test_zip();
- test_mesh();
- test_uniq();
- test_singleton();
- test_part();
- test_minmax();
- test_bsearch();
- test_bsearchidx();
+ for my $export (
+ qw(
+ any
+ all
+ none
+ notall
+ one
+ any_u
+ all_u
+ none_u
+ notall_u
+ one_u
+ true
+ false
+ firstidx
+ lastidx
+ onlyidx
+ insert_after
+ insert_after_string
+ apply
+ indexes
+ before
+ before_incl
+ after
+ after_incl
+ firstval
+ lastval
+ onlyval
+ firstres
+ lastres
+ onlyres
+ each_array
+ pairwise
+ natatime
+ zip
+ mesh
+ uniq
+ singleton
+ part
+ minmax
+ bsearch
+ bsearchidx
+ mode
+ )
+ ) {
+ my $sub = __PACKAGE__->can( 'test_' . $export );
+ subtest( $export, $sub );
+ }
done_testing();
}
@@ -419,11 +423,10 @@
$lr and is_deeply( \@o, [ 1, 3, 5 ], "indexes/leak: odd" );
$lr and is_deeply( \@e, [ 0, 2, 4 ], "indexes/leak: even" );
- if ($have_scalar_util) {
- my $ref = \( indexes( sub {1}, 123 ) );
- Scalar::Util::weaken($ref);
- is( $ref, undef, "weakened away" );
- }
+ my $ref = \( indexes( sub {1}, 123 ) );
+ weaken($ref);
+ is( $ref, undef, "weakened away" );
+
is_dying( sub { &indexes( 42, 4711 ); } );
}
@@ -1567,4 +1570,105 @@
);
}
+sub test_mode {
+ my @list = ( 1 .. 5 );
+ is_deeply(
+ [ sort { $a <=> $b } mode(@list) ],
+ [ sort @list ],
+ 'mode of list without repeats is the list itself'
+ );
+ is(
+ scalar mode(@list),
+ 5,
+ 'mode returns modality in scalar context'
+ );
+
+ @list = ( 1, 1 .. 5 );
+ is_deeply(
+ [ mode(@list) ],
+ [1],
+ 'mode of list with one repeat is the repeated item'
+ );
+ is(
+ scalar mode(@list),
+ 1,
+ 'mode returns modality in scalar context'
+ );
+
+ @list = ( 1, 1 .. 5, 5 );
+ is_deeply(
+ [ sort { $a <=> $b } mode(@list) ],
+ [ 1, 5 ],
+ 'mode of bimodal list'
+ );
+ is(
+ scalar mode(@list),
+ 2,
+ 'mode returns modality in scalar context'
+ );
+
+ @list = ( 1, 1 .. 5, 5, 9, 9 );
+ is_deeply(
+ [ sort { $a <=> $b } mode(@list) ],
+ [ 1, 5, 9 ],
+ 'mode of trimodal list'
+ );
+
+ @list = ( 1, 1, 1, 1 .. 5, 5, 9, 9 );
+ is_deeply(
+ [ mode(@list) ],
+ [1],
+ 'mode of list with multiple repeats is the most repeated item'
+ );
+
+ @list = ();
+ is_deeply(
+ [ mode() ],
+ [],
+ 'mode of empty list is an empty list'
+ );
+ is(
+ scalar mode(@list),
+ 0,
+ 'mode returns modality in scalar context'
+ );
+
+ @list = qw( a a b c d );
+ is_deeply(
+ [ mode(@list) ],
+ ['a'],
+ 'mode of list of strings'
+ );
+
+ my $foo1 = Overloaded->new('foo');
+ my $foo2 = Overloaded->new('foo');
+ my $bar = Overloaded->new('bar');
+
+ @list = ( $foo1, $foo2, $bar );
+ is_deeply(
+ [ sort( mode(@list) ) ],
+ ['foo'],
+ 'objects passed to mode are stringified'
+ );
+
+ leak_free_ok(
+ mode => sub {
+ my @mode = mode(qw( a b c a b a b ));
+ my $modality = mode(qw( a b c a b a b ));
+ @mode = mode();
+ $modality = mode();
+ }
+ );
+}
+
+{
+ package Overloaded;
+ use overload q{""} => sub { $_[0]->{string} };
+
+ sub new {
+ my $class = shift;
+ return bless { string => shift }, $class;
+ }
+}
+
1;