[libgeo-coder-osm-perl] 01/02: Import original source of Geo-Coder-OSM 0.03

myon at debian.org myon at debian.org
Mon Mar 23 12:41:37 UTC 2015


This is an automated email from the git hooks/post-receive script.

myon pushed a commit to branch master
in repository libgeo-coder-osm-perl.

commit e9c7a84ea87d884f3369c3888cfed08534aadfc2
Author: Christoph Berg <christoph.berg at credativ.de>
Date:   Mon Mar 23 13:22:12 2015 +0100

    Import original source of Geo-Coder-OSM 0.03
---
 Changes                    |  11 ++
 MANIFEST                   |  18 +++
 META.json                  |  52 ++++++++
 META.yml                   |  29 +++++
 Makefile.PL                |  53 ++++++++
 README                     |  30 +++++
 ex/custom-useragent.pl     |  23 ++++
 lib/Geo/Coder/OSM.pm       | 312 +++++++++++++++++++++++++++++++++++++++++++++
 t/00_compile.t             |   5 +
 t/01_new.t                 |   9 ++
 xt/kwalitee.t              |   7 +
 xt/live.t                  |  65 ++++++++++
 xt/perlcritic.t            |  10 ++
 xt/perlcriticrc            |  22 ++++
 xt/pod.t                   |   9 ++
 xt/pod_coverage.t          |   9 ++
 xt/portability_filenames.t |   9 ++
 xt/vars.t                  |   9 ++
 18 files changed, 682 insertions(+)

diff --git a/Changes b/Changes
new file mode 100644
index 0000000..e1f94d4
--- /dev/null
+++ b/Changes
@@ -0,0 +1,11 @@
+Revision history for Geo-Coder-OSM
+
+0.03  Wed Nov 13 22:40:07 UTC 2013
+    - Added reverse_geocode method.
+    - Allowed for additional sources to be defined.
+
+0.02  Tue Mar 22 00:15:25 UTC 2011
+    - Added support for the Mapquest mirror of the Nominatim service.
+
+0.01  Sun Jun 27 00:33:44 UTC 2010
+    - Initial distribution.
diff --git a/MANIFEST b/MANIFEST
new file mode 100644
index 0000000..ead8518
--- /dev/null
+++ b/MANIFEST
@@ -0,0 +1,18 @@
+Changes
+ex/custom-useragent.pl
+lib/Geo/Coder/OSM.pm
+Makefile.PL
+MANIFEST			This list of files
+README
+t/00_compile.t
+t/01_new.t
+xt/kwalitee.t
+xt/live.t
+xt/perlcritic.t
+xt/perlcriticrc
+xt/pod.t
+xt/pod_coverage.t
+xt/portability_filenames.t
+xt/vars.t
+META.yml                                 Module YAML meta-data (added by MakeMaker)
+META.json                                Module JSON meta-data (added by MakeMaker)
diff --git a/META.json b/META.json
new file mode 100644
index 0000000..44e5876
--- /dev/null
+++ b/META.json
@@ -0,0 +1,52 @@
+{
+   "abstract" : "Geocode addresses with the OpenStreetMap Nominatim API",
+   "author" : [
+      "gray <gray at cpan.org>"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 6.82, CPAN::Meta::Converter version 2.132830",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "Geo-Coder-OSM",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "Test::More" : "0.82"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "recommends" : {
+            "JSON::XS" : "2"
+         },
+         "requires" : {
+            "Encode" : "0",
+            "JSON" : "2",
+            "LWP::UserAgent" : "0",
+            "URI" : "1.36"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "repository" : {
+         "url" : "http://github.com/gray/geo-coder-osm"
+      }
+   },
+   "version" : "0.03"
+}
diff --git a/META.yml b/META.yml
new file mode 100644
index 0000000..c800493
--- /dev/null
+++ b/META.yml
@@ -0,0 +1,29 @@
+---
+abstract: 'Geocode addresses with the OpenStreetMap Nominatim API'
+author:
+  - 'gray <gray at cpan.org>'
+build_requires:
+  Test::More: 0.82
+configure_requires:
+  ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.82, CPAN::Meta::Converter version 2.132830'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Geo-Coder-OSM
+no_index:
+  directory:
+    - t
+    - inc
+recommends:
+  JSON::XS: 2
+requires:
+  Encode: 0
+  JSON: 2
+  LWP::UserAgent: 0
+  URI: 1.36
+resources:
+  repository: http://github.com/gray/geo-coder-osm
+version: 0.03
diff --git a/Makefile.PL b/Makefile.PL
new file mode 100644
index 0000000..2faa66c
--- /dev/null
+++ b/Makefile.PL
@@ -0,0 +1,53 @@
+use strict;
+use warnings;
+use ExtUtils::MakeMaker;
+
+my %conf = (
+    NAME           => 'Geo::Coder::OSM',
+    AUTHOR         => 'gray <gray at cpan.org>',
+    LICENSE        => 'perl',
+    VERSION_FROM   => 'lib/Geo/Coder/OSM.pm',
+    ABSTRACT_FROM  => 'lib/Geo/Coder/OSM.pm',
+    PREREQ_PM      => {
+        'Encode'         => 0,
+        'JSON'           => 2.0,
+        'LWP::UserAgent' => 0,
+        'URI'            => 1.36,
+    },
+    BUILD_REQUIRES => {
+        'Test::More' => 0.82,
+    },
+    META_MERGE     => {
+        resources  => {
+            repository => 'http://github.com/gray/geo-coder-osm',
+        },
+        recommends => {
+            'JSON::XS' => 2.0,
+        },
+    },
+    dist           => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
+    clean          => { FILES => 'Geo-Coder-OSM-*' },
+);
+
+my $eumm_version=$ExtUtils::MakeMaker::VERSION;
+delete $conf{META_MERGE} if $eumm_version < 6.46;
+$conf{PREREQ_PM} = {
+    %{ $conf{PREREQ_PM} || {} }, %{ delete $conf{BUILD_REQUIRES} },
+} if ($conf{BUILD_REQUIRES} and $eumm_version < 6.5503);
+
+WriteMakefile(%conf);
+
+
+sub MY::postamble {
+    return <<"    MAKE_FRAG";
+authortest:
+\t\$(MAKE) -e \$(TEST_TYPE) TEST_FILES="xt/*.t"
+    MAKE_FRAG
+}
+
+sub MY::dist_test {
+    my $self = shift;
+    return $self->MM::dist_test . <<"    MAKE_FRAG";
+\tcd \$(DISTVNAME) && \$(MAKE) authortest \$(PASTHRU)
+    MAKE_FRAG
+}
diff --git a/README b/README
new file mode 100644
index 0000000..4a377dd
--- /dev/null
+++ b/README
@@ -0,0 +1,30 @@
+Geo-Coder-OSM
+=============
+
+This module provides an interface to the OpenStreetMap Nominatim API
+
+INSTALLATION
+
+To install this module type the following:
+
+    perl Makefile.PL
+    make
+    make test
+    make install
+
+DEPENDENCIES
+
+This module requires these other modules and libraries:
+
+    Encode
+    JSON
+    LWP::UserAgent
+    Test::More
+    URI
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2010-2013 by gray <gray at cpan.org>
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
diff --git a/ex/custom-useragent.pl b/ex/custom-useragent.pl
new file mode 100755
index 0000000..deff913
--- /dev/null
+++ b/ex/custom-useragent.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use Data::Dumper;
+use Geo::Coder::OSM;
+
+my $location = join(' ', @ARGV) || die "Usage: $0 \$location_string";
+
+# Custom useragent identifier.
+my $ua = LWP::UserAgent->new(agent => 'My Geocoder');
+
+# Load any proxy settings from environment variables.
+$ua->env_proxy;
+
+my $geocoder = Geo::Coder::OSM->new(
+    ua    => $ua,
+    debug => 1,
+);
+my $result = $geocoder->geocode(location => $location);
+
+local $Data::Dumper::Indent = 1;
+print Dumper($result);
diff --git a/lib/Geo/Coder/OSM.pm b/lib/Geo/Coder/OSM.pm
new file mode 100644
index 0000000..24b90d6
--- /dev/null
+++ b/lib/Geo/Coder/OSM.pm
@@ -0,0 +1,312 @@
+package Geo::Coder::OSM;
+
+use strict;
+use warnings;
+
+use Carp qw(croak);
+use Encode ();
+use JSON;
+use LWP::UserAgent;
+use URI;
+
+our $VERSION = '0.03';
+$VERSION = eval $VERSION;
+
+our %SOURCES = (
+    osm      => 'http://nominatim.openstreetmap.org',
+    mapquest => 'http://open.mapquestapi.com/nominatim/v1',
+);
+
+sub new {
+    my ($class, @params) = @_;
+    my %params = (@params % 2) ? (key => @params) : @params;
+
+    my $self = bless \ %params, $class;
+
+    $self->ua(
+        $params{ua} || LWP::UserAgent->new(agent => "$class/$VERSION")
+    );
+
+    if (exists $self->{sources}) {
+        my $sources = $self->{sources};
+        $self->{sources} = $sources = [$sources] unless ref $sources;
+        for my $source (@$sources) {
+            croak qq(unknown source '$source')
+                unless exists $SOURCES{$source};
+        }
+    }
+    else {
+        $self->{sources} = ['osm'];
+    }
+
+    $self->{source_idx} = 0;
+
+    if ($self->{debug}) {
+        my $dump_sub = sub { $_[0]->dump(maxlength => 0); return };
+        $self->ua->set_my_handler(request_send  => $dump_sub);
+        $self->ua->set_my_handler(response_done => $dump_sub);
+    }
+    elsif (exists $self->{compress} ? $self->{compress} : 1) {
+        $self->ua->default_header(accept_encoding => 'gzip,deflate');
+    }
+
+    return $self;
+}
+
+sub response { $_[0]->{response} }
+
+sub ua {
+    my ($self, $ua) = @_;
+    if ($ua) {
+        croak q('ua' must be (or derived from) an LWP::UserAgent')
+            unless ref $ua and $ua->isa(q(LWP::UserAgent));
+        $self->{ua} = $ua;
+    }
+    return $self->{ua};
+}
+
+sub geocode {
+    my ($self, @params) = @_;
+    my %params = (@params % 2) ? (location => @params) : @params;
+
+    my $location = delete $params{location} or return;
+    $location = Encode::encode('utf-8', $location);
+
+    # Cycle throught the list of sources.
+    my $idx = ($self->{source_idx} %= @{ $self->{sources} })++;
+
+    my $uri = URI->new($SOURCES{ $self->{sources}[$idx] } . '/search');
+    $uri->query_form(
+        q                 => $location,
+        format            => 'json',
+        addressdetails    => 1,
+        'accept-language' => 'en',
+        %params,
+    );
+
+    return $self->_request($uri);
+}
+
+sub reverse_geocode {
+    my ($self, @params) = @_;
+    my %params = (@params % 2) ? (latlng => @params) : @params;
+
+    # Maintain api compatibility with other geocoders.
+    my ($lat, $lon);
+    if (my $latlon = delete $params{latlng}) {
+        ($lat, $lon) = split '\s*,\s*', $latlon;
+    }
+    else {
+        $lat = delete $params{lat};
+        ($lon) = grep defined, delete @params{qw(lon lng)};
+    }
+    return unless 2 == grep defined, $lat, $lon;
+
+    # Cycle throught the list of sources.
+    my $idx = ($self->{source_idx} %= @{ $self->{sources} })++;
+
+    my $uri = URI->new($SOURCES{ $self->{sources}[$idx] } . '/reverse');
+    $uri->query_form(
+        lat               => $lat,
+        lon               => $lon,
+        format            => 'json',
+        addressdetails    => 1,
+        'accept-language' => 'en',
+        %params,
+    );
+
+    return $self->_request($uri);
+}
+
+sub _request {
+    my ($self, $uri) = @_;
+
+    return unless $uri;
+
+    my $res = $self->{response} = $self->ua->get($uri);
+    return unless $res->is_success;
+
+    # Change the content type of the response (if necessary) so
+    # HTTP::Message will decode the character encoding.
+    $res->content_type('text/plain')
+        unless $res->content_type =~ /^text/;
+
+    my $content = $res->decoded_content;
+    return unless $content;
+
+    my $data = eval { from_json($content) };
+    return unless $data;
+
+    my @results = 'ARRAY' eq ref $data ? @$data : ($data);
+    return wantarray ? @results : $results[0];
+}
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Geo::Coder::OSM - Geocode addresses with the OpenStreetMap Nominatim API
+
+=head1 SYNOPSIS
+
+    use Geo::Coder::OSM;
+
+    my $geocoder = Geo::Coder::OSM->new;
+    my $location = $geocoder->geocode(
+        location => 'Hollywood and Highland, Los Angeles, CA'
+    );
+
+=head1 DESCRIPTION
+
+The C<Geo::Coder::OSM> module provides an interface to the OpenStreet
+Nominatim geocoding service.
+
+=head1 METHODS
+
+=head2 new
+
+    $geocoder = Geo::Coder::OSM->new()
+    $geocoder = Geo::Coder::OSM->new(
+        ua      => $ua,
+        sources => [ 'osm', 'mapquest' ],
+        debug   => 1,
+    )
+
+Creates a new geocoding object.
+
+Accepts an optional B<ua> parameter for passing in a custom LWP::UserAgent
+object.
+
+Accepts an optional B<sources> parameter for specifying the data sources.
+Current valid values are B<osm> and B<mapquest>. The default value is B<osm>.
+To cycle between different sources, specify an array reference for the
+B<sources> value. To define additional sources, see L</SOURCES> below.
+
+=head2 geocode
+
+    $location = $geocoder->geocode(location => $location)
+    @locations = $geocoder->geocode(location => $location)
+
+In scalar context, this method returns the first location result; and in
+list context it returns all location results.
+
+Each location result is a hashref; a typical example looks like:
+
+    {
+        address => {
+            city         => "Los Angeles",
+            country      => "United States of America",
+            country_code => "us",
+            hamlet       => "Hollywood",
+            road         => "Hollywood Boulevard",
+            station      => "Hollywood/Highland",
+            suburb       => "Little Armenia",
+        },
+        boundingbox => [
+            "34.101634979248",   "34.1018371582031",
+            "-118.339317321777", "-118.33910369873",
+        ],
+        class => "railway",
+        display_name =>
+            "Hollywood/Highland, Hollywood Boulevard, Little Armenia, Hollywood, Los Angeles, United States of America",
+        icon =>
+            "http://nominatim.openstreetmap.org/images/mapicons/transport_train_station2.p.20.png",
+        lat => "34.101736",
+        licence =>
+            "Data Copyright OpenStreetMap Contributors, Some Rights Reserved. CC-BY-SA 2.0.",
+        lon      => "-118.33921",
+        osm_id   => 472413621,
+        osm_type => "node",
+        place_id => 9071654,
+        type     => "station",
+    }
+
+=head2 reverse_geocode
+
+    $location = $geocoder->reverse_geocode(lat => $lat, lon => $lon)
+    $location = $geocoder->reverse_geocode(latlng => "$lat,$lon")
+
+Returns a location result for the given lat/lon pair.
+
+=head2 response
+
+    $response = $geocoder->response()
+
+Returns an L<HTTP::Response> object for the last submitted request. Can be
+used to determine the details of an error.
+
+=head2 ua
+
+    $ua = $geocoder->ua()
+    $ua = $geocoder->ua($ua)
+
+Accessor for the UserAgent object.
+
+=head2 SOURCES
+
+To define additional sources add them to the B<%SOURCES> package variable like
+so:
+
+    $Geo::Coder::OSM::SOURCES{local} = 'http://127.0.0.1/api_base_path';
+    $Geo::Coder::OSM::SOURCES{internal} = 'http://internal.corp/api_base_path';
+
+=head1 SEE ALSO
+
+L<http://wiki.openstreetmap.org/wiki/Nominatim>
+
+L<http://open.mapquestapi.com/nominatim/>
+
+=head1 REQUESTS AND BUGS
+
+Please report any bugs or feature requests to
+L<http://rt.cpan.org/Public/Bug/Report.html?Queue=Geo-Coder-OSM>. I will be
+notified, and then you'll automatically be notified of progress on your bug
+as I make changes.
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+    perldoc Geo::Coder::OSM
+
+You can also look for information at:
+
+=over
+
+=item * GitHub Source Repository
+
+L<http://github.com/gray/geo-coder-osm>
+
+=item * AnnoCPAN: Annotated CPAN documentation
+
+L<http://annocpan.org/dist/Geo-Coder-OSM>
+
+=item * CPAN Ratings
+
+L<http://cpanratings.perl.org/d/Geo-Coder-OSM>
+
+=item * RT: CPAN's request tracker
+
+L<http://rt.cpan.org/Public/Dist/Display.html?Name=Geo-Coder-OSM>
+
+=item * Search CPAN
+
+L<http://search.cpan.org/dist/Geo-Coder-OSM/>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2010-2013 gray <gray at cpan.org>, all rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 AUTHOR
+
+gray, <gray at cpan.org>
+
+=cut
diff --git a/t/00_compile.t b/t/00_compile.t
new file mode 100644
index 0000000..0b4e475
--- /dev/null
+++ b/t/00_compile.t
@@ -0,0 +1,5 @@
+use strict;
+use warnings;
+use Test::More tests => 1;
+
+BEGIN { use_ok 'Geo::Coder::OSM' }
diff --git a/t/01_new.t b/t/01_new.t
new file mode 100644
index 0000000..ebef748
--- /dev/null
+++ b/t/01_new.t
@@ -0,0 +1,9 @@
+use strict;
+use warnings;
+use Test::More tests => 3;
+use Geo::Coder::OSM;
+
+new_ok('Geo::Coder::OSM' => []);
+new_ok('Geo::Coder::OSM' => [debug => 1]);
+
+can_ok('Geo::Coder::OSM', qw(geocode response ua));
diff --git a/xt/kwalitee.t b/xt/kwalitee.t
new file mode 100644
index 0000000..7b704ce
--- /dev/null
+++ b/xt/kwalitee.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+use Test::More;
+
+eval { require Test::Kwalitee; Test::Kwalitee->import(); 1 } or do {
+    plan skip_all => 'Test::Kwalitee not installed; skipping';
+};
diff --git a/xt/live.t b/xt/live.t
new file mode 100644
index 0000000..702b314
--- /dev/null
+++ b/xt/live.t
@@ -0,0 +1,65 @@
+use strict;
+use warnings;
+use Encode;
+use Geo::Coder::OSM;
+use LWP::UserAgent;
+use Test::More;
+
+my $debug = $ENV{GEO_CODER_OSM_DEBUG};
+diag "Set GEO_CODER_OSM_DEBUG to see request/response data"
+    unless $debug;
+
+for my $source (qw(osm mapquest)) {
+    my $geocoder = Geo::Coder::OSM->new(
+        debug   => $debug,
+        sources => $source,
+    );
+    {
+        my $address = '132 Maney Hill Road, West Midlands, UK';
+        my $forward = $geocoder->geocode($address);
+        is(
+            $forward->{address}{town},
+            'Sutton Coldfield',
+            "correct town for $address"
+        );
+        my $road = $forward->{address}{road};
+
+        my ($lat, $lon) = @$forward{qw(lat lon)};
+        my $reverse = $geocoder->reverse_geocode(lat => $lat, lon => $lon);
+        is(
+            $reverse->{address}{road},
+            $forward->{address}{road},
+            'correct street for lat/lon',
+        );
+    }
+    {
+        my $address = qq(Champs-\xC9lys\xE9es, 75008);
+
+        my $location = $geocoder->geocode($address);
+        ok($location, 'latin1 bytes');
+        is($location->{address}{country}, 'France', 'latin1 bytes');
+
+        $location = $geocoder->geocode(decode('latin1', $address));
+        ok($location, 'UTF-8 characters');
+        is($location->{address}{country}, 'France', 'UTF-8 characters');
+
+        TODO: {
+            local $TODO = 'UTF-8 bytes';
+            $location = $geocoder->geocode(
+                encode('utf-8', decode('latin1', $address))
+            );
+            ok($location, 'UTF-8 bytes');
+            is($location->{address}{country}, 'France', 'UTF-8 bytes');
+        }
+    }
+    {
+        my $city = decode('latin1', qq(Schm\xF6ckwitz));
+        my $location = $geocoder->geocode("$city, Berlin, Germany");
+        is(
+            $location->{address}{suburb}, $city,
+            'decoded character encoding of response'
+        );
+    }
+}
+
+done_testing;
diff --git a/xt/perlcritic.t b/xt/perlcritic.t
new file mode 100644
index 0000000..e4cfc15
--- /dev/null
+++ b/xt/perlcritic.t
@@ -0,0 +1,10 @@
+use strict;
+use warnings;
+use Test::More;
+
+eval { require Test::Perl::Critic; 1 } or do {
+    plan skip_all => "Test::Perl::Critic is not installed.";
+};
+Test::Perl::Critic->import( -profile => 'xt/perlcriticrc' );
+
+all_critic_ok(qw( ex lib t xt ));
diff --git a/xt/perlcriticrc b/xt/perlcriticrc
new file mode 100644
index 0000000..aa03514
--- /dev/null
+++ b/xt/perlcriticrc
@@ -0,0 +1,22 @@
+verbose = 8
+
+[CodeLayout::ProhibitHardTabs]
+allow_leading_tabs = 0
+severity = 5
+
+[CodeLayout::ProhibitTrailingWhitespace]
+severity = 5
+
+# requires Perl::Critic::More
+[CodeLayout::RequireASCII]
+severity = 5
+
+[TestingAndDebugging::RequireUseWarnings]
+severity = 5
+
+[-TestingAndDebugging::ProhibitNoStrict]
+[-BuiltinFunctions::ProhibitStringyEval]
+
+# requires Regexp::Parser
+[RegularExpressions::ProhibitUnusedCapture]
+severity = 5
diff --git a/xt/pod.t b/xt/pod.t
new file mode 100644
index 0000000..4ed8308
--- /dev/null
+++ b/xt/pod.t
@@ -0,0 +1,9 @@
+use strict;
+use warnings;
+use Test::More;
+
+eval "use Test::Pod 1.00; 1" or do {
+    plan skip_all => 'Test::Pod 1.00 required for testing POD';
+};
+
+all_pod_files_ok();
diff --git a/xt/pod_coverage.t b/xt/pod_coverage.t
new file mode 100644
index 0000000..a345856
--- /dev/null
+++ b/xt/pod_coverage.t
@@ -0,0 +1,9 @@
+use strict;
+use warnings;
+use Test::More;
+
+eval "use Test::Pod::Coverage 1.00; 1" or do {
+    plan skip_all => 'Test::Pod::Coverage 1.00 is not installed.';
+};
+
+all_pod_coverage_ok();
diff --git a/xt/portability_filenames.t b/xt/portability_filenames.t
new file mode 100644
index 0000000..6b94873
--- /dev/null
+++ b/xt/portability_filenames.t
@@ -0,0 +1,9 @@
+use strict;
+use warnings;
+use Test::More;
+
+eval "use Test::Portability::Files; 1" or do {
+    plan skip_all => 'Test::Portability::Files is not installed.';
+};
+
+run_tests();
diff --git a/xt/vars.t b/xt/vars.t
new file mode 100644
index 0000000..39b57ae
--- /dev/null
+++ b/xt/vars.t
@@ -0,0 +1,9 @@
+use strict;
+use warnings;
+use Test::More;
+
+eval "use Test::Vars; 1" or do {
+    plan skip_all => 'Test::Vars is not installed.';
+};
+
+all_vars_ok();

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libgeo-coder-osm-perl.git



More information about the Pkg-perl-cvs-commits mailing list