From 5dda69e61587b3a991116d4b322fe6562b330877 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 18 Feb 2019 09:22:43 +0100 Subject: [PATCH] add lint step to avoid non-npm dependencies in graph fix azure pipeline windows script (set -e doesn't exist on windows) --- _SETUP.md | 3 ++- azure-pipelines.yml | 5 +---- package.json | 5 +++-- test/Dependencies.lint.js | 27 +++++++++++++++++++++++++++ yarn.lock | 25 ++++++++++++++++++++++--- 5 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 test/Dependencies.lint.js diff --git a/_SETUP.md b/_SETUP.md index ce57ab775..654dbef08 100644 --- a/_SETUP.md +++ b/_SETUP.md @@ -68,8 +68,9 @@ yarn pretty This performs linting on: * eslint (code-lint script) -* schema (schema-lint script) +* schema + dependencies (jest-lint script) * types (type-lint script) +* format + generated files (special-lint script) ```bash yarn lint diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 66d16a81b..4465f924f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -72,7 +72,7 @@ jobs: set -e export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" yarn -s run code-lint --format junit > junit.xml - yarn schema-lint + yarn jest-lint yarn type-lint yarn special-lint displayName: "Run linting" @@ -205,18 +205,15 @@ jobs: npm install --global yarn displayName: "Install Yarn" - script: | - set -e node -v yarn -v displayName: "Print versions" - script: | - set -e yarn --frozen-lockfile yarn link --frozen-lockfile || true yarn link webpack --frozen-lockfile displayName: "Install dependencies" - script: | - set -e yarn cover:init && yarn cover:integration --ci --maxWorkers=2 --reporters=jest-junit displayName: "Run tests with coverage" - task: PublishTestResults@2 diff --git a/package.json b/package.json index 558116b79..6ba93d399 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@types/node": "^10.12.21", "@types/tapable": "^1.0.1", "@types/webpack-sources": "^0.1.4", + "@yarnpkg/lockfile": "^1.1.0", "benchmark": "^2.1.1", "bundle-loader": "~0.5.0", "coffee-loader": "^0.9.0", @@ -119,14 +120,14 @@ "build:examples": "cd examples && node buildAll.js", "pretest": "yarn lint", "prelint": "yarn setup", - "lint": "yarn code-lint && yarn schema-lint && yarn type-lint && yarn special-lint", + "lint": "yarn code-lint && yarn jest-lint && yarn type-lint && yarn special-lint", "code-lint": "eslint --cache \"{setup,lib,bin,hot,buildin,benchmark,tooling,schemas}/**/*.js\" \"test/*.js\" \"test/{configCases,watchCases,statsCases,hotCases}/**/webpack.config.js\" \"examples/**/webpack.config.js\"", "type-lint": "tsc --pretty", "special-lint": "node tooling/inherit-types && node tooling/format-schemas && node tooling/compile-to-definitions", "special-lint-fix": "node tooling/inherit-types --write --override && node tooling/format-schemas --write && node tooling/compile-to-definitions --write", "fix": "yarn code-lint --fix && yarn special-lint-fix", "pretty": "prettier --loglevel warn --write \"*.{ts,js,json,yml,yaml}\" \"{setup,lib,bin,hot,buildin,benchmark,tooling,schemas}/**/*.{js,json}\" \"test/*.js\" \"test/{configCases,watchCases,statsCases,hotCases}/**/webpack.config.js\" \"examples/**/webpack.config.js\"", - "schema-lint": "node --max-old-space-size=4096 node_modules/jest-cli/bin/jest --testMatch \"/test/*.lint.js\" --no-verbose", + "jest-lint": "node --max-old-space-size=4096 node_modules/jest-cli/bin/jest --testMatch \"/test/*.lint.js\" --no-verbose", "benchmark": "node --max-old-space-size=4096 --trace-deprecation node_modules/jest-cli/bin/jest --testMatch \"/test/*.benchmark.js\" --runInBand", "cover": "yarn cover:init && yarn cover:all && yarn cover:report", "cover:init": "rimraf coverage", diff --git a/test/Dependencies.lint.js b/test/Dependencies.lint.js new file mode 100644 index 000000000..def4fe6dd --- /dev/null +++ b/test/Dependencies.lint.js @@ -0,0 +1,27 @@ +const fs = require("fs"); +const path = require("path"); +const lockfile = require("@yarnpkg/lockfile"); + +const file = fs.readFileSync(path.resolve(__dirname, "../yarn.lock"), "utf-8"); +const result = lockfile.parse(file); + +describe("Dependencies", () => { + it("should parse fine", () => { + expect(result.type).toBe("success"); + }); + + if (result.type === "success") { + const content = result.object; + for (const dep of Object.keys(content)) { + describe(dep, () => { + const info = content[dep]; + it("should resolve to a npm package", () => { + expect(info.resolved).toMatch(/^https:\/\/registry\.yarnpkg\.com\//); + }); + it("should have a integrity hash", () => { + expect(info.integrity).toMatch(/^(sha1|sha512)-/); + }); + }); + } + } +}); diff --git a/yarn.lock b/yarn.lock index 23c879d1b..c8c7151bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -383,6 +383,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -521,6 +526,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== +ansi-escapes@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= + ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -4096,7 +4106,8 @@ listr-silent-renderer@^1.1.1: listr-update-renderer@^0.4.0: version "0.4.0" - resolved "https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update#06073fa93166277607a7814f4e1f83960081414c" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" + integrity sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc= dependencies: chalk "^1.1.3" cli-truncate "^0.2.1" @@ -4104,7 +4115,7 @@ listr-update-renderer@^0.4.0: figures "^1.7.0" indent-string "^3.0.0" log-symbols "^1.0.2" - log-update "^2.3.0" + log-update "^1.0.2" strip-ansi "^3.0.1" listr-verbose-renderer@^0.4.0: @@ -4203,6 +4214,14 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE= + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" @@ -4839,7 +4858,7 @@ once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: onetime@^1.0.0: version "1.1.0" - resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= onetime@^2.0.0: