diff --git a/src/main/java/org/codetracker/FileTrackerWithLocalFilesImpl.java b/src/main/java/org/codetracker/FileTrackerWithLocalFilesImpl.java index b20f92db0f7..73924210a14 100644 --- a/src/main/java/org/codetracker/FileTrackerWithLocalFilesImpl.java +++ b/src/main/java/org/codetracker/FileTrackerWithLocalFilesImpl.java @@ -257,6 +257,8 @@ public void blame() throws Exception { if (rightClass == null) { continue; } + String rightClassName = rightClass.getUmlClass().getName(); + String rightClassSourceFolder = rightClass.getUmlClass().getLocationInfo().getSourceFolder(); if ("0".equals(parentCommitId)) { Class leftClass = Class.of(rightClass.getUmlClass(), parentVersion); startClassChangeHistory.get().handleAdd(leftClass, rightClass, "Initial commit!"); @@ -386,10 +388,12 @@ else if (leftSuperclass == null && rightSuperclass != null) { processLocallyRefactoredAttributes(notFoundAttributes, umlModelDiffLocal, currentVersion, parentVersion, refactorings); processLocallyRefactoredInnerClasses(notFoundInnerClasses, umlModelDiffLocal, currentVersion, parentVersion, refactorings); } - UMLAbstractClassDiff umlClassDiff = getUMLClassDiff(umlModelDiffLocal, rightClass.getUmlClass().getName()); + UMLAbstractClassDiff umlClassDiff = getUMLClassDiff(umlModelDiffLocal, rightClassSourceFolder, rightClassName); processImportsAndClassComments(umlClassDiff, rightClass, currentVersion, parentVersion, refactorings); for (Pair pair : foundInnerClasses) { - UMLAbstractClassDiff innerClassDiff = getUMLClassDiff(umlModelDiffLocal, pair.getRight().getUmlClass().getName()); + String rightInnerClassName = pair.getRight().getUmlClass().getName(); + String rightInnerClassSourceFolder = pair.getRight().getUmlClass().getLocationInfo().getSourceFolder(); + UMLAbstractClassDiff innerClassDiff = getUMLClassDiff(umlModelDiffLocal, rightInnerClassSourceFolder, rightInnerClassName); processImportsAndClassComments(innerClassDiff, pair.getRight(), currentVersion, parentVersion, refactorings); } Set leftSideClasses = new HashSet<>(classRefactored); @@ -416,10 +420,12 @@ else if (leftSuperclass == null && rightSuperclass != null) { processLocallyRefactoredAttributes(notFoundAttributes, umlModelDiffPartial, currentVersion, parentVersion, refactoringsPartial); processLocallyRefactoredInnerClasses(notFoundInnerClasses, umlModelDiffPartial, currentVersion, parentVersion, refactoringsPartial); } - UMLAbstractClassDiff umlClassDiff = getUMLClassDiff(umlModelDiffPartial, rightClass.getUmlClass().getName()); + UMLAbstractClassDiff umlClassDiff = getUMLClassDiff(umlModelDiffPartial, rightClassSourceFolder, rightClassName); processImportsAndClassComments(umlClassDiff, rightClass, currentVersion, parentVersion, refactoringsPartial); for (Pair pair : foundInnerClasses) { - UMLAbstractClassDiff innerClassDiff = getUMLClassDiff(umlModelDiffPartial, pair.getRight().getUmlClass().getName()); + String rightInnerClassName = pair.getRight().getUmlClass().getName(); + String rightInnerClassSourceFolder = pair.getRight().getUmlClass().getLocationInfo().getSourceFolder(); + UMLAbstractClassDiff innerClassDiff = getUMLClassDiff(umlModelDiffPartial, rightInnerClassSourceFolder, rightInnerClassName); processImportsAndClassComments(innerClassDiff, pair.getRight(), currentVersion, parentVersion, refactoringsPartial); } Set leftSideClasses = new HashSet<>(classRefactored); @@ -448,10 +454,12 @@ else if (leftSuperclass == null && rightSuperclass != null) { processLocallyRefactoredAttributes(notFoundAttributes, umlModelDiffAll, currentVersion, parentVersion, refactorings); processLocallyRefactoredInnerClasses(notFoundInnerClasses, umlModelDiffAll, currentVersion, parentVersion, refactorings); } - UMLAbstractClassDiff umlClassDiff = getUMLClassDiff(umlModelDiffAll, rightClass.getUmlClass().getName()); + UMLAbstractClassDiff umlClassDiff = getUMLClassDiff(umlModelDiffAll, rightClassSourceFolder, rightClassName); processImportsAndClassComments(umlClassDiff, rightClass, currentVersion, parentVersion, refactorings); for (Pair pair : foundInnerClasses) { - UMLAbstractClassDiff innerClassDiff = getUMLClassDiff(umlModelDiffAll, pair.getRight().getUmlClass().getName()); + String rightInnerClassName = pair.getRight().getUmlClass().getName(); + String rightInnerClassSourceFolder = pair.getRight().getUmlClass().getLocationInfo().getSourceFolder(); + UMLAbstractClassDiff innerClassDiff = getUMLClassDiff(umlModelDiffAll, rightInnerClassSourceFolder, rightInnerClassName); processImportsAndClassComments(innerClassDiff, pair.getRight(), currentVersion, parentVersion, refactorings); } Set leftSideClasses = new HashSet<>(classRefactored); @@ -859,6 +867,8 @@ else if (key2 instanceof Annotation) { private void processLocallyRefactoredAttributes(Map notFoundAttributes, UMLModelDiff umlModelDiff, Version currentVersion, Version parentVersion, List refactorings) throws Exception { for (Attribute rightAttribute : notFoundAttributes.keySet()) { + String rightAttributeClassName = rightAttribute.getUmlAttribute().getClassName(); + String rightAttributeSourceFolder = rightAttribute.getUmlAttribute().getLocationInfo().getSourceFolder(); AttributeTrackerChangeHistory startAttributeChangeHistory = notFoundAttributes.get(rightAttribute); Set attributeContainerChanged = startAttributeChangeHistory.isAttributeContainerChanged(umlModelDiff, refactorings, currentVersion, parentVersion, rightAttribute::equalIdentifierIgnoringVersion, getClassMoveDiffList(umlModelDiff)); boolean containerChanged = !attributeContainerChanged.isEmpty(); @@ -919,7 +929,7 @@ private void processLocallyRefactoredAttributes(Map foundPair = null; for (Pair pair : umlClassDiff.getCommonAtrributes()) { @@ -970,7 +980,7 @@ else if (key2 instanceof Annotation) { if (found) { continue; } - UMLAbstractClassDiff umlClassDiff = getUMLClassDiff(umlModelDiff, rightAttribute.getUmlAttribute().getClassName()); + UMLAbstractClassDiff umlClassDiff = getUMLClassDiff(umlModelDiff, rightAttributeSourceFolder, rightAttributeClassName); startAnnotationChangeHistory.checkClassDiffForAnnotationChange(currentVersion, parentVersion, rightAttribute, currentAnnotation::equalIdentifierIgnoringVersion, umlClassDiff); } } @@ -1392,6 +1402,8 @@ else if (leftSuperclass == null && rightSuperclass != null) { private void processLocallyRefactoredInnerClasses(Map notFoundInnerClasses, UMLModelDiff umlModelDiff, Version currentVersion, Version parentVersion, List refactorings) throws RefactoringMinerTimedOutException { for (Class rightInnerClass : notFoundInnerClasses.keySet()) { + String rightInnerClassName = rightInnerClass.getUmlClass().getName(); + String rightInnerClassSourceFolder = rightInnerClass.getUmlClass().getLocationInfo().getSourceFolder(); ClassTrackerChangeHistory startInnerClassChangeHistory = notFoundInnerClasses.get(rightInnerClass); Set classRefactored = startInnerClassChangeHistory.analyseClassRefactorings(refactorings, currentVersion, parentVersion, rightInnerClass::equalIdentifierIgnoringVersion); Set innerClassContainerChanged = startInnerClassChangeHistory.isInnerClassContainerChanged(umlModelDiff, refactorings, currentVersion, parentVersion, rightInnerClass::equalIdentifierIgnoringVersion, getClassMoveDiffList(umlModelDiff)); @@ -1418,7 +1430,7 @@ private void processLocallyRefactoredInnerClasses(Map testBlamerInputProvider(){ "https://github.com/eclipse/jetty.project/commit/fc5dd874f3deda71e6cd42af994a5af5cb6be4af, jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpTransportOverHTTP2.java, /src/test/resources/blame/blameTestWithLocalRepo20.txt", "https://github.com/pmd/pmd/commit/d528dcd5d45582229ab3410deb7c40b2143d015d, pmd-java/src/main/java/net/sourceforge/pmd/lang/java/typeresolution/ClassTypeResolver.java, /src/test/resources/blame/blameTestWithLocalRepo21.txt", "https://github.com/apache/tomcat/commit/dbc805e237b98834a7b7afb6da7be44da428c399, java/org/apache/coyote/http2/ConnectionSettings.java, /src/test/resources/blame/blameTestWithLocalRepo22.txt", + "https://github.com/apache/ant/commit/2943e6c208b4152e8d3142168c67a3a23509ba2e, proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java, /src/test/resources/blame/blameTestWithLocalRepo23.txt", "https://github.com/eclipse/jgit/commit/bd1a82502680b5de5bf86f6c4470185fd1602386, org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java, /src/test/resources/blame/blameTestUntilCommitZero.txt", "https://github.com/JetBrains/intellij-community/commit/ecb1bb9d4d484ae63ee77f8ad45bdce154db9356, java/compiler/impl/src/com/intellij/compiler/CompilerManagerImpl.java, /src/test/resources/blame/blameTestUntilCommitZero2.txt", "https://github.com/JetBrains/intellij-community/commit/ecb1bb9d4d484ae63ee77f8ad45bdce154db9356, java/compiler/impl/src/com/intellij/compiler/actions/CompileDirtyAction.java, /src/test/resources/blame/blameTestUntilCommitZero3.txt" diff --git a/src/test/resources/blame/blameTestWithLocalRepo23.txt b/src/test/resources/blame/blameTestWithLocalRepo23.txt new file mode 100644 index 00000000000..0c7990148fd --- /dev/null +++ b/src/test/resources/blame/blameTestWithLocalRepo23.txt @@ -0,0 +1,51 @@ +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 1) /* +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 2) * Copyright (C) The Apache Software Foundation. All rights reserved. +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 3) * +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 4) * This software is published under the terms of the Apache Software License +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 5) * version 1.1, a copy of which has been included with this distribution in +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 6) * the LICENSE.txt file. +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 7) */ +04744d1c3 proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (Peter Donald 2002-03-17 08:07:10 +0000 8) package org.apache.myrmidon.components.property.test; + 9) +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 10) import org.apache.myrmidon.interfaces.property.PropertyResolver; +04744d1c3 proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (Peter Donald 2002-03-17 08:07:10 +0000 11) import org.apache.myrmidon.components.property.test.AbstractPropertyResolverTestCase; +04744d1c3 proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (Peter Donald 2002-03-17 08:07:10 +0000 12) import org.apache.myrmidon.components.property.DefaultPropertyResolver; +0f1259d2f proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (adammurdoch 2002-04-08 10:45:06 +0000 13) import org.apache.myrmidon.components.store.DefaultPropertyStore; +0f1259d2f proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (adammurdoch 2002-04-08 10:45:06 +0000 14) import org.apache.avalon.excalibur.i18n.Resources; + 15) +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 16) /** +04744d1c3 proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (Peter Donald 2002-03-17 08:07:10 +0000 17) * Functional tests for {@link org.apache.myrmidon.components.property.DefaultPropertyResolver}. +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 18) * +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 19) * @author Darrell DeBoer +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 20) * @version $Revision$ $Date$ +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 21) */ +04744d1c3 proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (Peter Donald 2002-03-17 08:07:10 +0000 22) public class DefaultPropertyResolverTestCase +04744d1c3 proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (Peter Donald 2002-03-17 08:07:10 +0000 23) extends AbstractPropertyResolverTestCase +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 24) { +04744d1c3 proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (Peter Donald 2002-03-17 08:07:10 +0000 25) public DefaultPropertyResolverTestCase( final String name ) +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 26) { +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 27) super( name ); +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 28) } + 29) +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 30) protected PropertyResolver createResolver() +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 31) { +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 32) return new DefaultPropertyResolver(); +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 33) } + 34) +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 35) /** +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 36) * Tests handing undefined property. +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 37) */ +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 38) public void testUndefinedProp() throws Exception +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 39) { +0f1259d2f proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (adammurdoch 2002-04-08 10:45:06 +0000 40) final Resources rez = getResourcesForTested( DefaultPropertyStore.class ); +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 41) final String undefinedProp = "undefinedProperty"; +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 42) doTestFailure( "${" + undefinedProp + "}", +0f1259d2f proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (adammurdoch 2002-04-08 10:45:06 +0000 43) rez.getString( "unknown-prop.error", undefinedProp ), +7eb8a34e5 proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (adammurdoch 2002-04-09 02:26:35 +0000 44) m_context ); + 45) +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 46) //TODO - "" should be disallowed as a property name +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 47) doTestFailure( "${}", +0f1259d2f proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (adammurdoch 2002-04-08 10:45:06 +0000 48) rez.getString( "unknown-prop.error", "" ), +7eb8a34e5 proposal/myrmidon/src/test/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java (adammurdoch 2002-04-09 02:26:35 +0000 49) m_context ); +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 50) } +6ff9bf50a proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/DefaultPropertyResolverTest.java (adammurdoch 2002-03-13 07:35:19 +0000 51) }