Skip to content
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

Fix part of #5343: Implement script to run code coverage for a specific file #5433

Merged
merged 88 commits into from
Jun 26, 2024

Conversation

Rd4dev
Copy link
Collaborator

@Rd4dev Rd4dev commented Jun 20, 2024

Explanation

Fixes part of #5343

Project

[PR 1.3 of Project 4.1]

Changes Made

  • Added a new script utility RunCoverage.kt that takes a filename as an argument.
  • Implements handling for exempted files and test target mapping.

Implementation Details

  • Exemption Check: The script first checks if the provided file is exempted from having test file. If exempted, it exits early with the message "The file is exempted hence no coverage!".

  • Test Target Mapping:

    • Script, App, and Default Subpackages: Constructs mappings for files within these subpackages to their corresponding test targets.
    • App Subpackage: Handles mapping for both test and Localtests.
  • Code Coverage Execution:

    • Utilizes the RunCoverageForTestTarget script to execute code coverage analysis.
    • Returns a list of coverage data strings for each run, which will be subsequently saved as protos in PR 1.4.

Example Usage

bazel run //scripts:run_coverage -- $(pwd) utility/src/main/java/org/oppia/android/util/parser/math/MathModel.kt

Essential Checklist

  • The PR title and explanation each start with "Fix #bugnum: " (If this PR fixes part of an issue, prefix the title with "Fix part of #bugnum: ...".)
  • Any changes to scripts/assets files have their rationale included in the PR explanation.
  • The PR follows the style guide.
  • The PR does not contain any unnecessary code changes from Android Studio (reference).
  • The PR is made from a branch that's not called "develop" and is up-to-date with "develop".
  • The PR is assigned to the appropriate reviewers (reference).

For UI-specific PRs only

If your PR includes UI-related changes, then:

  • Add screenshots for portrait/landscape for both a tablet & phone of the before & after UI changes
  • For the screenshots above, include both English and pseudo-localized (RTL) screenshots (see RTL guide)
  • Add a video showing the full UX flow with a screen reader enabled (see accessibility guide)
  • For PRs introducing new UI elements or color changes, both light and dark mode screenshots must be included
  • Add a screenshot demonstrating that you ran affected Espresso tests locally & that they're passing

Rd4dev added 30 commits June 13, 2024 20:00
… file content and its related test content in the provided subpackage
…d test files with corresponding build configurations and content
@Rd4dev Rd4dev changed the base branch from code_coverage_bazel_command_execution to develop June 26, 2024 03:46
Copy link

APK & AAB differences analysis

Note that this is a summarized snapshot. See the CI artifacts for detailed differences.

Dev

Expand to see flavor specifics

Universal APK

APK file size: 16 MiB (old), 16 MiB (new), 96 KiB (Removed)

APK download size (estimated): 14 MiB (old), 14 MiB (new), 89 KiB (Removed)

Method count: 226905 (old), 221791 (new), 5114 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 6550 (old), 6550 (new), 0 (No change)

  • Anim: 49 (old), 49 (new), 0 (No change)
  • Animator: 20 (old), 20 (new), 0 (No change)
  • Array: 15 (old), 15 (new), 0 (No change)
  • Attr: 915 (old), 915 (new), 0 (No change)
  • Bool: 10 (old), 10 (new), 0 (No change)
  • Color: 911 (old), 911 (new), 0 (No change)
  • Dimen: 994 (old), 994 (new), 0 (No change)
  • Drawable: 373 (old), 373 (new), 0 (No change)
  • Id: 1206 (old), 1206 (new), 0 (No change)
  • Integer: 37 (old), 37 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 368 (old), 368 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • Raw: 2 (old), 2 (new), 0 (No change)
  • String: 805 (old), 805 (new), 0 (No change)
  • Style: 816 (old), 816 (new), 0 (No change)
  • Xml: 6 (old), 6 (new), 0 (No change)

Lesson assets: 111 (old), 105 (new), 6 (Removed):

  • test_classroom_id_0.json (removed)
  • test_classroom_id_0.pb (removed)
  • test_classroom_id_1.json (removed)
  • test_classroom_id_1.pb (removed)
  • test_classroom_id_2.json (removed)
  • And 1 other

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)

Base APK

APK file size: 16 MiB (old), 15 MiB (new), 96 KiB (Removed)
APK download size (estimated): 14 MiB (old), 14 MiB (new), 88 KiB (Removed)
Method count: 226905 (old), 221791 (new), 5114 (Removed)
Lesson assets: 111 (old), 105 (new), 6 (Removed)

Configuration hdpi

APK file size: 59 KiB (old), 59 KiB (new), 0 bytes (No change)
APK download size (estimated): 23 KiB (old), 23 KiB (new), 0 bytes (No change)

Configuration ldpi

APK file size: 56 KiB (old), 56 KiB (new), 0 bytes (No change)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 53 KiB (old), 53 KiB (new), 0 bytes (No change)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 102 KiB (old), 102 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

Configuration xhdpi

APK file size: 67 KiB (old), 67 KiB (new), 0 bytes (No change)
APK download size (estimated): 28 KiB (old), 28 KiB (new), 0 bytes (No change)

Configuration xxhdpi

APK file size: 76 KiB (old), 76 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

Configuration xxxhdpi

APK file size: 79 KiB (old), 79 KiB (new), 0 bytes (No change)
APK download size (estimated): 39 KiB (old), 39 KiB (new), 0 bytes (No change)

Alpha

Expand to see flavor specifics

Universal APK

APK file size: 10 MiB (old), 10 MiB (new), 37 KiB (Removed)

APK download size (estimated): 9183 KiB (old), 9150 KiB (new), 33 KiB (Removed)

Method count: 101341 (old), 99436 (new), 1905 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5504 (old), 5504 (new), 0 (No change)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 879 (old), 879 (new), 0 (No change)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 767 (old), 767 (new), 0 (No change)
  • Dimen: 722 (old), 722 (new), 0 (No change)
  • Drawable: 333 (old), 333 (new), 0 (No change)
  • Id: 1148 (old), 1148 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 327 (old), 327 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 736 (old), 736 (new), 0 (No change)
  • Style: 457 (old), 457 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 111 (old), 105 (new), 6 (Removed):

  • test_classroom_id_0.json (removed)
  • test_classroom_id_0.pb (removed)
  • test_classroom_id_1.json (removed)
  • test_classroom_id_1.pb (removed)
  • test_classroom_id_2.json (removed)
  • And 1 other

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)

Base APK

APK file size: 9 MiB (old), 9 MiB (new), 37 KiB (Removed)
APK download size (estimated): 9063 KiB (old), 9030 KiB (new), 33 KiB (Removed)
Method count: 101341 (old), 99436 (new), 1905 (Removed)
Lesson assets: 111 (old), 105 (new), 6 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 0 bytes (No change)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 90 KiB (old), 90 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (No change)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 0 bytes (No change)

Configuration xxhdpi

APK file size: 69 KiB (old), 69 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (No change)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

Beta

Expand to see flavor specifics

Universal APK

APK file size: 10 MiB (old), 9 MiB (new), 37 KiB (Removed)

APK download size (estimated): 9168 KiB (old), 9135 KiB (new), 32 KiB (Removed)

Method count: 101341 (old), 99436 (new), 1905 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5504 (old), 5504 (new), 0 (No change)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 879 (old), 879 (new), 0 (No change)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 767 (old), 767 (new), 0 (No change)
  • Dimen: 722 (old), 722 (new), 0 (No change)
  • Drawable: 333 (old), 333 (new), 0 (No change)
  • Id: 1148 (old), 1148 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 327 (old), 327 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 736 (old), 736 (new), 0 (No change)
  • Style: 457 (old), 457 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 111 (old), 105 (new), 6 (Removed):

  • test_classroom_id_0.json (removed)
  • test_classroom_id_0.pb (removed)
  • test_classroom_id_1.json (removed)
  • test_classroom_id_1.pb (removed)
  • test_classroom_id_2.json (removed)
  • And 1 other

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)

Base APK

APK file size: 9 MiB (old), 9 MiB (new), 37 KiB (Removed)
APK download size (estimated): 9052 KiB (old), 9019 KiB (new), 32 KiB (Removed)
Method count: 101341 (old), 99436 (new), 1905 (Removed)
Lesson assets: 111 (old), 105 (new), 6 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 0 bytes (No change)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 90 KiB (old), 90 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (No change)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 0 bytes (No change)

Configuration xxhdpi

APK file size: 69 KiB (old), 69 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (No change)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

Ga

Expand to see flavor specifics

Universal APK

APK file size: 10 MiB (old), 9 MiB (new), 37 KiB (Removed)

APK download size (estimated): 9168 KiB (old), 9136 KiB (new), 32 KiB (Removed)

Method count: 101341 (old), 99436 (new), 1905 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5504 (old), 5504 (new), 0 (No change)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 879 (old), 879 (new), 0 (No change)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 767 (old), 767 (new), 0 (No change)
  • Dimen: 722 (old), 722 (new), 0 (No change)
  • Drawable: 333 (old), 333 (new), 0 (No change)
  • Id: 1148 (old), 1148 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 327 (old), 327 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 736 (old), 736 (new), 0 (No change)
  • Style: 457 (old), 457 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 111 (old), 105 (new), 6 (Removed):

  • test_classroom_id_0.json (removed)
  • test_classroom_id_0.pb (removed)
  • test_classroom_id_1.json (removed)
  • test_classroom_id_1.pb (removed)
  • test_classroom_id_2.json (removed)
  • And 1 other

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)

Base APK

APK file size: 9 MiB (old), 9 MiB (new), 37 KiB (Removed)
APK download size (estimated): 9052 KiB (old), 9020 KiB (new), 32 KiB (Removed)
Method count: 101341 (old), 99436 (new), 1905 (Removed)
Lesson assets: 111 (old), 105 (new), 6 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 0 bytes (No change)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 90 KiB (old), 90 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (No change)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 0 bytes (No change)

Configuration xxhdpi

APK file size: 69 KiB (old), 69 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (No change)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

Copy link
Member

@BenHenning BenHenning left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Rd4dev! Just had a couple of comments.

Note that I'm approving the PR, but please have @adhiamboperes verify the last couple comments before merging (just to make sure it's reviewed by someone).

@BenHenning BenHenning assigned Rd4dev and unassigned BenHenning Jun 26, 2024
@BenHenning
Copy link
Member

BenHenning commented Jun 26, 2024

Also well done on getting this branched onto develop correctly @Rd4dev. :)

Copy link

oppiabot bot commented Jun 26, 2024

Assigning @adhiamboperes for code owner reviews. Thanks!

@Rd4dev
Copy link
Collaborator Author

Rd4dev commented Jun 26, 2024

Thank you so much @BenHenning, will make sure to request @adhiamboperes on any further progress.

Copy link
Collaborator

@adhiamboperes adhiamboperes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Rd4dev! I have take a full pass, and resolved the remaining comments. LGTM!

@adhiamboperes
Copy link
Collaborator

Synced with develop and enabling auto-merge.

@adhiamboperes adhiamboperes enabled auto-merge (squash) June 26, 2024 13:24
@adhiamboperes adhiamboperes removed their assignment Jun 26, 2024
@adhiamboperes adhiamboperes merged commit 4aa5337 into develop Jun 26, 2024
25 checks passed
@adhiamboperes adhiamboperes deleted the code_coverage_using_filename branch June 26, 2024 13:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants