pulumi/pkg/backend/display
Justin Van Patten 82c546d873
Fix mangled diffs of strings containing url-encoded chars (#16147)
Fix mangled diffs of strings containing url-encoded chars

Currently, modifying a stack output that contains url-encoded characters
can lead to it showing the value as `"!(NOVERB)"` or `"!(MISSING)"`.

For example, changing a stack output `path` from `"%2F"` to `"%2f"`
shows the diff as:

```
Outputs:
  ~ path: "%!(NOVERB)F" => "%!(NOVERB)f"
```

The expected diff output should be:

```
Outputs:
  ~ path: "%2F" => "%2f"
```

This is happening because the code that emits parts of the diff is
expecting a format string. Go is trying to parse the `%` in the value as
a format string and is having problems parsing it.

The fix is to emit the parts of the diff verbatim, so it isn't treated
as a format string.

Fixes #16123

Note: I've done an audit of the other calls to `write` in
`object_diff.go` and all the other call sites are passing actual format
strings or constants. This was the only case where we were passing user
input as a format string.
2024-05-08 08:23:40 +00:00
..
internal/terminal Add vim shortcuts and Home and End Keys to terminal (#15418) 2024-02-24 08:31:36 +00:00
testdata Fix mangled diffs of strings containing url-encoded chars (#16147) 2024-05-08 08:23:40 +00:00
diff.go Never show property diffs for OpSame (#16024) 2024-05-02 12:28:43 +00:00
diff_test.go Fix JSON/YAML diffs (#15171) 2024-01-18 14:19:54 +00:00
display.go display: only hide replacement steps in diff (#16065) 2024-04-26 14:54:21 +00:00
doc.go Document Go packages (#6009) 2021-01-11 11:07:59 -07:00
events.go be consistent in the way we round seconds (#16070) 2024-04-29 08:46:36 +00:00
events_test.go Don't omit an empty detailedDiff (#15213) 2024-01-23 00:00:14 +00:00
json.go Lift context parameter to SerializeDeployment/Resource/Operations/Properties (#15929) 2024-04-15 07:45:46 +00:00
jsonmessage.go Decouple persist and display events (#15709) 2024-03-18 16:53:13 +00:00
object_diff.go Fix mangled diffs of strings containing url-encoded chars (#16147) 2024-05-08 08:23:40 +00:00
object_diff_test.go Fix a panic in diff display when parsing YAML strings (#14710) 2023-12-02 01:24:13 +00:00
options.go Add `--suppress-progresss` flag to CLI (#14690) 2024-02-05 11:48:10 +00:00
progress.go Revert "The `--expect-no-changes` flag checks for output diffs" (#16131) 2024-05-06 17:34:24 +00:00
progress_test.go Make `engine.NewEvent` type safe (#14590) 2023-11-16 16:54:03 +00:00
query.go Add `--suppress-progresss` flag to CLI (#14690) 2024-02-05 11:48:10 +00:00
rows.go Never show property diffs for OpSame (#16024) 2024-05-02 12:28:43 +00:00
sigint_unix.go [cli] Reimplement the interactive renderer 2022-11-07 22:02:44 -08:00
sigint_windows.go [cli] Reimplement the interactive renderer 2022-11-07 22:02:44 -08:00
tableutil.go [color] Use graphemes to measure strings. 2022-11-09 08:23:00 -08:00
tree.go Decouple persist and display events (#15709) 2024-03-18 16:53:13 +00:00
tree_test.go fix deadlock in stopwatch mutex (#16129) 2024-05-06 16:28:18 +00:00
watch.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00