{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":452186504,"defaultBranch":"master","name":"robolectric","ownerLogin":"ZSmallX","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2022-01-26T07:53:22.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/14019790?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1678978520.0","currentOid":""},"activityList":{"items":[{"before":"f3020ea769d52f3cfa3ebbc5e3d54ff0f465b426","after":"943b71ee2ba9d5efa1ddbee5bc073ea0c1cc7e1a","ref":"refs/heads/fix_jacoco_instrumentec_constructor","pushedAt":"2023-03-19T05:20:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Fix JaCoCo instrumented constructor skipped.\n\nDetect JaCoCo instrumentation from the original constructor by checking if the beginning one or two instructions are from JaCoCo. Simply by instructions' type and content.\n\nAn then strip JaCoCo constructor probes data initialization instructions from `callSuper` instructions for JaCoCo instrumentation was detected. And insert these instructions into the beginning of the original construction.\n\nOverall, we assume that the JaCoCo instrumentation detecting and JaCoCo initialization instructions are in general cases and obey the JaCoCo implementations.\n\nNote that there can be many instructions before the call super() or this(), so this can still break the instruction compatibility?\n\nTested by: JaCoCo offline integration tests.\n\nSigned-off-by: ZSmallX ","shortMessageHtmlLink":"Fix JaCoCo instrumented constructor skipped."}},{"before":null,"after":"f3020ea769d52f3cfa3ebbc5e3d54ff0f465b426","ref":"refs/heads/fix_jacoco_instrumentec_constructor","pushedAt":"2023-03-16T14:55:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Fix JaCoCo instrumented constructor skipped.\n\nStrip JaCoCo constructor probes data initialization instructions from `callSuper` instructions for JaCoCo instrumentation was detected. And insert these instructions into the beginning of the original construction.\n\nNote that there can be many instructions before the call super() or this(), so this can still break the instruction compatibility?\n\nTested by: JaCoCo offline integration tests.\n\nSigned-off-by: ZSmallX ","shortMessageHtmlLink":"Fix JaCoCo instrumented constructor skipped."}},{"before":"e7cf7310c45a08a8c203ca51cfdb5bab73f1e760","after":"1349544d10dcb4cbf9b4d87a83de7f0cac80399e","ref":"refs/heads/master","pushedAt":"2023-03-16T14:34:03.584Z","pushType":"push","commitsCount":88,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Let example in README.md to use 4.10-alpha-1","shortMessageHtmlLink":"Let example in README.md to use 4.10-alpha-1"}},{"before":"762308cdcf0f7632d8ac18e22a44024919f7efd6","after":"c179c2b76095402d39770374de2973852045fd19","ref":"refs/heads/optimize_jacoco_integration_tests","pushedAt":"2023-03-14T03:37:45.013Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Switch JaCoCo on-the-fly to offline for integration tests.\n\nAdd a Java module with extra build logic to make all classes are instrumented by JaCoCo before launching the Gradle Test JVM.\n\nNote that when using JaCoCo on-the-fly, JaCoCo instruments the classes after Robolectric. So there is nothing to control over by Robolectric.\n\nSigned-off-by: ZSmallX ","shortMessageHtmlLink":"Switch JaCoCo on-the-fly to offline for integration tests."}},{"before":null,"after":"762308cdcf0f7632d8ac18e22a44024919f7efd6","ref":"refs/heads/optimize_jacoco_integration_tests","pushedAt":"2023-03-11T14:43:31.823Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Optimize JaCoCo integration tests.\n\n- Add JaCoCo offline instrument integration tests.\n- Separate JaCoCo integration tests' build logic and common code.\n- Change JaCoCo integration tests' Gradle plugin from android library to java.\n\nSome running entries are added to each module to support running from Android Studio.\n\nSigned-off-by: ZSmallX ","shortMessageHtmlLink":"Optimize JaCoCo integration tests."}},{"before":"1e5a20b5ccfc5ecda4487c21553e8a2ddac2f60b","after":"e7cf7310c45a08a8c203ca51cfdb5bab73f1e760","ref":"refs/heads/master","pushedAt":"2023-03-11T13:07:14.775Z","pushType":"push","commitsCount":8,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Migrate compileTestKotlin to compileKotlin for kotlin module\n\nSigned-off-by: utzcoz ","shortMessageHtmlLink":"Migrate compileTestKotlin to compileKotlin for kotlin module"}},{"before":"2f3fca2d37819ffef5ceedb7fdd437e082cd7693","after":"6ff22f2da150fad51cc6ffe58a3970b98b23fa71","ref":"refs/heads/fix_jacoco_edge_case","pushedAt":"2023-03-09T17:12:37.784Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Fix an edge case in Jacoco detection logic for constructors.\n\nOne of the edge cases could be Jacoco-instrumented constructor with the first instruction is LabelNode and the second instruction is invoke static($jacocoInit()).\n\nAccording to JaCoCo docs, one of the followings should be the first instruction:\n- Access field to $jacocoData.\n- Access static method to $jacocoInit().\n\n> To collect execution data JaCoCo instruments the classes under test which adds two members to the classes: A private static field $jacocoData and a private static method $jacocoInit(). Both members are marked as synthetic.\n\nSee https://www.eclemma.org/jacoco/trunk/doc/faq.html\n\nNote that Robolectric does not check if both members are synthetic.\n\nTested by: jacoco-offline integration tests.\n\nSigned-off-by: ZSmallX ","shortMessageHtmlLink":"Fix an edge case in Jacoco detection logic for constructors."}},{"before":"82bb7120841aed26496c6b7d111dc5a687cae043","after":"2a7d21cc3d493d68e803adc2460dec6aaf0467d7","ref":"refs/heads/jacoco_offline_integration_tests","pushedAt":"2023-03-09T17:10:49.426Z","pushType":"push","commitsCount":1,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Optimize the assertion and package name and version.\n\nSigned-off-by: ZSmallX ","shortMessageHtmlLink":"Optimize the assertion and package name and version."}},{"before":null,"after":"5ae58ccfc5b743e7928283f2336efe4a899b969e","ref":"refs/heads/jacoco_on-the-fly_integration_tests","pushedAt":"2023-03-09T17:00:54.730Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Add integration tests for JaCoCo on-the-fly instrumented.\n\nAdd comparable tests for JaCoCo offline on custom shadows.\n\nSigned-off-by: ZSmallX ","shortMessageHtmlLink":"Add integration tests for JaCoCo on-the-fly instrumented."}},{"before":null,"after":"2f3fca2d37819ffef5ceedb7fdd437e082cd7693","ref":"refs/heads/fix_jacoco_edge_case","pushedAt":"2023-03-09T16:40:27.908Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ZSmallX","name":"Dio","path":"/ZSmallX","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14019790?s=80&v=4"},"commit":{"message":"Fix an edge case in Jacoco detection logic for constructors.\n\nOne of the edge cases could be Jacoco-instrumented constructor with the first instruction is LabelNode and the second instruction is invoke static($jacocoInit()).\n\nAccording to JaCoCo docs, one of the followings should be the first instruction:\n- Access field to $jacocoData.\n- Access static method to $jacocoInit().\n\n> To collect execution data JaCoCo instruments the classes under test which adds two members to the classes: A private static field $jacocoData and a private static method $jacocoInit(). Both members are marked as synthetic.\n\nSee https://www.eclemma.org/jacoco/trunk/doc/faq.html\n\nNote that Robolectric does not check if both members are synthetic.\n\nTested by: jacoco-offline integration tests.\n\nSigned-off-by: ZSmallX ","shortMessageHtmlLink":"Fix an edge case in Jacoco detection logic for constructors."}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADBnd0dAA","startCursor":null,"endCursor":null}},"title":"Activity ยท ZSmallX/robolectric"}