Completed
Push — master ( dd59f7...c87e78 )
by Grégoire
13s queued 10s
created

XliffTest::validatePath()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Sonata Project package.
7
 *
8
 * (c) Thomas Rabaix <[email protected]>
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Sonata\TranslationBundle\Tests\Resources;
15
16
use PHPUnit\Framework\TestCase;
17
use Symfony\Component\Translation\Exception\InvalidResourceException;
18
use Symfony\Component\Translation\Loader\XliffFileLoader;
19
20
/**
21
 * @author Thomas Rabaix <[email protected]>
22
 */
23
class XliffTest extends TestCase
24
{
25
    /**
26
     * @var XliffFileLoader
27
     */
28
    protected $loader;
29
30
    /**
31
     * @var string[]
32
     */
33
    protected $errors = [];
34
35
    public function setUp(): void
36
    {
37
        $this->loader = new XliffFileLoader();
38
    }
39
40
    /**
41
     * @dataProvider getXliffPaths
42
     */
43
    public function testXliff($path)
44
    {
45
        $this->validatePath($path);
46
47
        if (\count($this->errors) > 0) {
48
            $this->fail(sprintf('Unable to parse xliff files: %s', implode(', ', $this->errors)));
49
        }
50
    }
51
52
    /**
53
     * @return array List all path to validate xliff
54
     */
55
    public function getXliffPaths()
56
    {
57
        return [[__DIR__.'/../../Resources/translations']];
58
    }
59
60
    /**
61
     * @param string $file The path to the xliff file
62
     */
63
    protected function validateXliff($file)
64
    {
65
        try {
66
            $this->loader->load($file, 'en');
67
            $this->assertTrue(true, sprintf('Successful loading file: %s', $file));
68
        } catch (InvalidResourceException $e) {
69
            $this->errors[] = sprintf('%s => %s', $file, $e->getMessage());
70
        }
71
    }
72
73
    /**
74
     * @param string $path The path to lookup for Xliff file
75
     */
76
    protected function validatePath($path)
77
    {
78
        $files = glob(sprintf('%s/*.xliff', $path));
79
80
        foreach ($files as $file) {
81
            $this->validateXliff($file);
82
        }
83
    }
84
}
85