• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / version-bumper / 11860111625

15 Nov 2024 04:45PM UTC coverage: 66.911% (-21.1%) from 88.054%
11860111625

Pull #12

github

web-flow
Merge f526460ea into 70d8e62f5
Pull Request #12: [FEATURE] Introduce version range detector component

9 of 173 new or added lines in 14 files covered. (5.2%)

1 existing line in 1 file now uncovered.

457 of 683 relevant lines covered (66.91%)

2.6 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Version/RangeDetection/DiffRangeDetection.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the Composer package "eliashaeussler/version-bumper".
7
 *
8
 * Copyright (C) 2024 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\VersionBumper\Version\RangeDetection;
25

26
use EliasHaeussler\VersionBumper\Config;
27
use EliasHaeussler\VersionBumper\Enum;
28
use GitElephant\Objects;
29

30
use function preg_match;
31

32
/**
33
 * DiffRangeDetection.
34
 *
35
 * @author Elias Häußler <elias@haeussler.dev>
36
 * @license GPL-3.0-or-later
37
 */
38
final class DiffRangeDetection implements RangeDetection
39
{
NEW
40
    public function __construct(
×
41
        private readonly Objects\Diff\Diff $diff,
NEW
42
    ) {}
×
43

NEW
44
    public function matches(Config\VersionRangePattern $pattern): bool
×
45
    {
46
        /** @var Objects\Diff\DiffObject $diffObject */
NEW
47
        foreach ($this->diff as $diffObject) {
×
NEW
48
            $type = $this->getTypeFromDiffObject($diffObject);
×
NEW
49
            $path = $diffObject->getOriginalPath();
×
50

NEW
51
            if ($type !== $pattern->type()) {
×
NEW
52
                continue;
×
53
            }
54

NEW
55
            if (1 === preg_match($pattern->pattern(), $path)) {
×
NEW
56
                return true;
×
57
            }
58
        }
59

NEW
60
        return false;
×
61
    }
62

NEW
63
    public function supports(Config\VersionRangePattern $pattern): bool
×
64
    {
65
        /** @var Objects\Diff\DiffObject $diffObject */
NEW
66
        foreach ($this->diff as $diffObject) {
×
NEW
67
            $type = $this->getTypeFromDiffObject($diffObject);
×
68

NEW
69
            if ($type === $pattern->type()) {
×
NEW
70
                return true;
×
71
            }
72
        }
73

NEW
74
        return false;
×
75
    }
76

NEW
77
    private function getTypeFromDiffObject(Objects\Diff\DiffObject $diffObject): Enum\VersionRangeIndicatorType
×
78
    {
79
        /** @var Objects\Diff\DiffObject::MODE_* $mode */
NEW
80
        $mode = $diffObject->getMode();
×
81

NEW
82
        return Enum\VersionRangeIndicatorType::fromDiffMode($mode);
×
83
    }
84
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc