Skip to content

Commit 13c1fa0

Browse files
committed
build: switch to yaml file for size test golden
Switches the size-test golden from a JSON file to a Yaml file. The motivation is that JSON files quickly can result in merge conflicts. This is mostly because of trailing commas that need to be added when new entries are added to the size-test golden. This should be improved with YAML where a new entry can be added without having to change existing ones.
1 parent e7c9fd0 commit 13c1fa0

File tree

9 files changed

+25
-11
lines changed

9 files changed

+25
-11
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,5 +320,5 @@
320320
/.vscode/** @angular/dev-infra-components @mmalerba
321321
/src/* @jelbourn
322322
/goldens/ts-circular-deps.json @angular/dev-infra-components
323-
/goldens/size-test.json @jelbourn @mmalerba @crisbeto
323+
/goldens/size-test.yaml @jelbourn @mmalerba @crisbeto
324324
/goldens/* @angular/dev-infra-components

goldens/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
exports_files([
2-
"size-test.json",
2+
"size-test.yaml",
33
])

goldens/size-test.json

Lines changed: 0 additions & 3 deletions
This file was deleted.

goldens/size-test.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
material/list/nav-list: 216089

integration/size-test/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ ts_library(
1212
srcs = ["check-size.ts"],
1313
deps = [
1414
"@npm//@types/node",
15+
"@npm//@types/yaml",
1516
"@npm//chalk",
17+
"@npm//yaml",
1618
],
1719
)

integration/size-test/check-size.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import chalk from 'chalk';
88
import {readFileSync, statSync, writeFileSync} from 'fs';
9+
import {parse, stringify} from 'yaml';
910

1011
/**
1112
* Absolute byte deviation from the expected value that is allowed. If the
@@ -27,16 +28,16 @@ const PERCENTAGE_DEVIATION_THRESHOLD = 1;
2728
*/
2829
const [testId, testFileRootpath, isApprove] = process.argv.slice(2);
2930
const testFilePath = require.resolve(`angular_material/${testFileRootpath}`);
30-
const goldenFilePath = require.resolve('../../goldens/size-test.json');
31+
const goldenFilePath = require.resolve('../../goldens/size-test.yaml');
3132

32-
const golden = JSON.parse(readFileSync(goldenFilePath, 'utf8'));
33+
const golden = parse(readFileSync(goldenFilePath, 'utf8')) || {};
3334
const fileStat = statSync(testFilePath);
3435
const actualSize = fileStat.size;
3536

3637
// If in approve mode, update the golden to reflect the new size.
3738
if (isApprove) {
3839
golden[testId] = actualSize;
39-
writeFileSync(goldenFilePath, JSON.stringify(golden, null, 2));
40+
writeFileSync(goldenFilePath, stringify(golden));
4041
console.info(chalk.green(`Approved golden size for "${testId}"`));
4142
process.exit(0);
4243
}

integration/size-test/index.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def size_test(name, file, deps):
5353
nodejs_test(
5454
name = name,
5555
data = [
56-
"//goldens:size-test.json",
56+
"//goldens:size-test.yaml",
5757
"//integration/size-test:check-size",
5858
":%s_bundle_min" % name,
5959
],
@@ -65,7 +65,7 @@ def size_test(name, file, deps):
6565
name = "%s.approve" % name,
6666
testonly = True,
6767
data = [
68-
"//goldens:size-test.json",
68+
"//goldens:size-test.yaml",
6969
"//integration/size-test:check-size",
7070
":%s_bundle_min" % name,
7171
],

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
"@types/semver": "^6.2.0",
108108
"@types/send": "^0.14.5",
109109
"@types/stylelint": "^9.10.1",
110+
"@types/yaml": "^1.9.7",
110111
"autoprefixer": "^6.7.6",
111112
"axe-webdriverjs": "^1.1.1",
112113
"browser-sync": "^2.26.7",
@@ -172,7 +173,7 @@
172173
"typescript-3.7": "npm:typescript@~3.7.0",
173174
"typescript-3.8": "npm:typescript@~3.8.0",
174175
"vrsource-tslint-rules": "5.1.1",
175-
"yaml": "^1.7.2",
176+
"yaml": "^1.10.0",
176177
"yargs": "15.3.0"
177178
},
178179
"resolutions": {

yarn.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1643,6 +1643,13 @@
16431643
dependencies:
16441644
"@types/node" "*"
16451645

1646+
"@types/yaml@^1.9.7":
1647+
version "1.9.7"
1648+
resolved "https://registry.yarnpkg.com/@types/yaml/-/yaml-1.9.7.tgz#2331f36e0aac91311a63d33eb026c21687729679"
1649+
integrity sha512-8WMXRDD1D+wCohjfslHDgICd2JtMATZU8CkhH8LVJqcJs6dyYj5TGptzP8wApbmEullGBSsCEzzap73DQ1HJaA==
1650+
dependencies:
1651+
yaml "*"
1652+
16461653
"@types/youtube@^0.0.38":
16471654
version "0.0.38"
16481655
resolved "https://registry.yarnpkg.com/@types/youtube/-/youtube-0.0.38.tgz#04aa5efa61f4d52e9cf682575a9dfed58f31e8c1"
@@ -12768,6 +12775,11 @@ yallist@^3.0.0, yallist@^3.0.2:
1276812775
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
1276912776
integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
1277012777

12778+
yaml@*, yaml@^1.10.0:
12779+
version "1.10.0"
12780+
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
12781+
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
12782+
1277112783
yaml@^1.7.2:
1277212784
version "1.7.2"
1277312785
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2"

0 commit comments

Comments
 (0)