Skip to content

Commit

Permalink
Merge branch 'main' into eiriksm-patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
eiriksm authored Mar 22, 2024
2 parents 20138b4 + b94a7ff commit 16ef8bc
Show file tree
Hide file tree
Showing 14 changed files with 251 additions and 0 deletions.
29 changes: 29 additions & 0 deletions src/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public function getDefaultConfig()
'allow_update_indirect_with_direct' => 0,
'automerge' => 0,
'automerge_security' => 0,
'automerge_method' => 'merge',
'automerge_method_security' => 'merge',
'labels' => [],
'labels_security' => [],
];
Expand Down Expand Up @@ -114,6 +116,33 @@ public function shouldAutoMerge($is_security_update = false)
return (bool) $this->config->automerge;
}

public function getAutomergeMethod($is_security_update = false) : string
{
if (!$is_security_update) {
return $this->getAutoMergeMethodWithFallback('automerge_method');
}
// Otherwise, let's see if it's even set in config. Otherwise this
// should be set to the value (or fallback value) of the general
// automerge method.
if ($this->hasConfigForKey('automerge_method_security')) {
return $this->getAutoMergeMethodWithFallback('automerge_method_security');
}
return $this->getAutoMergeMethodWithFallback('automerge_method');
}

protected function getAutoMergeMethodWithFallback($automerge_property) : string
{
if (!in_array($this->config->{$automerge_property}, [
'merge',
'rebase',
'squash',
])
) {
return 'merge';
}
return $this->config->{$automerge_property};
}

public function shouldAutoMergeSecurity()
{
return (bool) $this->config->automerge_security;
Expand Down
138 changes: 138 additions & 0 deletions tests/UnitTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,28 @@ public function testAutoMergeSecurity($filename, $expected_result)
self::assertEquals($expected_result, $data->shouldAutoMerge(true));
}

/**
* Test the automerge_method option.
*
* @dataProvider getAutoMergeMethod
*/
public function testAutoMergeMethod($filename, $expected_result)
{
$data = $this->createDataFromFixture($filename);
self::assertEquals($expected_result, $data->getAutomergeMethod());
}

/**
* Test the automerge_method option.
*
* @dataProvider getAutoMergeMethodSecurity
*/
public function testAutoMergeMethodSecurity($filename, $expected_result)
{
$data = $this->createDataFromFixture($filename);
self::assertEquals($expected_result, $data->getAutomergeMethod(true));
}

/**
* Test the security updates config option.
*
Expand Down Expand Up @@ -423,6 +445,122 @@ public function getAutoMergeSecurity()
];
}

public function getAutoMergeMethod()
{
return [
[
'empty.json',
'merge',
],
[
'automerge_method.json',
'merge',
],
[
'automerge_method2.json',
'merge',
],
[
'automerge_method3.json',
'merge',
],
[
'automerge_method4.json',
'squash',
],
[
'automerge_method5.json',
'rebase',
],
[
'automerge_method6.json',
'merge',
],
[
'automerge_method_security.json',
'merge',
],
[
'automerge_method_security2.json',
'merge',
],
[
'automerge_method_security3.json',
'merge',
],
[
'automerge_method_security4.json',
'merge',
],
[
'automerge_method_security5.json',
'merge',
],
[
'automerge_method_security6.json',
'merge',
]
];
}

public function getAutoMergeMethodSecurity()
{
return [
[
'empty.json',
'merge',
],
[
'automerge_method.json',
'merge',
],
[
'automerge_method2.json',
'merge',
],
[
'automerge_method3.json',
'merge',
],
[
'automerge_method4.json',
'squash',
],
[
'automerge_method5.json',
'rebase',
],
[
'automerge_method6.json',
'merge',
],
[
'automerge_method_security.json',
'merge',
],
[
'automerge_method_security2.json',
'merge',
],
[
'automerge_method_security3.json',
'merge',
],
[
'automerge_method_security4.json',
'squash',
],
[
'automerge_method_security5.json',
'rebase',
],
[
'automerge_method_security6.json',
'merge',
]
];
}

public function getAlwaysUpdateAll()
{
return [
Expand Down
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method": 1
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method": "something-else"
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method": ["not allow to be an array for sure"]
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method": "squash"
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method5.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method": "rebase"
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method6.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method": "merge"
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method_security.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method_security": 1
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method_security2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method_security": "something-else"
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method_security3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method_security": ["not allow to be an array for sure"]
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method_security4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method_security": "squash"
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method_security5.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method_security": "rebase"
}
}
}
7 changes: 7 additions & 0 deletions tests/fixtures/automerge_method_security6.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extra": {
"violinist": {
"automerge_method_security": "merge"
}
}
}

0 comments on commit 16ef8bc

Please sign in to comment.