Skip to content

Commit 8c6c55b

Browse files
author
Andrew McLagan
committed
* Added direct support for laravel 5.6.x
* Changed php support to min of >=7.1 as per laravel 5.6 * Changed reqiured dependancy `illuminate/support` to minimum ^5.0 * Added local docker `phpunit`, `phpunit-versions`, `composer` helpers `./bin/` - e.g. simply type `bin/phpunit` * Updated travis config * Use of class constants to add coverage of namespace collision edge cases * Added config helper to DRY codebase * Added basic method return type declarations (strong typing is a win:win)
1 parent 70aaa3b commit 8c6c55b

File tree

9 files changed

+117
-57
lines changed

9 files changed

+117
-57
lines changed

.travis.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ php:
55
- 7.2
66
- 7.1
77
- 7.0
8-
- 5.6
9-
- 5.5
10-
- 5.4
118
- hhvm
129
- nightly
1310

bin/composer

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
docker run --rm --interactive --tty \
6+
-e "TERM=xterm-256color" \
7+
-v $PWD:/app \
8+
composer "$@"

bin/phpunit

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
docker run -it --rm \
6+
-e "TERM=xterm-256color" \
7+
-v "$PWD":/usr/src \
8+
-w /usr/src \
9+
php:7.2-cli-alpine \
10+
vendor/bin/phpunit "$@"
11+

bin/phpunit-versions

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
declare -a versions=("7.1" "7.2")
6+
7+
for version in "${versions[@]}"
8+
do
9+
docker run -it --rm \
10+
-e "TERM=xterm-256color" \
11+
-v "$PWD":/usr/src \
12+
-w /usr/src \
13+
php:"$version"-cli-alpine \
14+
vendor/bin/phpunit "$@"
15+
done

composer.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@
1616
}
1717
],
1818
"require": {
19-
"php": ">=5.4",
20-
"illuminate/support": "^4.0|^5.0",
19+
"php": ">=7.0",
20+
"illuminate/support": "^5.0",
2121
"rollbar/rollbar": "^1"
2222
},
2323
"require-dev": {
24-
"orchestra/testbench": "~3.0",
24+
"orchestra/testbench": "~3.6",
2525
"mockery/mockery": "^0.9",
2626
"satooshi/php-coveralls": "^1.0",
2727
"squizlabs/php_codesniffer": "2.*",
28-
"phpunit/phpunit": "~4.0|~5.0"
28+
"phpunit/phpunit": "~7.0"
2929
},
3030
"autoload": {
3131
"psr-4": {

phpunit.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
convertWarningsToExceptions="true"
99
processIsolation="false"
1010
stopOnFailure="true"
11-
syntaxCheck="false"
1211
>
1312
<testsuites>
1413
<testsuite name="Test Suite">

src/Facades/Rollbar.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php namespace Rollbar\Laravel\Facades;
22

33
use Illuminate\Support\Facades\Facade;
4+
use Rollbar\Laravel\RollbarLogHandler;
45

56
class Rollbar extends Facade
67
{
@@ -11,6 +12,6 @@ class Rollbar extends Facade
1112
*/
1213
protected static function getFacadeAccessor()
1314
{
14-
return 'Rollbar\Laravel\RollbarLogHandler';
15+
return RollbarLogHandler::class;
1516
}
1617
}

src/RollbarServiceProvider.php

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<?php namespace Rollbar\Laravel;
22

3-
use Illuminate\Support\ServiceProvider;
43
use InvalidArgumentException;
5-
use Rollbar\Rollbar;
4+
use Illuminate\Support\Facades\Config;
5+
use Illuminate\Support\ServiceProvider;
66
use Rollbar\Laravel\RollbarLogHandler;
7+
use Rollbar\RollbarLogger;
8+
use Rollbar\Rollbar;
79

810
class RollbarServiceProvider extends ServiceProvider
911
{
@@ -41,7 +43,7 @@ public function boot()
4143
$context = $args[2];
4244
}
4345

44-
$app['Rollbar\Laravel\RollbarLogHandler']->log($level, $message, $context);
46+
$app[RollbarLogHandler::class]->log($level, $message, $context);
4547
});
4648
}
4749

@@ -55,9 +57,7 @@ public function register()
5557
return;
5658
}
5759

58-
$app = $this->app;
59-
60-
$this->app->singleton('Rollbar\RollbarLogger', function ($app) {
60+
$this->app->singleton(RollbarLogger::class, function ($app) {
6161

6262
$defaults = [
6363
'environment' => $app->environment(),
@@ -66,8 +66,10 @@ public function register()
6666
'handle_error' => true,
6767
'handle_fatal' => true,
6868
];
69-
$config = array_merge($defaults, $app['config']->get('services.rollbar', []));
70-
$config['access_token'] = getenv('ROLLBAR_TOKEN') ?: $app['config']->get('services.rollbar.access_token');
69+
70+
$config = array_merge($defaults, $app['config']->get('logging.channels.rollbar', []));
71+
72+
$config['access_token'] = static::config('access_token');
7173

7274
if (empty($config['access_token'])) {
7375
throw new InvalidArgumentException('Rollbar access token not configured');
@@ -82,11 +84,11 @@ public function register()
8284
return Rollbar::logger();
8385
});
8486

85-
$this->app->singleton('Rollbar\Laravel\RollbarLogHandler', function ($app) {
87+
$this->app->singleton(RollbarLogHandler::class, function ($app) {
8688

87-
$level = getenv('ROLLBAR_LEVEL') ?: $app['config']->get('services.rollbar.level', 'debug');
89+
$level = static::config('level', 'debug');
8890

89-
return new RollbarLogHandler($app['Rollbar\RollbarLogger'], $app, $level);
91+
return new RollbarLogHandler($app[RollbarLogger::class], $app, $level);
9092
});
9193
}
9294

@@ -95,12 +97,34 @@ public function register()
9597
*
9698
* @return boolean
9799
*/
98-
public function stop()
100+
public function stop() : bool
99101
{
100-
$level = getenv('ROLLBAR_LEVEL') ?: $this->app->config->get('services.rollbar.level', null);
101-
$token = getenv('ROLLBAR_TOKEN') ?: $this->app->config->get('services.rollbar.access_token', null);
102+
$level = static::config('level');
103+
104+
$token = static::config('token');
105+
102106
$hasToken = empty($token) === false;
103107

104108
return $hasToken === false || $level === 'none';
105109
}
110+
111+
/**
112+
* Return a rollbar logging config
113+
*
114+
* @param array|string $key
115+
* @param mixed $default
116+
* @return mixed
117+
*/
118+
protected static function config($key = '', $default = null)
119+
{
120+
$envKey = 'ROLLBAR_'.strtoupper($key);
121+
122+
if ($envKey === 'ROLLBAR_ACCESS_TOKEN') {
123+
$envKey = 'ROLLBAR_TOKEN';
124+
}
125+
126+
$logKey = empty($key) ? 'logging.channels.rollbar' : "logging.channels.rollbar.$key";
127+
128+
return getenv($envKey) ?: Config::get($logKey, $default);
129+
}
106130
}

tests/RollbarTest.php

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
<?php namespace Rollbar\Laravel;
1+
<?php
2+
3+
namespace Rollbar\Laravel;
24

35
use Rollbar\Laravel\Facades\Rollbar as RollbarFacade;
6+
use Rollbar\Laravel\RollbarServiceProvider;
7+
use Rollbar\Laravel\RollbarLogHandler;
8+
use Rollbar\RollbarLogger;
49

510
class RollbarTest extends \Orchestra\Testbench\TestCase
611
{
@@ -14,45 +19,45 @@ public function setUp()
1419

1520
protected function getPackageProviders($app)
1621
{
17-
return ['Rollbar\Laravel\RollbarServiceProvider'];
22+
return [RollbarServiceProvider::class];
1823
}
1924

2025
public function testBinding()
2126
{
22-
$client = $this->app->make('Rollbar\RollbarLogger');
23-
$this->assertInstanceOf('Rollbar\RollbarLogger', $client);
27+
$client = $this->app->make(RollbarLogger::class);
28+
$this->assertInstanceOf(RollbarLogger::class, $client);
2429

25-
$handler = $this->app->make('Rollbar\Laravel\RollbarLogHandler');
26-
$this->assertInstanceOf('Rollbar\Laravel\RollbarLogHandler', $handler);
30+
$handler = $this->app->make(RollbarLogHandler::class);
31+
$this->assertInstanceOf(RollbarLogHandler::class, $handler);
2732
}
2833

2934
public function testIsSingleton()
3035
{
31-
$handler1 = $this->app->make('Rollbar\Laravel\RollbarLogHandler');
32-
$handler2 = $this->app->make('Rollbar\Laravel\RollbarLogHandler');
36+
$handler1 = $this->app->make(RollbarLogHandler::class);
37+
$handler2 = $this->app->make(RollbarLogHandler::class);
3338
$this->assertEquals(spl_object_hash($handler1), spl_object_hash($handler2));
3439
}
3540

3641
public function testFacade()
3742
{
3843
$client = RollbarFacade::getFacadeRoot();
39-
$this->assertInstanceOf('Rollbar\Laravel\RollbarLogHandler', $client);
44+
$this->assertInstanceOf(RollbarLogHandler::class, $client);
4045
}
4146

4247
public function testPassConfiguration()
4348
{
44-
$client = $this->app->make('Rollbar\RollbarLogger');
49+
$client = $this->app->make(RollbarLogger::class);
4550
$config = $client->extend([]);
4651
$this->assertEquals($this->access_token, $config['access_token']);
4752
}
4853

4954
public function testCustomConfiguration()
5055
{
51-
$this->app->config->set('services.rollbar.root', '/tmp');
52-
$this->app->config->set('services.rollbar.included_errno', E_ERROR);
53-
$this->app->config->set('services.rollbar.environment', 'staging');
56+
$this->app->config->set('logging.channels.rollbar.root', '/tmp');
57+
$this->app->config->set('logging.channels.rollbar.included_errno', E_ERROR);
58+
$this->app->config->set('logging.channels.rollbar.environment', 'staging');
5459

55-
$client = $this->app->make('Rollbar\RollbarLogger');
60+
$client = $this->app->make(RollbarLogger::class);
5661
$config = $client->extend([]);
5762

5863
$this->assertEquals('staging', $config['environment']);
@@ -64,11 +69,11 @@ public function testAutomaticContext()
6469
{
6570
$this->app->session->put('foo', 'bar');
6671

67-
$logger = $this->app->make('Rollbar\RollbarLogger');
72+
$logger = $this->app->make(RollbarLogger::class);
6873

69-
$handlerMock = \Mockery::mock('Rollbar\Laravel\RollbarLogHandler', [$logger, $this->app]);
74+
$handlerMock = \Mockery::mock(RollbarLogHandler::class, [$logger, $this->app]);
7075
$handlerMock->shouldReceive('log')->passthru();
71-
$this->app['Rollbar\Laravel\RollbarLogHandler'] = $handlerMock;
76+
$this->app[RollbarLogHandler::class] = $handlerMock;
7277

7378
$handlerMock->log('info', 'Test log message');
7479

@@ -84,11 +89,11 @@ public function testMergedContext()
8489
{
8590
$this->app->session->put('foo', 'bar');
8691

87-
$logger = $this->app->make('Rollbar\RollbarLogger');
92+
$logger = $this->app->make(RollbarLogger::class);
8893

89-
$handlerMock = \Mockery::mock('Rollbar\Laravel\RollbarLogHandler', [$logger, $this->app]);
94+
$handlerMock = \Mockery::mock(RollbarLogHandler::class, [$logger, $this->app]);
9095
$handlerMock->shouldReceive('log')->passthru();
91-
$this->app['Rollbar\Laravel\RollbarLogHandler'] = $handlerMock;
96+
$this->app[RollbarLogHandler::class] = $handlerMock;
9297

9398
$handlerMock->log('info', 'Test log message', [
9499
'tags' => ['one' => 'two'],
@@ -108,16 +113,16 @@ public function testLogListener()
108113
{
109114
$exception = new \Exception('Testing error handler');
110115

111-
$clientMock = \Mockery::mock('Rollbar\RollbarLogger');
116+
$clientMock = \Mockery::mock(RollbarLogger::class);
112117

113118
$clientMock->shouldReceive('log')->times(2);
114119
$clientMock->shouldReceive('log')->times(1)->with('error', $exception, ['foo' => 'bar']);
115120

116-
$handlerMock = \Mockery::mock('Rollbar\Laravel\RollbarLogHandler', [$clientMock, $this->app]);
121+
$handlerMock = \Mockery::mock(RollbarLogHandler::class, [$clientMock, $this->app]);
117122

118123
$handlerMock->shouldReceive('log')->passthru();
119124

120-
$this->app['Rollbar\Laravel\RollbarLogHandler'] = $handlerMock;
125+
$this->app[RollbarLogHandler::class] = $handlerMock;
121126

122127
$this->app->log->info('hello');
123128
$this->app->log->error('oops');
@@ -126,11 +131,11 @@ public function testLogListener()
126131

127132
public function testErrorLevels1()
128133
{
129-
$this->app->config->set('services.rollbar.level', 'critical');
134+
$this->app->config->set('logging.channels.rollbar.level', 'critical');
130135

131-
$clientMock = \Mockery::mock('Rollbar\RollbarLogger');
136+
$clientMock = \Mockery::mock(RollbarLogger::class);
132137
$clientMock->shouldReceive('log')->times(3);
133-
$this->app['Rollbar\RollbarLogger'] = $clientMock;
138+
$this->app[RollbarLogger::class] = $clientMock;
134139

135140
$this->app->log->debug('hello');
136141
$this->app->log->info('hello');
@@ -144,11 +149,11 @@ public function testErrorLevels1()
144149

145150
public function testErrorLevels2()
146151
{
147-
$this->app->config->set('services.rollbar.level', 'debug');
152+
$this->app->config->set('logging.channels.rollbar.level', 'debug');
148153

149-
$clientMock = \Mockery::mock('Rollbar\RollbarLogger');
154+
$clientMock = \Mockery::mock(RollbarLogger::class);
150155
$clientMock->shouldReceive('log')->times(8);
151-
$this->app['Rollbar\RollbarLogger'] = $clientMock;
156+
$this->app[RollbarLogger::class] = $clientMock;
152157

153158
$this->app->log->debug('hello');
154159
$this->app->log->info('hello');
@@ -162,11 +167,11 @@ public function testErrorLevels2()
162167

163168
public function testErrorLevels3()
164169
{
165-
$this->app->config->set('services.rollbar.level', 'none');
170+
$this->app->config->set('logging.channels.rollbar.level', 'none');
166171

167-
$clientMock = \Mockery::mock('Rollbar\RollbarLogger');
172+
$clientMock = \Mockery::mock(RollbarLogger::class);
168173
$clientMock->shouldReceive('log')->times(0);
169-
$this->app['Rollbar\RollbarLogger'] = $clientMock;
174+
$this->app[RollbarLogger::class] = $clientMock;
170175

171176
$this->app->log->debug('hello');
172177
$this->app->log->info('hello');
@@ -180,14 +185,14 @@ public function testErrorLevels3()
180185

181186
public function testPersonFunctionIsCalledWhenSessionContainsAtLeastOneItem()
182187
{
183-
$this->app->config->set('services.rollbar.person_fn', function () {
188+
$this->app->config->set('logging.channels.rollbar.person_fn', function () {
184189
return [
185190
'id' => '123',
186191
'username' => 'joebloggs',
187192
];
188193
});
189194

190-
$logger = $this->app->make('Rollbar\RollbarLogger');
195+
$logger = $this->app->make(RollbarLogger::class);
191196

192197
$this->app->session->put('foo', 'bar');
193198

0 commit comments

Comments
 (0)