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 agg metrics, don't use "for .. in .." on JS arrays #1167

Merged
merged 1 commit into from
Aug 24, 2024

Conversation

JGreenlee
Copy link
Collaborator

@JGreenlee JGreenlee commented Aug 19, 2024

Agg metrics were broken because we iterated over an array using "for .. in ..", which has unexpected consequences.

"for .. in .." iterates over all the keys in an object. Arrays are a type of object, where the elements of the array are keyed by index. But they can have other properties too (like their methods) so when you use "for .. in .." you get everything.

In general arrays should be iterated with "for .. of .." or ".forEach", but in this specific case I noticed we are basically just copying an array with some values substituted, so I opted for ".map".

Note: There is repeated code across these two files that should obviously be refactored later

Agg metrics were broken because we iterated over an array using "for .. in ..", which has unexpected consequences.

"for .. in .." iterates over all the keys in an object. Arrays are a type of object, where the elements of the array are keyed by index.
But they can have other properties too (like their methods) so when you use "for .. in .." you get everything.

In general arrays should be iterated with "for .. of .." or ".forEach", but in this specific case I noticed we are basically just copying an array with some values substituted, so I opted for ".map".

Note: There is repeated code across these two files that should obviously be refactored later, but for now I just want to get this bug fixed.
Copy link

codecov bot commented Aug 19, 2024

Codecov Report

Attention: Patch coverage is 0% with 8 lines in your changes missing coverage. Please review.

Project coverage is 30.10%. Comparing base (52b0fb9) to head (e6aea4e).
Report is 3 commits behind head on master.

Files Patch % Lines
www/js/metrics/CarbonFootprintCard.tsx 0.00% 4 Missing ⚠️
www/js/metrics/CarbonTextCard.tsx 0.00% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1167      +/-   ##
==========================================
+ Coverage   30.09%   30.10%   +0.01%     
==========================================
  Files         118      118              
  Lines        5203     5201       -2     
  Branches     1113     1162      +49     
==========================================
  Hits         1566     1566              
+ Misses       3635     3631       -4     
- Partials        2        4       +2     
Flag Coverage Δ
unit 30.10% <0.00%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Coverage Δ
www/js/metrics/CarbonFootprintCard.tsx 0.00% <0.00%> (ø)
www/js/metrics/CarbonTextCard.tsx 0.00% <0.00%> (ø)

... and 2 files with indirect coverage changes

@JGreenlee
Copy link
Collaborator Author

JGreenlee commented Aug 24, 2024

By the way, the reason this issue emerged out of the blue was a bug in Transcrypt.

Although using "for .. in .." on an array is less than ideal, the code was working fine like that for several releases – until we added e-mission-common which includes Transcrypt.

I submitted a PR to Transcrypt that would address this:
TranscryptOrg/Transcrypt#879

@shankari shankari merged commit 1f1731d into e-mission:master Aug 24, 2024
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

2 participants