Skip to content

Case insensitive method names #99

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Feb 22, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e6cb7e2
Dont treat case changes in method names as breaking
emmetog Feb 8, 2018
4f565b6
Change indentation to tabs
emmetog Feb 12, 2018
a382291
Add some tests for Signature comparator
emmetog Feb 12, 2018
63f11e9
Detect method name case changes
emmetog Feb 12, 2018
d2418c3
Make renaming method case a PATCH change
emmetog Feb 12, 2018
6424295
Remove commented var_dump
emmetog Feb 12, 2018
5b091f4
Detect interface case name changes as PATCH
emmetog Feb 13, 2018
d0191d8
Revert Signature::analyze
emmetog Feb 14, 2018
b9de798
Detect case only name change for Traits
emmetog Feb 14, 2018
558aaae
Detect case only name changes for Classes
emmetog Feb 14, 2018
f8e54b3
Add rule for trait renamed case only
emmetog Feb 14, 2018
e1d49be
Split method and trait rename into visibility
emmetog Feb 19, 2018
9ca9220
Add tests for all visibilities of case change
emmetog Feb 19, 2018
50b291d
Merge branch 'master' into case-insensitive-method-names
emmetog Feb 19, 2018
e527747
Interface operation extend from Delta
emmetog Feb 19, 2018
596646c
Rename $mappingsBeforeKeyed to $filesBeforeKeyed
emmetog Feb 19, 2018
0c24711
Remove unneccessary compare of lowercase names
emmetog Feb 19, 2018
d49730c
Remove empty line
emmetog Feb 19, 2018
a15c6b7
Make ClassMethodRenamedCaseOnly extend Delta
emmetog Feb 19, 2018
fbdb940
Make TraitRenamedCaseOnly extend Delta
emmetog Feb 19, 2018
d672b2d
Spaces to tabs
emmetog Feb 19, 2018
ce3e042
Rename test methods
emmetog Feb 19, 2018
667e0be
Detect function renaming too
emmetog Feb 19, 2018
e50e738
Rename all operations to CaseChanged
emmetog Feb 19, 2018
931d81f
Use case changed instead of rename in rule names
emmetog Feb 19, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Detect method name case changes
  • Loading branch information
emmetog committed Feb 12, 2018
commit 63f11e9586dfce5fc9b704f6ef01620d69a4e6c2
17 changes: 17 additions & 0 deletions src/PHPSemVerChecker/Comparator/Signature.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,28 @@ public static function analyze(FunctionLike $functionA, FunctionLike $functionB)
'parameter_default_value_changed' => false,
];

$changes = self::detectFunctionNameChanges($changes, $functionA, $functionB);
$changes = self::detectParameterChanges($changes, $functionA, $functionB);

return $changes;
}

private static function detectFunctionNameChanges($changes, FunctionLike $functionA, FunctionLike $functionB)
{
if ($functionA->name != $functionB->name) {

if (strtolower($functionA->name) == strtolower($functionB->name)) {
$changes['function_renamed_case_only'] = true;
} else {
$changes['function_renamed'] = true;
}

return $changes;
}

return $changes;
}

private static function detectParameterChanges($changes, FunctionLike $functionA, FunctionLike $functionB)
{
$parametersA = $functionA->getParams();
Expand Down
66 changes: 66 additions & 0 deletions tests/PHPSemVerChecker/Comparator/SignatureTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,70 @@ public function testAddedParameters()

$this->assertEquals($expectedResult, $result);
}

public function testMethodRenamed()
{
$signature1 = new ClassMethod('testMethod1', [
'params' => [
new Param('testParameter'),
],
]);


$signature2 = new ClassMethod('testMethodRenamed', [
'params' => [
new Param('testParameter'),
],
]);

$result = Signature::analyze($signature1, $signature2);

$expectedResult = [
'function_renamed' => true,
'function_renamed_case_only' => false,
'parameter_added' => false,
'parameter_removed' => false,
'parameter_renamed' => false,
'parameter_typing_added' => false,
'parameter_typing_removed' => false,
'parameter_default_added' => false,
'parameter_default_removed' => false,
'parameter_default_value_changed' => false,
];

$this->assertEquals($expectedResult, $result);
}

public function testMethodRenamedCaseOnly()
{
$signature1 = new ClassMethod('testMethodOne', [
'params' => [
new Param('testParameter'),
],
]);


$signature2 = new ClassMethod('testmethodone', [
'params' => [
new Param('testParameter'),
],
]);

$result = Signature::analyze($signature1, $signature2);

$expectedResult = [
'function_renamed' => false,
'function_renamed_case_only' => true,
'parameter_added' => false,
'parameter_removed' => false,
'parameter_renamed' => false,
'parameter_typing_added' => false,
'parameter_typing_removed' => false,
'parameter_default_added' => false,
'parameter_default_removed' => false,
'parameter_default_value_changed' => false,
];

$this->assertEquals($expectedResult, $result);
}
}