From 2f393a6c6dc3742235e13de92c1baacbe38ff060 Mon Sep 17 00:00:00 2001 From: tsantalis Date: Thu, 17 Oct 2024 10:07:12 -0400 Subject: [PATCH] Support Move Code refactoring in tracking of blocks, comments, annotations, methods --- .../AnnotationTrackerChangeHistory.java | 19 ++++++ .../BlockTrackerChangeHistory.java | 63 +++++++++++++++++++ .../CommentTrackerChangeHistory.java | 45 +++++++++++++ .../MethodTrackerChangeHistory.java | 19 ++++++ .../org/codetracker/change/ChangeFactory.java | 6 ++ .../blame/blameTestWithLocalRepo7.txt | 32 +++++----- 6 files changed, 168 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/codetracker/AnnotationTrackerChangeHistory.java b/src/main/java/org/codetracker/AnnotationTrackerChangeHistory.java index f5aa4a2ca5b..62678181e75 100644 --- a/src/main/java/org/codetracker/AnnotationTrackerChangeHistory.java +++ b/src/main/java/org/codetracker/AnnotationTrackerChangeHistory.java @@ -35,6 +35,7 @@ import gr.uom.java.xmi.diff.ModifyAttributeAnnotationRefactoring; import gr.uom.java.xmi.diff.MoveAndRenameAttributeRefactoring; import gr.uom.java.xmi.diff.MoveAttributeRefactoring; +import gr.uom.java.xmi.diff.MoveCodeRefactoring; import gr.uom.java.xmi.diff.MoveOperationRefactoring; import gr.uom.java.xmi.diff.PullUpAttributeRefactoring; import gr.uom.java.xmi.diff.PullUpOperationRefactoring; @@ -140,6 +141,24 @@ public boolean checkForExtractionOrInline(Version currentVersion, Version parent } break; } + case MOVE_CODE: { + MoveCodeRefactoring moveCodeRefactoring = (MoveCodeRefactoring) refactoring; + Method extractedMethod = Method.of(moveCodeRefactoring.getTargetContainer(), currentVersion); + if (equalMethod.test(extractedMethod)) { + Annotation annotationBefore; + if (rightAnnotation.getOperation().isPresent()) + annotationBefore = Annotation.of(rightAnnotation.getAnnotation(), rightAnnotation.getOperation().get(), parentVersion); + else + annotationBefore = Annotation.of(rightAnnotation.getAnnotation(), rightAnnotation.getClazz().get(), parentVersion); + annotationChangeHistory.handleAdd(annotationBefore, rightAnnotation, moveCodeRefactoring.toString()); + if(extractMatches == 0) { + elements.addFirst(annotationBefore); + } + annotationChangeHistory.connectRelatedNodes(); + extractMatches++; + } + break; + } case MERGE_OPERATION: { MergeOperationRefactoring mergeOperationRefactoring = (MergeOperationRefactoring) refactoring; Method methodAfter = Method.of(mergeOperationRefactoring.getNewMethodAfterMerge(), currentVersion); diff --git a/src/main/java/org/codetracker/BlockTrackerChangeHistory.java b/src/main/java/org/codetracker/BlockTrackerChangeHistory.java index 03972cd7006..2c57d921c45 100644 --- a/src/main/java/org/codetracker/BlockTrackerChangeHistory.java +++ b/src/main/java/org/codetracker/BlockTrackerChangeHistory.java @@ -58,6 +58,7 @@ import gr.uom.java.xmi.diff.ExtractOperationRefactoring; import gr.uom.java.xmi.diff.InlineOperationRefactoring; import gr.uom.java.xmi.diff.MergeOperationRefactoring; +import gr.uom.java.xmi.diff.MoveCodeRefactoring; import gr.uom.java.xmi.diff.MoveOperationRefactoring; import gr.uom.java.xmi.diff.PullUpOperationRefactoring; import gr.uom.java.xmi.diff.PushDownOperationRefactoring; @@ -327,6 +328,68 @@ else if (mapping instanceof LeafMapping && mapping.getFragment1() instanceof Sta } break; } + case MOVE_CODE: { + MoveCodeRefactoring moveCodeRefactoring = (MoveCodeRefactoring) refactoring; + Method extractedMethod = Method.of(moveCodeRefactoring.getTargetContainer(), currentVersion); + if (equalMethod.test(extractedMethod)) { + AbstractCodeFragment matchedBlockFromSourceMethod = null; + UMLOperationBodyMapper bodyMapper = moveCodeRefactoring.getBodyMapper(); + for (AbstractCodeMapping mapping : bodyMapper.getMappings()) { + if (mapping instanceof CompositeStatementObjectMapping) { + Block matchedBlockInsideExtractedMethodBody = Block.of((CompositeStatementObject) mapping.getFragment2(), bodyMapper.getContainer2(), currentVersion); + if (matchedBlockInsideExtractedMethodBody.equalIdentifierIgnoringVersion(rightBlock)) { + matchedBlockFromSourceMethod = (CompositeStatementObject) mapping.getFragment1(); + Block blockBefore = Block.of((CompositeStatementObject) mapping.getFragment1(), bodyMapper.getContainer1(), parentVersion); + List stringRepresentationBefore = blockBefore.getComposite().stringRepresentation(); + List stringRepresentationAfter = matchedBlockInsideExtractedMethodBody.getComposite().stringRepresentation(); + if (!stringRepresentationBefore.equals(stringRepresentationAfter)) { + if (!stringRepresentationBefore.get(0).equals(stringRepresentationAfter.get(0))) { + blockChangeHistory.addChange(blockBefore, matchedBlockInsideExtractedMethodBody, ChangeFactory.forBlock(Change.Type.EXPRESSION_CHANGE)); + } + List stringRepresentationBodyBefore = stringRepresentationBefore.subList(1, stringRepresentationBefore.size()); + List stringRepresentationBodyAfter = stringRepresentationAfter.subList(1, stringRepresentationAfter.size()); + if (!stringRepresentationBodyBefore.equals(stringRepresentationBodyAfter)) { + blockChangeHistory.addChange(blockBefore, matchedBlockInsideExtractedMethodBody, ChangeFactory.forBlock(Change.Type.BODY_CHANGE)); + } + } + break; + } + } + else if (mapping instanceof LeafMapping && mapping.getFragment1() instanceof StatementObject && mapping.getFragment2() instanceof StatementObject) { + Block matchedBlockInsideExtractedMethodBody = Block.of((StatementObject) mapping.getFragment2(), bodyMapper.getContainer2(), currentVersion); + if (matchedBlockInsideExtractedMethodBody.equalIdentifierIgnoringVersion(rightBlock)) { + matchedBlockFromSourceMethod = mapping.getFragment1(); + Block blockBefore = Block.of((StatementObject) mapping.getFragment1(), bodyMapper.getContainer1(), parentVersion); + List stringRepresentationBefore = blockBefore.getComposite().stringRepresentation(); + List stringRepresentationAfter = matchedBlockInsideExtractedMethodBody.getComposite().stringRepresentation(); + if (!stringRepresentationBefore.equals(stringRepresentationAfter)) { + //blockChangeHistory.addChange(blockBefore, matchedBlockInsideExtractedMethodBody, ChangeFactory.forBlock(Change.Type.BODY_CHANGE)); + addStatementChange(blockBefore, matchedBlockInsideExtractedMethodBody); + } + break; + } + } + } + Block blockBefore = Block.of(rightBlock.getComposite(), rightBlock.getOperation(), parentVersion); + if (matchedBlockFromSourceMethod == null) { + blockChangeHistory.handleAdd(blockBefore, rightBlock, moveCodeRefactoring.toString()); + if(extractMatches == 0) { + elements.add(blockBefore); + } + } + else { + VariableDeclarationContainer sourceOperation = moveCodeRefactoring.getSourceContainer(); + Method sourceMethod = Method.of(sourceOperation, parentVersion); + Block leftBlock = Block.of(matchedBlockFromSourceMethod instanceof StatementObject ? (StatementObject) matchedBlockFromSourceMethod : (CompositeStatementObject) matchedBlockFromSourceMethod, sourceMethod); + if(extractMatches == 0) { + elements.add(leftBlock); + } + } + blockChangeHistory.connectRelatedNodes(); + extractMatches++; + } + break; + } case MOVE_AND_INLINE_OPERATION: case INLINE_OPERATION: { InlineOperationRefactoring inlineOperationRefactoring = (InlineOperationRefactoring) refactoring; diff --git a/src/main/java/org/codetracker/CommentTrackerChangeHistory.java b/src/main/java/org/codetracker/CommentTrackerChangeHistory.java index 2d8d5257d17..e52ebdda84b 100644 --- a/src/main/java/org/codetracker/CommentTrackerChangeHistory.java +++ b/src/main/java/org/codetracker/CommentTrackerChangeHistory.java @@ -54,6 +54,7 @@ import gr.uom.java.xmi.diff.ModifyAttributeAnnotationRefactoring; import gr.uom.java.xmi.diff.MoveAndRenameAttributeRefactoring; import gr.uom.java.xmi.diff.MoveAttributeRefactoring; +import gr.uom.java.xmi.diff.MoveCodeRefactoring; import gr.uom.java.xmi.diff.MoveOperationRefactoring; import gr.uom.java.xmi.diff.PullUpAttributeRefactoring; import gr.uom.java.xmi.diff.PullUpOperationRefactoring; @@ -286,6 +287,50 @@ public boolean checkForExtractionOrInline(Version currentVersion, Version parent } break; } + case MOVE_CODE: { + MoveCodeRefactoring moveCodeRefactoring = (MoveCodeRefactoring) refactoring; + Method extractedMethod = Method.of(moveCodeRefactoring.getTargetContainer(), currentVersion); + if (equalMethod.test(extractedMethod)) { + UMLComment matchedCommentFromSourceMethod = null; + UMLOperationBodyMapper bodyMapper = moveCodeRefactoring.getBodyMapper(); + UMLCommentListDiff commentListDiff = bodyMapper.getCommentListDiff(); + if (commentListDiff != null) { + for (Pair mapping : commentListDiff.getCommonComments()) { + Comment matchedCommentInsideExtractedMethodBody = Comment.of(mapping.getRight(), bodyMapper.getContainer2(), currentVersion); + if (matchedCommentInsideExtractedMethodBody.equalIdentifierIgnoringVersion(rightComment)) { + matchedCommentFromSourceMethod = mapping.getLeft(); + Comment commentBefore = Comment.of(mapping.getLeft(), bodyMapper.getContainer1(), parentVersion); + if (!commentBefore.getComment().getText().equals(matchedCommentInsideExtractedMethodBody.getComment().getText())) { + processChange(commentBefore, matchedCommentInsideExtractedMethodBody); + } + break; + } + } + } + Comment commentBefore; + if (rightComment.getOperation().isPresent()) + commentBefore = Comment.of(rightComment.getComment(), rightComment.getOperation().get(), parentVersion); + else + commentBefore = Comment.of(rightComment.getComment(), rightComment.getClazz().get(), parentVersion); + if (matchedCommentFromSourceMethod == null) { + commentChangeHistory.handleAdd(commentBefore, rightComment, moveCodeRefactoring.toString()); + if(extractMatches == 0) { + elements.addFirst(commentBefore); + } + } + else { + VariableDeclarationContainer sourceOperation = moveCodeRefactoring.getSourceContainer(); + Method sourceMethod = Method.of(sourceOperation, parentVersion); + Comment leftComment = Comment.of(matchedCommentFromSourceMethod, sourceMethod); + if(extractMatches == 0) { + elements.addFirst(leftComment); + } + } + commentChangeHistory.connectRelatedNodes(); + extractMatches++; + } + break; + } case MOVE_AND_INLINE_OPERATION: case INLINE_OPERATION: { InlineOperationRefactoring inlineOperationRefactoring = (InlineOperationRefactoring) refactoring; diff --git a/src/main/java/org/codetracker/MethodTrackerChangeHistory.java b/src/main/java/org/codetracker/MethodTrackerChangeHistory.java index f437ac1c8f5..dc40524d674 100644 --- a/src/main/java/org/codetracker/MethodTrackerChangeHistory.java +++ b/src/main/java/org/codetracker/MethodTrackerChangeHistory.java @@ -60,6 +60,7 @@ import gr.uom.java.xmi.diff.ModifyVariableAnnotationRefactoring; import gr.uom.java.xmi.diff.MoveAndRenameClassRefactoring; import gr.uom.java.xmi.diff.MoveClassRefactoring; +import gr.uom.java.xmi.diff.MoveCodeRefactoring; import gr.uom.java.xmi.diff.MoveOperationRefactoring; import gr.uom.java.xmi.diff.MoveSourceFolderRefactoring; import gr.uom.java.xmi.diff.MovedClassToAnotherSourceFolder; @@ -424,6 +425,24 @@ public Set analyseMethodRefactorings(Collection refactoring } break; } + case MOVE_CODE: { + MoveCodeRefactoring moveCodeRefactoring = (MoveCodeRefactoring) refactoring; + operationBefore = moveCodeRefactoring.getSourceContainer(); + VariableDeclarationContainer extractedOperation = moveCodeRefactoring.getTargetContainer(); + Method extractedOperationAfter = Method.of(extractedOperation, currentVersion); + if (equalOperator.test(extractedOperationAfter) && moveCodeRefactoring.getMoveType().equals(MoveCodeRefactoring.Type.MOVE_TO_ADDED)) { + Method extractedOperationBefore = Method.of(extractedOperation, parentVersion); + extractedOperationBefore.setAdded(true); + methodChangeHistory.addChange(extractedOperationBefore, extractedOperationAfter, ChangeFactory.forMethod(Change.Type.INTRODUCED) + .refactoring(moveCodeRefactoring).codeElement(extractedOperationAfter).hookedElement(Method.of(operationBefore, parentVersion))); + methodChangeHistory.connectRelatedNodes(); + leftMethodSet.add(extractedOperationBefore); + Method sourceOperationBefore = Method.of(operationBefore, parentVersion); + setSourceOperation(sourceOperationBefore); + return leftMethodSet; + } + break; + } } addMethodChange(currentVersion, parentVersion, equalOperator, leftMethodSet, refactoring, operationBefore, operationAfter, changeType); diff --git a/src/main/java/org/codetracker/change/ChangeFactory.java b/src/main/java/org/codetracker/change/ChangeFactory.java index 2ffc2489520..e9e2059381d 100644 --- a/src/main/java/org/codetracker/change/ChangeFactory.java +++ b/src/main/java/org/codetracker/change/ChangeFactory.java @@ -353,6 +353,8 @@ else if (isAttribute()) change = new AttributeSignatureFormatChange(); else if (isClass()) change = new ClassSignatureFormatChange(); + else if (isBlock()) + change = new BlockSignatureFormatChange(); break; } default: @@ -362,6 +364,10 @@ else if (isClass()) return change; } + private boolean isBlock() { + return "block".equals(elementType); + } + private boolean isMethod() { return "method".equals(elementType); } diff --git a/src/test/resources/blame/blameTestWithLocalRepo7.txt b/src/test/resources/blame/blameTestWithLocalRepo7.txt index 5869f64c84c..0a1ec7875d8 100644 --- a/src/test/resources/blame/blameTestWithLocalRepo7.txt +++ b/src/test/resources/blame/blameTestWithLocalRepo7.txt @@ -89,7 +89,7 @@ e0e131335 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/Cl 8f30a6346 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-29 13:06:20 +0000 89) protected ClassTestDescriptor(UniqueId uniqueId, Function, String> defaultDisplayNameGenerator, 8f30a6346 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-29 13:06:20 +0000 90) Class testClass) { 91) -a84575b84 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-09-08 11:40:20 +0000 92) super(uniqueId, determineDisplayName(Preconditions.notNull(testClass, "Class must not be null"), +8f30a6346 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-29 13:06:20 +0000 92) super(uniqueId, determineDisplayName(Preconditions.notNull(testClass, "Class must not be null"), a84575b84 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-09-08 11:40:20 +0000 93) defaultDisplayNameGenerator), ClassSource.from(testClass)); 94) 8f30a6346 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-29 13:06:20 +0000 95) this.testClass = testClass; @@ -155,20 +155,20 @@ b2ba6b951 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/Cl 155) 65d54b1a0 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-01-12 13:20:37 +0000 156) Lifecycle lifecycle = getTestInstanceLifecycle(this.testClass, context.getConfigurationParameters()); 137f831bb junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2018-07-07 20:15:38 +0000 157) ThrowableCollector throwableCollector = new OpenTest4JAwareThrowableCollector(); -65d54b1a0 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-01-12 13:20:37 +0000 158) ClassExtensionContext extensionContext = new ClassExtensionContext(context.getExtensionContext(), +83b3eb665 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-07-01 11:45:30 +0000 158) ClassExtensionContext extensionContext = new ClassExtensionContext(context.getExtensionContext(), 65d54b1a0 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-01-12 13:20:37 +0000 159) context.getExecutionListener(), this, lifecycle, context.getConfigurationParameters(), throwableCollector); 160) 65d54b1a0 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-01-12 13:20:37 +0000 161) this.beforeAllMethods = findBeforeAllMethods(this.testClass, lifecycle == Lifecycle.PER_METHOD); 65d54b1a0 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-01-12 13:20:37 +0000 162) this.afterAllMethods = findAfterAllMethods(this.testClass, lifecycle == Lifecycle.PER_METHOD); 163) -0027ade00 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Johannes Link 2015-12-22 09:34:07 +0000 164) // @formatter:off -5d7d85d0b junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-11-03 21:03:27 +0000 165) return context.extend() +67ec62513 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Marc Philipp 2015-12-09 13:06:57 +0000 164) // @formatter:off +efb867427 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Marc Philipp 2015-12-09 21:16:18 +0000 165) return context.extend() 5d7d85d0b junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-11-03 21:03:27 +0000 166) .withTestInstanceProvider(testInstanceProvider(context, registry, extensionContext)) -5d7d85d0b junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-11-03 21:03:27 +0000 167) .withExtensionRegistry(registry) -5d7d85d0b junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-11-03 21:03:27 +0000 168) .withExtensionContext(extensionContext) -5d7d85d0b junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-11-03 21:03:27 +0000 169) .withThrowableCollector(throwableCollector) -5d7d85d0b junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-11-03 21:03:27 +0000 170) .build(); -0027ade00 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Johannes Link 2015-12-22 09:34:07 +0000 171) // @formatter:on +dfe33b0e7 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-05-02 22:18:52 +0000 167) .withExtensionRegistry(registry) +83b3eb665 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-07-01 11:45:30 +0000 168) .withExtensionContext(extensionContext) +17360a5a0 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2017-07-01 16:05:16 +0000 169) .withThrowableCollector(throwableCollector) +efb867427 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Marc Philipp 2015-12-09 21:16:18 +0000 170) .build(); +67ec62513 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Marc Philipp 2015-12-09 13:06:57 +0000 171) // @formatter:on 0027ade00 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Johannes Link 2015-12-22 09:34:07 +0000 172) } 173) 57b31220d junit5-engine/src/main/java/org/junit/gen5/engine/junit5/JUnit5ClassDescriptor.java (Marc Philipp 2015-12-08 13:55:37 +0000 174) @Override @@ -294,7 +294,7 @@ fa7f25613 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor 294) 180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 295) try { 180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 296) instance = this.testInstanceFactory.createTestInstance( -180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 297) new DefaultTestInstanceFactoryContext(this.testClass, outerInstance), extensionContext); +bdc9ef8db junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-01 17:08:05 +0000 297) new DefaultTestInstanceFactoryContext(this.testClass, outerInstance), extensionContext); 180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 298) } 180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 299) catch (Throwable throwable) { 180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 300) BlacklistedExceptions.rethrowIfBlacklisted(throwable); @@ -323,8 +323,8 @@ a4de34402 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor a4de34402 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-08-06 12:39:09 +0000 323) testClassName += "@" + Integer.toHexString(System.identityHashCode(this.testClass)); a4de34402 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-08-06 12:39:09 +0000 324) instanceClassName += "@" + Integer.toHexString(System.identityHashCode(instanceClass)); a4de34402 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-08-06 12:39:09 +0000 325) } -a4de34402 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-08-06 12:39:09 +0000 326) String message = String.format( -a4de34402 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-08-06 12:39:09 +0000 327) "TestInstanceFactory [%s] failed to return an instance of [%s] and instead returned an instance of [%s].", +180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 326) String message = String.format( +180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 327) "TestInstanceFactory [%s] failed to return an instance of [%s] and instead returned an instance of [%s].", a4de34402 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-08-06 12:39:09 +0000 328) this.testInstanceFactory.getClass().getName(), testClassName, instanceClassName); 329) 180df5a92 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2018-07-03 12:05:21 +0000 330) throw new TestInstantiationException(message); @@ -345,7 +345,7 @@ bdc9ef8db junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor fa7f25613 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-07-04 11:00:30 +0000 345) private void invokeTestInstancePostProcessors(Object instance, ExtensionRegistry registry, fa7f25613 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-07-04 11:00:30 +0000 346) ExtensionContext context) { 347) -fa7f25613 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-07-04 11:00:30 +0000 348) registry.stream(TestInstancePostProcessor.class).forEach( +ebfdc4d7f junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-05-24 22:09:27 +0000 348) registry.stream(TestInstancePostProcessor.class).forEach( fa7f25613 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-07-04 11:00:30 +0000 349) extension -> executeAndMaskThrowable(() -> extension.postProcessTestInstance(instance, context))); 65e0bd548 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-05-13 13:55:54 +0000 350) } 351) @@ -393,7 +393,7 @@ b2ba6b951 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/Cl 3e3b40213 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-25 20:02:49 +0000 393) ThrowableCollector throwableCollector = context.getThrowableCollector(); 394) 41e5e5798 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-26 15:25:30 +0000 395) registry.getReversedExtensions(AfterAllCallback.class)// -41e5e5798 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-26 15:25:30 +0000 396) .forEach(extension -> throwableCollector.execute(() -> extension.afterAll(extensionContext))); +3e3b40213 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-25 20:02:49 +0000 396) .forEach(extension -> throwableCollector.execute(() -> extension.afterAll(extensionContext))); c2d9a533b junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Johannes Link 2015-12-17 19:54:24 +0000 397) } 398) 6b575f2ee junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-05-02 22:18:39 +0000 399) private void registerBeforeEachMethodAdapters(ExtensionRegistry registry) { @@ -430,8 +430,8 @@ b2ba6b951 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/Cl 430) a97e4d308 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-07-04 11:00:00 +0000 431) private void invokeMethodInExtensionContext(Method method, ExtensionContext context, ExtensionRegistry registry) { bef03b5ce junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-07-10 16:34:34 +0000 432) Object testInstance = context.getRequiredTestInstance(); -ee8cb2e44 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-06-30 16:16:42 +0000 433) testInstance = ReflectionUtils.getOutermostInstance(testInstance, method.getDeclaringClass()).orElseThrow( -ee8cb2e44 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-06-30 16:16:42 +0000 434) () -> new JUnitException("Failed to find instance for method: " + method.toGenericString())); +323dac885 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-06-30 16:16:42 +0000 433) testInstance = ReflectionUtils.getOutermostInstance(testInstance, method.getDeclaringClass()).orElseThrow( +fdadf9054 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-06-30 16:16:42 +0000 434) () -> new JUnitException("Failed to find instance for method: " + method.toGenericString())); 435) fdadf9054 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2017-06-30 16:16:42 +0000 436) executableInvoker.invoke(method, testInstance, context, registry); 8db7e41d0 junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/ClassTestDescriptor.java (Johannes Link 2015-12-17 12:48:18 +0000 437) }