From 621e0e76b7364ceb9b8796aa9472158f6f355141 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 12 Jun 2020 10:34:11 +0200 Subject: [PATCH 1/2] build: move nav-list size-test into dedicated `list` folder For consistency with other size-tests's we are going to add, we should move the nav-list one into a folder that is dedicated for list size tests. --- goldens/size-test.json | 2 +- integration/size-test/material/{ => list}/BUILD.bazel | 4 ++-- integration/size-test/material/{list.ts => list/nav-list.ts} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename integration/size-test/material/{ => list}/BUILD.bazel (68%) rename integration/size-test/material/{list.ts => list/nav-list.ts} (100%) diff --git a/goldens/size-test.json b/goldens/size-test.json index f3976441fb24..095f26fe6a95 100644 --- a/goldens/size-test.json +++ b/goldens/size-test.json @@ -1,3 +1,3 @@ { - "material/list": 153231 + "material/list/nav-list": 153231 } diff --git a/integration/size-test/material/BUILD.bazel b/integration/size-test/material/list/BUILD.bazel similarity index 68% rename from integration/size-test/material/BUILD.bazel rename to integration/size-test/material/list/BUILD.bazel index 487138c903ab..c349ba35a86c 100644 --- a/integration/size-test/material/BUILD.bazel +++ b/integration/size-test/material/list/BUILD.bazel @@ -1,7 +1,7 @@ load("//integration/size-test:index.bzl", "size_test") size_test( - name = "list", - file = "list.ts", + name = "nav-list", + file = "nav-list.ts", deps = ["//src/material/list"], ) diff --git a/integration/size-test/material/list.ts b/integration/size-test/material/list/nav-list.ts similarity index 100% rename from integration/size-test/material/list.ts rename to integration/size-test/material/list/nav-list.ts From b997d45a60b6897142da6204efd9ec942f5dac71 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 12 Jun 2020 10:45:20 +0200 Subject: [PATCH 2/2] 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. --- .github/CODEOWNERS | 2 +- goldens/BUILD.bazel | 2 +- goldens/size-test.json | 3 --- goldens/size-test.yaml | 1 + integration/size-test/BUILD.bazel | 2 ++ integration/size-test/check-size.ts | 7 ++++--- integration/size-test/index.bzl | 4 ++-- package.json | 3 ++- yarn.lock | 12 ++++++++++++ 9 files changed, 25 insertions(+), 11 deletions(-) delete mode 100644 goldens/size-test.json create mode 100644 goldens/size-test.yaml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2d21c9860140..35eb66e75ca0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -321,7 +321,7 @@ /.github/ISSUE_TEMPLATE/** @andrewseguin @jelbourn /.vscode/** @angular/dev-infra-components @mmalerba /.ng-dev/** @angular/dev-infra-components -/goldens/size-test.json @jelbourn @mmalerba @crisbeto +/goldens/size-test.yml @jelbourn @mmalerba @crisbeto /goldens/** @angular/dev-infra-components /src/* @angular/dev-infra-components /* @angular/dev-infra-components diff --git a/goldens/BUILD.bazel b/goldens/BUILD.bazel index 9dc126ec82a8..e8a75f0d5692 100644 --- a/goldens/BUILD.bazel +++ b/goldens/BUILD.bazel @@ -1,3 +1,3 @@ exports_files([ - "size-test.json", + "size-test.yaml", ]) diff --git a/goldens/size-test.json b/goldens/size-test.json deleted file mode 100644 index 095f26fe6a95..000000000000 --- a/goldens/size-test.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "material/list/nav-list": 153231 -} diff --git a/goldens/size-test.yaml b/goldens/size-test.yaml new file mode 100644 index 000000000000..6a8a0e25311d --- /dev/null +++ b/goldens/size-test.yaml @@ -0,0 +1 @@ +material/list/nav-list: 153231 diff --git a/integration/size-test/BUILD.bazel b/integration/size-test/BUILD.bazel index bbeaa8dc256a..0c197687818f 100644 --- a/integration/size-test/BUILD.bazel +++ b/integration/size-test/BUILD.bazel @@ -12,6 +12,8 @@ ts_library( srcs = ["check-size.ts"], deps = [ "@npm//@types/node", + "@npm//@types/yaml", "@npm//chalk", + "@npm//yaml", ], ) diff --git a/integration/size-test/check-size.ts b/integration/size-test/check-size.ts index 80bd9ccfc618..c783ba8f7af9 100644 --- a/integration/size-test/check-size.ts +++ b/integration/size-test/check-size.ts @@ -6,6 +6,7 @@ import chalk from 'chalk'; import {readFileSync, statSync, writeFileSync} from 'fs'; +import {parse, stringify} from 'yaml'; /** * Absolute byte deviation from the expected value that is allowed. If the @@ -27,16 +28,16 @@ const PERCENTAGE_DEVIATION_THRESHOLD = 1; */ const [testId, testFileRootpath, isApprove] = process.argv.slice(2); const testFilePath = require.resolve(`angular_material/${testFileRootpath}`); -const goldenFilePath = require.resolve('../../goldens/size-test.json'); +const goldenFilePath = require.resolve('../../goldens/size-test.yaml'); -const golden = JSON.parse(readFileSync(goldenFilePath, 'utf8')); +const golden = parse(readFileSync(goldenFilePath, 'utf8')) || {}; const fileStat = statSync(testFilePath); const actualSize = fileStat.size; // If in approve mode, update the golden to reflect the new size. if (isApprove) { golden[testId] = actualSize; - writeFileSync(goldenFilePath, JSON.stringify(golden, null, 2)); + writeFileSync(goldenFilePath, stringify(golden)); console.info(chalk.green(`Approved golden size for "${testId}"`)); process.exit(0); } diff --git a/integration/size-test/index.bzl b/integration/size-test/index.bzl index 65b8b27831cb..0564e3069a75 100644 --- a/integration/size-test/index.bzl +++ b/integration/size-test/index.bzl @@ -53,7 +53,7 @@ def size_test(name, file, deps): nodejs_test( name = name, data = [ - "//goldens:size-test.json", + "//goldens:size-test.yaml", "//integration/size-test:check-size", ":%s_bundle_min" % name, ], @@ -65,7 +65,7 @@ def size_test(name, file, deps): name = "%s.approve" % name, testonly = True, data = [ - "//goldens:size-test.json", + "//goldens:size-test.yaml", "//integration/size-test:check-size", ":%s_bundle_min" % name, ], diff --git a/package.json b/package.json index 74af3f4c1ce0..08101e91e64d 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "@types/semver": "^6.2.0", "@types/send": "^0.14.5", "@types/stylelint": "^9.10.1", + "@types/yaml": "^1.9.7", "autoprefixer": "^6.7.6", "axe-webdriverjs": "^1.1.1", "browser-sync": "^2.26.7", @@ -167,7 +168,7 @@ "typescript-3.7": "npm:typescript@~3.7.0", "typescript-3.8": "npm:typescript@~3.8.0", "vrsource-tslint-rules": "5.1.1", - "yaml": "^1.7.2", + "yaml": "^1.10.0", "yargs": "15.3.0" }, "resolutions": { diff --git a/yarn.lock b/yarn.lock index 0907873848fc..3e39f76f4086 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1643,6 +1643,13 @@ dependencies: "@types/node" "*" +"@types/yaml@^1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@types/yaml/-/yaml-1.9.7.tgz#2331f36e0aac91311a63d33eb026c21687729679" + integrity sha512-8WMXRDD1D+wCohjfslHDgICd2JtMATZU8CkhH8LVJqcJs6dyYj5TGptzP8wApbmEullGBSsCEzzap73DQ1HJaA== + dependencies: + yaml "*" + "@types/youtube@^0.0.38": version "0.0.38" resolved "https://registry.yarnpkg.com/@types/youtube/-/youtube-0.0.38.tgz#04aa5efa61f4d52e9cf682575a9dfed58f31e8c1" @@ -12759,6 +12766,11 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yaml@*, yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + yaml@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2"