Commit c884607
authored
Bug 1997236 - Don't try to re-parse JSON in util.taskcluster.get_artifact (#846)
The previous code was only checking if the returned response from the
taskcluster API was a dict to verify if it had been parsed or not. That
works well until the JSON file we're getting contains something like a
list in which case we skip the first condition, end up with a parsed
response in `if path.endswith(".json")` and boom `AttributeError: 'list'
object has no attribute 'json'`.
Since we already rely on the response type being `requests.Request`, I
changed the logic to be:
- If we receive a dict, it might be either the parsed artifact content,
or taskcluster giving us `{"response": requests.Response}` because it
was unable to parse it.
- In the case where it's taskcluster's (detected by checking if
"response" is in the dict and if it has the right type), peel it off,
response is now the `Response` object and we can read from it.
- At this point we have 2 choices again, either response is a
`request.Response` that we have to read, or anything else. If it is
anything else then it's already been parsed by taskcluster so we just
return it as is.
- Continue with the previous logic, try to parse the file based on the
extension. I left the JSON case in there even though we should not be
hitting it because it will raise on invalid JSON, which was the case
previously too. Taskcluster masks JSON failures by returning the
response object instead.1 parent 773f5d2 commit c884607
File tree
2 files changed
+22
-9
lines changed- src/taskgraph/util
- test
2 files changed
+22
-9
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
85 | 87 | | |
86 | 88 | | |
87 | 89 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
127 | 138 | | |
128 | 139 | | |
129 | 140 | | |
| |||
0 commit comments