Skip to content

Commit d5dc38b

Browse files
committed
chore(provisioner/terraform): minimize testdata diff
It was hard to deduce whether or not changes in our terraform testdata are relevant or not, so we now have a rudimentary filter for randomly generated values that aren't relevant for the testdata.
1 parent 30179ae commit d5dc38b

File tree

38 files changed

+215
-1
lines changed

38 files changed

+215
-1
lines changed

provisioner/terraform/testdata/calling-module/calling-module.tfplan.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/calling-module/calling-module.tfstate.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/chaining-resources/chaining-resources.tfplan.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/chaining-resources/chaining-resources.tfstate.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfplan.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/conflicting-resources/conflicting-resources.tfstate.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfplan.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/display-apps-disabled/display-apps-disabled.tfstate.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/display-apps/display-apps.tfplan.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/display-apps/display-apps.tfstate.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfplan.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/external-auth-providers/external-auth-providers.tfstate.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/generate.sh

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,43 @@ generate() {
2323
fi
2424
}
2525

26+
minimize_diff() {
27+
for f in *.tf*.json; do
28+
declare -A deleted=()
29+
declare -a sed_args=()
30+
while read -r line; do
31+
# Deleted line (previous value).
32+
if [[ $line = -\ * ]]; then
33+
key="${line#*\"}"
34+
key="${key%%\"*}"
35+
value="${line#*: }"
36+
value="${value#*\"}"
37+
value="${value%\"*}"
38+
declare deleted["$key"]="$value"
39+
# Added line (new value).
40+
elif [[ $line = +\ * ]]; then
41+
key="${line#*\"}"
42+
key="${key%%\"*}"
43+
value="${line#*: }"
44+
value="${value#*\"}"
45+
value="${value%\"*}"
46+
# Matched key, restore the value.
47+
if [[ -v deleted["$key"] ]]; then
48+
sed_args+=(-e "s|${value}|${deleted["$key"]}|g")
49+
unset deleted["$key"]
50+
fi
51+
fi
52+
if [[ ${#sed_args[@]} -gt 0 ]]; then
53+
sed -i '' "${sed_args[@]}" "$f"
54+
fi
55+
done < <(
56+
# Filter out known keys with autogenerated values.
57+
git diff -- "$f" |
58+
grep -E "\"(terraform_version|id|agent_id|resource_id|token|random|timestamp)\":"
59+
)
60+
done
61+
}
62+
2663
run() {
2764
d="$1"
2865
cd "$d"
@@ -51,6 +88,10 @@ run() {
5188
echo "== Error generating test data for: $name"
5289
return 1
5390
fi
91+
if ((minimize)); then
92+
echo "== Minimizing diffs for: $name"
93+
minimize_diff
94+
fi
5495
echo "== Done generating test data for: $name"
5596
exit 0
5697
}
@@ -60,6 +101,11 @@ if [[ " $* " == *" --help "* || " $* " == *" -h "* ]]; then
60101
exit 0
61102
fi
62103

104+
minimize=1
105+
if [[ " $* " == *" --no-minimize "* ]]; then
106+
minimize=0
107+
fi
108+
63109
declare -a jobs=()
64110
if [[ $# -gt 0 ]]; then
65111
for d in "$@"; do

0 commit comments

Comments
 (0)