Passed
Push — test ( d838cf...cef4a5 )
by Tom
03:29
created

RepositoryTest   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 132
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 65
dl 0
loc 132
rs 10
c 0
b 0
f 0
wmc 11

11 Methods

Rating   Name   Duplication   Size   Complexity  
A testResolveYamlFile() 0 8 1
A testGetPackageLocalBinary() 0 9 1
A testGetBinaryPath() 0 10 1
A testResolveThrows() 0 6 1
A testResolveBinaryPath() 0 8 1
A testResolve() 0 8 1
A testInject() 0 13 1
A testInjectPackage() 0 8 1
A testAsPackageArrayDefault() 0 7 1
A testListPackages() 0 11 1
A testCreation() 0 4 1
1
<?php
2
3
/* this file is part of pipelines */
4
5
namespace Ktomk\Pipelines\Runner\Docker\Binary;
6
7
use Ktomk\Pipelines\Cli\Exec;
8
use Ktomk\Pipelines\Cli\ExecTester;
9
use Ktomk\Pipelines\Project;
10
use Ktomk\Pipelines\Runner\Directories;
11
use Ktomk\Pipelines\TestCase;
12
13
/**
14
 * Class RepositoryTest
15
 *
16
 * @covers \Ktomk\Pipelines\Runner\Docker\Binary\Repository
17
 */
18
class RepositoryTest extends TestCase
19
{
20
    public function testCreation()
21
    {
22
        $repo = Repository::create(new Exec(), new Directories(array('HOME' => '/foo'), new Project('bar')));
23
        self::assertInstanceOf('Ktomk\Pipelines\Runner\Docker\Binary\Repository', $repo);
24
    }
25
26
    public function testInject()
27
    {
28
        $execTester = ExecTester::create($this);
29
        $execTester->expect('capture', '~~', 'inject docker binary');
30
31
        $directories = $this->createMock('Ktomk\Pipelines\Runner\Directories');
0 ignored issues
show
Unused Code introduced by
The assignment to $directories is dead and can be removed.
Loading history...
32
        $repo = new Repository(
33
            $execTester,
34
            array(),
35
            $this->createMock('Ktomk\Pipelines\Runner\Docker\Binary\UnPackager')
36
        );
37
        $repo->resolve(Repository::PKG_TEST);
38
        $repo->inject('foobar');
39
    }
40
41
    /**
42
     * @covers \Ktomk\Pipelines\Runner\Docker\Binary\Repository::injectPackage
43
     */
44
    public function testInjectPackage()
45
    {
46
        $repo = $this->createPartialMock(
47
            'Ktomk\Pipelines\Runner\Docker\Binary\Repository',
48
            array('inject')
49
        );
50
        $repo->injectPackage(Repository::PKG_TEST, 'foobar');
51
        $this->addToAssertionCount(1);
52
    }
53
54
    /**
55
     * @covers \Ktomk\Pipelines\Runner\Docker\Binary\Repository::listPackages
56
     */
57
    public function testListPackages()
58
    {
59
        $repo = $this->createPartialMock('Ktomk\Pipelines\Runner\Docker\Binary\Repository', array());
60
        $actual = $repo->listPackages();
61
        $expected = array(
62
            Repository::PKG_PREVIOUS,
63
            Repository::PKG_ATLBBCPP,
64
            Repository::PKG_INTEGRATE,
65
            Repository::PKG_TEST,
66
        );
67
        self::assertSame($expected, $actual);
68
    }
69
70
    /**
71
     * @throws \Exception
72
     */
73
    public function testResolve()
74
    {
75
        $repo = $this->createPartialMock('Ktomk\Pipelines\Runner\Docker\Binary\Repository', array());
76
        self::assertSame($repo, $repo->resolve(Repository::PKG_INTEGRATE));
77
        self::assertSame($repo, $repo->resolve(Repository::PKG_TEST));
78
        $expected = UnpackagerTest::getTestPackage();
79
        $actual = $repo->asPackageArray();
80
        self::assertSame($expected, $actual);
81
    }
82
83
    public function testResolveYamlFile()
84
    {
85
        $repo = $this->createPartialMock('Ktomk\Pipelines\Runner\Docker\Binary\Repository', array());
86
        $testPackagePath = __DIR__ . '/../../../../../lib/package/docker-42.42.1-binsh-test-stub.yml';
87
        self::assertSame($repo, $repo->resolve($testPackagePath));
88
        $expected = UnpackagerTest::getTestPackage();
89
        $actual = $repo->asPackageArray();
90
        self::assertSame($expected, $actual);
91
    }
92
93
    public function testResolveBinaryPath()
94
    {
95
        $repo = $this->createPartialMock('Ktomk\Pipelines\Runner\Docker\Binary\Repository', array());
96
        $testBinary = __DIR__ . '/../../../../data/package/docker-test-stub';
97
        self::assertSame($repo, $repo->resolve($testBinary));
98
        $expected = array('prep' => array('bin_local' => $testBinary));
99
        $actual = $repo->asPackageArray();
100
        self::assertSame($expected, $actual);
101
    }
102
103
    public function testGetBinaryPath()
104
    {
105
        $repo = $this->createPartialMock(
106
            'Ktomk\Pipelines\Runner\Docker\Binary\Repository',
107
            array('getPackageLocalBinary')
108
        );
109
        $expected = '/foo/bin/docker';
110
        $repo->method('getPackageLocalBinary')->willReturn($expected);
111
        $actual = $repo->getBinaryPath();
112
        self::assertSame($expected, $actual);
113
    }
114
115
    /**
116
     * @covers \Ktomk\Pipelines\Runner\Docker\Binary\Repository::getPackageLocalBinary
117
     */
118
    public function testGetPackageLocalBinary()
119
    {
120
        $repo = $this->createPartialMock('Ktomk\Pipelines\Runner\Docker\Binary\Repository', array());
121
        $testBinary = __DIR__ . '/../../../../data/package/docker-test-stub';
122
        self::assertSame($repo, $repo->resolve($testBinary));
123
        $expected = array('prep' => array('bin_local' => $testBinary));
124
        $package = $repo->asPackageArray();
125
        $repo->getPackageLocalBinary($package);
126
        self::assertSame($expected, $package);
127
    }
128
129
    /**
130
     * @throws \Exception
131
     */
132
    public function testResolveThrows()
133
    {
134
        $repo = $this->createPartialMock('Ktomk\Pipelines\Runner\Docker\Binary\Repository', array());
135
        $this->expectException('InvalidArgumentException');
136
        $this->expectExceptionMessage('not a readable file: ');
137
        $repo->resolve('bogus-package-name');
138
    }
139
140
    /**
141
     * unfortunately some inside code on null for the default
142
     */
143
    public function testAsPackageArrayDefault()
144
    {
145
        $repo = $this->createPartialMock('Ktomk\Pipelines\Runner\Docker\Binary\Repository', array());
146
        $package = $repo->asPackageArray();
147
148
        self::assertArrayHasKey('name', $package, 'default package has name');
149
        self::assertSame('docker-19.03.1-linux-static-x86_64', $package['name']);
150
    }
151
}
152