Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4130458
DefaultTestResultCache.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
DefaultTestResultCache.php
View Options
<?php
declare
(
strict_types
=
1
);
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace
PHPUnit\Runner
;
use
const
DIRECTORY_SEPARATOR
;
use
const
LOCK_EX
;
use
function
assert
;
use
function
dirname
;
use
function
file_get_contents
;
use
function
file_put_contents
;
use
function
in_array
;
use
function
is_array
;
use
function
is_dir
;
use
function
is_file
;
use
function
json_decode
;
use
function
json_encode
;
use
function
sprintf
;
use
PHPUnit\Util\Filesystem
;
/**
* @internal This class is not covered by the backward compatibility promise for PHPUnit
*/
final
class
DefaultTestResultCache
implements
TestResultCache
{
/**
* @var int
*/
private
const
VERSION
=
1
;
/**
* @psalm-var list<int>
*/
private
const
ALLOWED_TEST_STATUSES
=
[
BaseTestRunner
::
STATUS_SKIPPED
,
BaseTestRunner
::
STATUS_INCOMPLETE
,
BaseTestRunner
::
STATUS_FAILURE
,
BaseTestRunner
::
STATUS_ERROR
,
BaseTestRunner
::
STATUS_RISKY
,
BaseTestRunner
::
STATUS_WARNING
,
];
/**
* @var string
*/
private
const
DEFAULT_RESULT_CACHE_FILENAME
=
'.phpunit.result.cache'
;
/**
* @var string
*/
private
$cacheFilename
;
/**
* @psalm-var array<string, int>
*/
private
$defects
=
[];
/**
* @psalm-var array<string, float>
*/
private
$times
=
[];
public
function
__construct
(?
string
$filepath
=
null
)
{
if
(
$filepath
!==
null
&&
is_dir
(
$filepath
))
{
$filepath
.=
DIRECTORY_SEPARATOR
.
self
::
DEFAULT_RESULT_CACHE_FILENAME
;
}
$this
->
cacheFilename
=
$filepath
??
$_ENV
[
'PHPUNIT_RESULT_CACHE'
]
??
self
::
DEFAULT_RESULT_CACHE_FILENAME
;
}
public
function
setState
(
string
$testName
,
int
$state
):
void
{
if
(!
in_array
(
$state
,
self
::
ALLOWED_TEST_STATUSES
,
true
))
{
return
;
}
$this
->
defects
[
$testName
]
=
$state
;
}
public
function
getState
(
string
$testName
):
int
{
return
$this
->
defects
[
$testName
]
??
BaseTestRunner
::
STATUS_UNKNOWN
;
}
public
function
setTime
(
string
$testName
,
float
$time
):
void
{
$this
->
times
[
$testName
]
=
$time
;
}
public
function
getTime
(
string
$testName
):
float
{
return
$this
->
times
[
$testName
]
??
0.0
;
}
public
function
load
():
void
{
if
(!
is_file
(
$this
->
cacheFilename
))
{
return
;
}
$data
=
json_decode
(
file_get_contents
(
$this
->
cacheFilename
),
true
,
);
if
(
$data
===
null
)
{
return
;
}
if
(!
isset
(
$data
[
'version'
]))
{
return
;
}
if
(
$data
[
'version'
]
!==
self
::
VERSION
)
{
return
;
}
assert
(
isset
(
$data
[
'defects'
])
&&
is_array
(
$data
[
'defects'
]));
assert
(
isset
(
$data
[
'times'
])
&&
is_array
(
$data
[
'times'
]));
$this
->
defects
=
$data
[
'defects'
];
$this
->
times
=
$data
[
'times'
];
}
/**
* @throws Exception
*/
public
function
persist
():
void
{
if
(!
Filesystem
::
createDirectory
(
dirname
(
$this
->
cacheFilename
)))
{
throw
new
Exception
(
sprintf
(
'Cannot create directory "%s" for result cache file'
,
$this
->
cacheFilename
,
),
);
}
file_put_contents
(
$this
->
cacheFilename
,
json_encode
(
[
'version'
=>
self
::
VERSION
,
'defects'
=>
$this
->
defects
,
'times'
=>
$this
->
times
,
],
),
LOCK_EX
,
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Wed, Aug 19, 10:24 (3 w, 3 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
8f/6b/6db9ee0d69df7b6d98fe2c366b3c
Default Alt Text
DefaultTestResultCache.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment