public function files()
{
return [
['Act.txt', 'Act.txt'],
['Акт.txt', 'Акт.txt']
];
}
/**
* @dataProvider files
* @param $source
* @param $expected
*/
public function testCorrect($source, $expected)
{
setlocale(LC_ALL, 'ru_RU.UTF-8');
$this->tester->assertEquals($expected, basename($this->mockFile($source)));
}
private function mockFile(string $name): string
{
$path = sys_get_temp_dir() . '/' . $name;
file_put_contents($path, 'test');
return $path;
}
Failed asserting that two strings are equal.
Expected :'Акт.txt'
Actual :'.txt'
UPD. setlocale возвращает false, т.е. не устанавливается. текущая локаль: C.
Вопрос в следующем, тогда: почему setlocale не устанавливает локаль?
Пошел в документацию и справочники, перепробовал все варианты, результат тот же
UPD2.
root@7e073872b716:/app# locale -a
C
C.UTF-8
POSIX
root@7e073872b716:/app#
В системе нет нужной локали, поэтому не устанавливается.
На этом вопрос можно закрывать.