Skip to content

Commit 93939ac

Browse files
authored
Enable PHP 8.0 support (#1102)
* Enable PHP 8.0 support * Add GitHub Actions * Upgrade php-http/curl-client + php-http/httplug * Upgrade PHPUnit * Drop PHP 7.2 support * Update GitHub Actions Remove PHP 7.2 * Update Travis CI Remove PHP 7.2 * Drop PHP 7.2 support
1 parent 2fad9ce commit 93939ac

File tree

99 files changed

+996
-1089
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+996
-1089
lines changed

.github/workflows/php.yml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: PHP Composer
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
branches: [ master ]
8+
9+
jobs:
10+
test:
11+
12+
runs-on: ubuntu-latest
13+
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
php-version: ['7.4', '8.0']
18+
deps: ['low', 'high']
19+
include:
20+
- php-version: '7.3'
21+
22+
name: PHP ${{ matrix.php-version }} (${{ matrix.deps }})
23+
24+
steps:
25+
- uses: actions/checkout@v2
26+
27+
- name: Use PHP ${{ matrix.php-version }}
28+
uses: shivammathur/setup-php@v2
29+
with:
30+
php-version: ${{ matrix.php-version }}
31+
extensions: curl
32+
33+
- name: Validate composer.json and composer.lock
34+
run: composer validate
35+
36+
- name: Install dependencies
37+
if: ${{ matrix.deps == null }}
38+
run: composer update --no-progress --prefer-dist
39+
- name: Install dependencies (low)
40+
if: ${{ matrix.deps == 'low' }}
41+
run: composer update --no-progress --prefer-lowest --prefer-stable
42+
- name: Install dependencies (high)
43+
if: ${{ matrix.deps == 'high' }}
44+
run: composer update --no-progress
45+
46+
- name: Run test suite
47+
run: composer run-script test

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ vendor/
22
composer.lock
33
composer.phar
44
phpunit.xml
5+
.phpunit.result.cache
56
php-cs-fixer.phar
67
.puli/

.travis.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,17 @@ cache:
2121
matrix:
2222
fast_finish: true
2323
include:
24+
- php: 8.0
25+
env: deps="low"
26+
- php: 8.0
27+
env: deps="high"
2428
- php: 7.4
2529
env: deps="low"
2630
- php: 7.4
2731
env: deps="high"
28-
- php: 7.2
2932
- php: 7.3
3033
- php: 7.4
34+
- php: 8.0
3135

3236
before_install:
3337
- |

composer.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
}
1818
],
1919
"require": {
20-
"php": "^7.2",
20+
"php": "^7.3 || ^8.0",
2121
"igorw/get-in": "^1.0",
2222
"php-http/client-implementation": "^1.0",
2323
"php-http/discovery": "^1.4",
24-
"php-http/httplug": "^1.0",
24+
"php-http/httplug": "^2.2",
2525
"php-http/message-factory": "^1.0.2",
2626
"php-http/promise": "^1.0",
2727
"psr/http-message-implementation": "^1.0",
@@ -36,10 +36,10 @@
3636
"geoip2/geoip2": "~2.0",
3737
"nyholm/nsa": "^1.1",
3838
"nyholm/psr7": "^1.0",
39-
"php-http/curl-client": "^1.7",
39+
"php-http/curl-client": "^2.2",
4040
"php-http/message": "^1.0",
4141
"php-http/mock-client": "^1.0",
42-
"phpunit/phpunit": "^7.5",
42+
"phpunit/phpunit": "^9.5",
4343
"symfony/stopwatch": "~2.5"
4444
},
4545
"suggest": {

phpunit.xml.dist

Lines changed: 60 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,65 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<phpunit backupGlobals="false"
3-
backupStaticAttributes="false"
4-
colors="true"
5-
convertErrorsToExceptions="true"
6-
convertNoticesToExceptions="true"
7-
convertWarningsToExceptions="true"
8-
processIsolation="false"
9-
stopOnFailure="false"
10-
bootstrap="vendor/autoload.php"
11-
>
12-
<php>
13-
<!--
2+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
3+
backupGlobals="false"
4+
backupStaticAttributes="false"
5+
colors="true"
6+
convertErrorsToExceptions="true"
7+
convertNoticesToExceptions="true"
8+
convertWarningsToExceptions="true"
9+
processIsolation="false"
10+
stopOnFailure="false"
11+
bootstrap="vendor/autoload.php"
12+
>
13+
<coverage>
14+
<include>
15+
<directory>./src/</directory>
16+
</include>
17+
<exclude>
18+
<directory>./src/Common/Tests</directory>
19+
<directory>./src/Http/Tests</directory>
20+
<directory>./src/Provider/*/Tests</directory>
21+
<directory>./src/Common/vendor</directory>
22+
<directory>./src/Http/vendor</directory>
23+
<directory>./src/Provider/*/vendor</directory>
24+
</exclude>
25+
</coverage>
26+
<php>
27+
<!--
1428
Turn this parameter to 'false' or comment it to bypass
1529
the caching layer. See the `CachedResponseAdapter` class.
1630
-->
17-
<server name="USE_CACHED_RESPONSES" value="true" />
18-
19-
<!-- API Keys -->
20-
<server name="ALGOLIA_API_KEY" value="YOUR_API_KEY" />
21-
<server name="ALGOLIA_APP_ID" value="YOUR_APP_ID" />
22-
<server name="BINGMAPS_API_KEY" value="YOUR_API_KEY" />
23-
<server name="GEOIPS_API_KEY" value="YOUR_API_KEY" />
24-
<server name="GEONAMES_USERNAME" value="YOUR_USERNAME" />
25-
<server name="GOOGLE_GEOCODING_KEY" value="YOUR_GEOCODING_KEY" />
26-
<server name="GRAPHHOPPER_API_KEY" value="YOUR_API_KEY" />
27-
<server name="HERE_APP_CODE" value="YOUR_APP_CODE" />
28-
<server name="HERE_APP_ID" value="YOUR_APP_ID" />
29-
<server name="HERE_API_KEY" value="YOUR_API_KEY" />
30-
<server name="IPINFODB_API_KEY" value="YOUR_API_KEY" />
31-
<server name="IP2LOCATION_API_KEY" value="YOUR_API_KEY" />
32-
<server name="IPSTACK_API_KEY" value="YOUR_API_KEY" />
33-
<server name="LOCATIONIQ_API_KEY" value="YOUR_API_KEY" />
34-
<server name="MAPBOX_GEOCODING_KEY" value="YOUR_GEOCODING_KEY" />
35-
<server name="MAPQUEST_API_KEY" value="YOUR_API_KEY" />
36-
<server name="MAPZEN_API_KEY" value="YOUR_MAPZEN_API_KEY" />
37-
<server name="OPENCAGE_API_KEY" value="YOUR_GEOCODING_KEY" />
38-
<server name="PICKPOINT_API_KEY" value="YOUR_API_KEY" />
39-
<server name="TOMTOM_MAP_KEY" value="YOUR_MAP_KEY" />
40-
<server name="GEOCODE_EARTH_API_KEY" value="YOUR_GEOCODE_EARTH_API_KEY" />
41-
<server name="OPEN_ROUTE_SERVICE_API_KEY" value="YOUR_OPEN_ROUTE_SERVICE_API_KEY" />
42-
<server name="AZURE_MAPS_SUBSCRIPTION_KEY" value="YOUR_AZURE_MAPS_SUBSCRIPTION_KEY" />
43-
<!--<server name="MAXMIND_API_KEY" value="YOUR_API_KEY" />-->
44-
</php>
45-
46-
<testsuites>
47-
<testsuite name="Geocoder Test Suite">
48-
<directory>./tests/</directory>
49-
<directory>./src/Common/Tests/</directory>
50-
<directory>./src/Http/Tests/</directory>
51-
<directory>./src/Provider/*/Tests/</directory>
52-
</testsuite>
53-
</testsuites>
54-
55-
<filter>
56-
<whitelist>
57-
<directory>./src/</directory>
58-
<exclude>
59-
<directory>./src/Common/Tests</directory>
60-
<directory>./src/Http/Tests</directory>
61-
<directory>./src/Provider/*/Tests</directory>
62-
<directory>./src/Common/vendor</directory>
63-
<directory>./src/Http/vendor</directory>
64-
<directory>./src/Provider/*/vendor</directory>
65-
</exclude>
66-
</whitelist>
67-
</filter>
31+
<server name="USE_CACHED_RESPONSES" value="true"/>
32+
<!-- API Keys -->
33+
<server name="ALGOLIA_API_KEY" value="YOUR_API_KEY"/>
34+
<server name="ALGOLIA_APP_ID" value="YOUR_APP_ID"/>
35+
<server name="BINGMAPS_API_KEY" value="YOUR_API_KEY"/>
36+
<server name="GEOIPS_API_KEY" value="YOUR_API_KEY"/>
37+
<server name="GEONAMES_USERNAME" value="YOUR_USERNAME"/>
38+
<server name="GOOGLE_GEOCODING_KEY" value="YOUR_GEOCODING_KEY"/>
39+
<server name="GRAPHHOPPER_API_KEY" value="YOUR_API_KEY"/>
40+
<server name="HERE_APP_CODE" value="YOUR_APP_CODE"/>
41+
<server name="HERE_APP_ID" value="YOUR_APP_ID"/>
42+
<server name="HERE_API_KEY" value="YOUR_API_KEY"/>
43+
<server name="IPINFODB_API_KEY" value="YOUR_API_KEY"/>
44+
<server name="IP2LOCATION_API_KEY" value="YOUR_API_KEY"/>
45+
<server name="IPSTACK_API_KEY" value="YOUR_API_KEY"/>
46+
<server name="LOCATIONIQ_API_KEY" value="YOUR_API_KEY"/>
47+
<server name="MAPBOX_GEOCODING_KEY" value="YOUR_GEOCODING_KEY"/>
48+
<server name="MAPQUEST_API_KEY" value="YOUR_API_KEY"/>
49+
<server name="MAPZEN_API_KEY" value="YOUR_MAPZEN_API_KEY"/>
50+
<server name="OPENCAGE_API_KEY" value="YOUR_GEOCODING_KEY"/>
51+
<server name="PICKPOINT_API_KEY" value="YOUR_API_KEY"/>
52+
<server name="TOMTOM_MAP_KEY" value="YOUR_MAP_KEY"/>
53+
<server name="GEOCODE_EARTH_API_KEY" value="YOUR_GEOCODE_EARTH_API_KEY"/>
54+
<server name="OPEN_ROUTE_SERVICE_API_KEY" value="YOUR_OPEN_ROUTE_SERVICE_API_KEY"/>
55+
<server name="AZURE_MAPS_SUBSCRIPTION_KEY" value="YOUR_AZURE_MAPS_SUBSCRIPTION_KEY"/>
56+
<!--<server name="MAXMIND_API_KEY" value="YOUR_API_KEY" />-->
57+
</php>
58+
<testsuites>
59+
<testsuite name="Geocoder Test Suite">
60+
<directory>./src/Common/Tests/</directory>
61+
<directory>./src/Http/Tests/</directory>
62+
<directory>./src/Provider/*/Tests/</directory>
63+
</testsuite>
64+
</testsuites>
6865
</phpunit>

src/Common/Tests/Dumper/GeoArrayTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class GeoArrayTest extends TestCase
2626
*/
2727
private $dumper;
2828

29-
protected function setUp()
29+
protected function setUp(): void
3030
{
3131
$this->dumper = new GeoArray();
3232
}
@@ -47,7 +47,7 @@ public function testDump()
4747

4848
$result = $this->dumper->dump($address);
4949

50-
$this->assertInternalType('array', $result);
50+
$this->assertIsArray($result);
5151
$this->assertEquals($expected, $result);
5252
}
5353

@@ -71,7 +71,7 @@ public function testDumpWithData()
7171

7272
$result = $this->dumper->dump($address);
7373

74-
$this->assertInternalType('array', $result);
74+
$this->assertIsArray($result);
7575
$this->assertEquals($expected, $result);
7676
}
7777

@@ -107,7 +107,7 @@ public function testDumpWithBounds()
107107

108108
$result = $this->dumper->dump($address);
109109

110-
$this->assertInternalType('array', $result);
110+
$this->assertIsArray($result);
111111
$this->assertEquals($expected, $result);
112112
}
113113

@@ -147,7 +147,7 @@ public function testDumpWithProperties()
147147

148148
$result = $this->dumper->dump($address);
149149

150-
$this->assertInternalType('array', $result);
150+
$this->assertIsArray($result);
151151
$this->assertEquals($expected, $result);
152152
}
153153
}

src/Common/Tests/Dumper/GeoJsonTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class GeoJsonTest extends TestCase
2727
*/
2828
private $dumper;
2929

30-
public function setUp()
30+
public function setUp(): void
3131
{
3232
$this->dumper = new GeoJson();
3333
}

src/Common/Tests/Dumper/GpxTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class GpxTest extends TestCase
2727
*/
2828
private $dumper;
2929

30-
public function setUp()
30+
public function setUp(): void
3131
{
3232
$this->dumper = new Gpx();
3333
}

src/Common/Tests/Dumper/KmlTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class KmlTest extends TestCase
2727
*/
2828
private $dumper;
2929

30-
public function setUp()
30+
public function setUp(): void
3131
{
3232
$this->dumper = new Kml();
3333
}

src/Common/Tests/Dumper/WkbTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class WkbTest extends TestCase
2727
*/
2828
private $dumper;
2929

30-
public function setUp()
30+
public function setUp(): void
3131
{
3232
$this->dumper = new Wkb();
3333
}

src/Common/Tests/Dumper/WktTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class WktTest extends TestCase
2727
*/
2828
private $dumper;
2929

30-
public function setUp()
30+
public function setUp(): void
3131
{
3232
$this->dumper = new Wkt();
3333
}

src/Common/Tests/Formatter/StringFormatterTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class StringFormatterTest extends TestCase
2626
*/
2727
private $formatter;
2828

29-
public function setUp()
29+
public function setUp(): void
3030
{
3131
$this->formatter = new StringFormatter();
3232
}

src/Common/Tests/Model/AddressCollectionTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ class AddressCollectionTest extends TestCase
2525
*/
2626
public function testFirstOnEmpty()
2727
{
28+
$this->expectException(\Geocoder\Exception\CollectionIsEmpty::class);
29+
2830
$collection = new AddressCollection([]);
2931
$collection->first();
3032
}

src/Common/Tests/ProviderAggregatorTest.php

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class ProviderAggregatorTest extends TestCase
3232
*/
3333
protected $geocoder;
3434

35-
protected function setUp()
35+
protected function setUp(): void
3636
{
3737
$this->geocoder = new ProviderAggregator();
3838
}
@@ -82,22 +82,20 @@ public function testRegisterProviders()
8282
$this->assertSame(['test' => $provider], NSA::getProperty($this->geocoder, 'providers'));
8383
}
8484

85-
/**
86-
* @expectedException \Geocoder\Exception\ProviderNotRegistered
87-
* @expectedExceptionMessage Provider "non_existant" is not registered, so you cannot use it. Did you forget to register it or made a typo? Registered providers are: test1.
88-
*/
8985
public function testUsingNonExistantProviderShouldThrowAnException()
9086
{
87+
$this->expectException(\Geocoder\Exception\ProviderNotRegistered::class);
88+
$this->expectExceptionMessage('Provider "non_existant" is not registered, so you cannot use it. Did you forget to register it or made a typo? Registered providers are: test1.');
89+
9190
$this->geocoder->registerProvider(new MockProvider('test1'));
9291

9392
$this->geocoder->using('non_existant');
9493
}
9594

96-
/**
97-
* @expectedException \Geocoder\Exception\ProviderNotRegistered
98-
*/
9995
public function testUsingAnEmptyProviderNameShouldThrowAnException()
10096
{
97+
$this->expectException(\Geocoder\Exception\ProviderNotRegistered::class);
98+
10199
$this->geocoder->using('');
102100
}
103101

@@ -119,11 +117,10 @@ public function testGetProviders()
119117
$this->assertArrayHasKey('test2', $result);
120118
}
121119

122-
/**
123-
* @expectedException \RuntimeException
124-
*/
125120
public function testGetProvider()
126121
{
122+
$this->expectException(\RuntimeException::class);
123+
127124
NSA::invokeMethod($this->geocoder, 'getProvider', GeocodeQuery::create('foo'), [], null);
128125
$this->fail('getProvider() should throw an exception');
129126
}

0 commit comments

Comments
 (0)