diff --git a/.ls-lint.yml b/.ls-lint.yml
new file mode 100644
index 0000000000000000000000000000000000000000..51bff0a157be52a9c47c48757aa968da2d81b80b
--- /dev/null
+++ b/.ls-lint.yml
@@ -0,0 +1,18 @@
+ls:
+  .js: kebab-case
+  .md: kebab-case
+  .ts: kebab-case
+  .d.ts: kebab-case
+  .spec.ts: kebab-case
+  .generated.ts: kebab-case
+
+ignore:
+  - .eslintrc.js
+  - .git
+  - .github/ISSUE_TEMPLATE
+  - .github/pull_request_template.md
+  - dist
+  - jest.config.js
+  - node_modules
+  - SECURITY.md
+  - test/e2e/node_modules
diff --git a/docs/development/issue_labeling.md b/docs/development/issue-labeling.md
similarity index 100%
rename from docs/development/issue_labeling.md
rename to docs/development/issue-labeling.md
diff --git a/lib/config/config/__fixtures__/withForce.js b/lib/config/config/__fixtures__/with-force.js
similarity index 100%
rename from lib/config/config/__fixtures__/withForce.js
rename to lib/config/config/__fixtures__/with-force.js
diff --git a/lib/config/index.spec.ts b/lib/config/index.spec.ts
index 0bf8d79853a8836d51c4ac40a20d2a6f6d98d0b2..3f438957c4114f3702df056bfcc75058571b933f 100644
--- a/lib/config/index.spec.ts
+++ b/lib/config/index.spec.ts
@@ -64,7 +64,7 @@ describe('config/index', () => {
     it('supports config.force', async () => {
       const configPath = upath.join(
         __dirname,
-        'config/__fixtures__/withForce.js'
+        'config/__fixtures__/with-force.js'
       );
       const env: NodeJS.ProcessEnv = {
         ...defaultEnv,
diff --git a/lib/config/presets/bitbucket-server/index.spec.ts b/lib/config/presets/bitbucket-server/index.spec.ts
index 35d0eb479cf31681a3077342782af4186f7b5ff6..0c709b84268aff9a9a3e2138380835324f75ae08 100644
--- a/lib/config/presets/bitbucket-server/index.spec.ts
+++ b/lib/config/presets/bitbucket-server/index.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../../test/httpMock';
+import * as httpMock from '../../../../test/http-mock';
 import { getName, mocked } from '../../../../test/util';
 import * as _hostRules from '../../../util/host-rules';
 import { PRESET_DEP_NOT_FOUND } from '../util';
diff --git a/lib/config/presets/gitea/index.spec.ts b/lib/config/presets/gitea/index.spec.ts
index 68b00de833ee374eeaec7a545e37d252a92b371b..d011bf401a9a3ecc42aff4f8fe2912e1aa299ebd 100644
--- a/lib/config/presets/gitea/index.spec.ts
+++ b/lib/config/presets/gitea/index.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../../test/httpMock';
+import * as httpMock from '../../../../test/http-mock';
 import { getName, mocked } from '../../../../test/util';
 import * as _hostRules from '../../../util/host-rules';
 import { setBaseUrl } from '../../../util/http/gitea';
diff --git a/lib/config/presets/github/index.spec.ts b/lib/config/presets/github/index.spec.ts
index 0e96fc28a8a18f3a16baa32a240a3841bed8e9b6..97b0a5922fcfc0ad242a26efbd7561bb05b8e4fb 100644
--- a/lib/config/presets/github/index.spec.ts
+++ b/lib/config/presets/github/index.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../../test/httpMock';
+import * as httpMock from '../../../../test/http-mock';
 import { getName, mocked } from '../../../../test/util';
 import * as _hostRules from '../../../util/host-rules';
 import { PRESET_NOT_FOUND } from '../util';
diff --git a/lib/config/presets/gitlab/index.spec.ts b/lib/config/presets/gitlab/index.spec.ts
index 2d48a835a59c22e161a272852b3ae414268b8e71..f2ec07c8b4a95ddae03e0d4d54980df8a01c3725 100644
--- a/lib/config/presets/gitlab/index.spec.ts
+++ b/lib/config/presets/gitlab/index.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../../test/httpMock';
+import * as httpMock from '../../../../test/http-mock';
 import { getName } from '../../../../test/util';
 import { EXTERNAL_HOST_ERROR } from '../../../constants/error-messages';
 import { PRESET_DEP_NOT_FOUND } from '../util';
diff --git a/lib/datasource/cdnjs/index.spec.ts b/lib/datasource/cdnjs/index.spec.ts
index 2ff92f7cbf5e6dc917e3342d6c480403879b78c8..eca564d8a17a7a52b2d3c0f826d8d0b6b3031c23 100644
--- a/lib/datasource/cdnjs/index.spec.ts
+++ b/lib/datasource/cdnjs/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { EXTERNAL_HOST_ERROR } from '../../constants/error-messages';
 import { id as datasource } from '.';
 
diff --git a/lib/datasource/crate/index.spec.ts b/lib/datasource/crate/index.spec.ts
index 4677e8d0252935089fe06a56c2707bc9b8717e16..2b83ea81e75d2a313b20220a65d870a2ebd0d05e 100644
--- a/lib/datasource/crate/index.spec.ts
+++ b/lib/datasource/crate/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 
 import { id as datasource, getIndexSuffix } from '.';
 
diff --git a/lib/datasource/dart/index.spec.ts b/lib/datasource/dart/index.spec.ts
index e5ca6aed26550169ca1a4d7cb50da4090c58f9c8..c85e08e2e2ca6ce6f600953f047943fe2d16ff5a 100644
--- a/lib/datasource/dart/index.spec.ts
+++ b/lib/datasource/dart/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource } from '.';
 
 const body: any = JSON.parse(
diff --git a/lib/datasource/docker/index.spec.ts b/lib/datasource/docker/index.spec.ts
index aeedd05c8042bc69080337f775b08792f239c2ba..bb024c5661233bd028bdeb5bcbf5ea2045476320 100644
--- a/lib/datasource/docker/index.spec.ts
+++ b/lib/datasource/docker/index.spec.ts
@@ -1,7 +1,7 @@
 import AWS from 'aws-sdk';
 import AWSMock from 'aws-sdk-mock';
 import { getDigest, getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName, mocked } from '../../../test/util';
 import { EXTERNAL_HOST_ERROR } from '../../constants/error-messages';
 import * as _hostRules from '../../util/host-rules';
diff --git a/lib/datasource/galaxy/index.spec.ts b/lib/datasource/galaxy/index.spec.ts
index b1da9813579cdc837377f6674471021ec87b6262..636823249216ee488ca61ea070010ed464c1502e 100644
--- a/lib/datasource/galaxy/index.spec.ts
+++ b/lib/datasource/galaxy/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 
 import { id as datasource } from '.';
 
diff --git a/lib/datasource/github-releases/index.spec.ts b/lib/datasource/github-releases/index.spec.ts
index 5d9836fca57ba9fdbd832817c299c1e929733929..e7a9bc6909c4c3773da8c6dce690ac86005c4076 100644
--- a/lib/datasource/github-releases/index.spec.ts
+++ b/lib/datasource/github-releases/index.spec.ts
@@ -1,5 +1,5 @@
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import * as _hostRules from '../../util/host-rules';
 import { id as datasource } from '.';
 import * as github from '.';
diff --git a/lib/datasource/github-tags/index.spec.ts b/lib/datasource/github-tags/index.spec.ts
index 2bb236b19cd5e33d2236abc1f5909a169e37777e..3353f3a0fe796b7d114f7c38d9c0793b25fd1028 100644
--- a/lib/datasource/github-tags/index.spec.ts
+++ b/lib/datasource/github-tags/index.spec.ts
@@ -1,5 +1,5 @@
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import * as _hostRules from '../../util/host-rules';
 import * as github from '.';
 
diff --git a/lib/datasource/gitlab-tags/index.spec.ts b/lib/datasource/gitlab-tags/index.spec.ts
index bff683fed81a21455528305aea8fddc85f991054..6760c2ec14c20425ff9e49f433dbe64be9f6b817 100644
--- a/lib/datasource/gitlab-tags/index.spec.ts
+++ b/lib/datasource/gitlab-tags/index.spec.ts
@@ -1,5 +1,5 @@
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource } from '.';
 
 describe('datasource/gitlab-tags', () => {
diff --git a/lib/datasource/go/index.spec.ts b/lib/datasource/go/index.spec.ts
index 0d1b16549f68a76a9b5a1aa7382981c54bb7e3ec..7bc5fbe512642fdc2ac89536b6bfaef634502441 100644
--- a/lib/datasource/go/index.spec.ts
+++ b/lib/datasource/go/index.spec.ts
@@ -1,5 +1,5 @@
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource, getDigest } from '.';
 
 const res1 = `<!DOCTYPE html>
diff --git a/lib/datasource/gradle-version/index.spec.ts b/lib/datasource/gradle-version/index.spec.ts
index 1c656f47195bf9c128cfdd0d4bcbf1457411b1b4..e980056a8ff070274b658bc80150dc46948cadde 100644
--- a/lib/datasource/gradle-version/index.spec.ts
+++ b/lib/datasource/gradle-version/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { GetPkgReleasesConfig, getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as versioning } from '../../versioning/gradle';
 import { id as datasource } from '.';
 
diff --git a/lib/datasource/helm/index.spec.ts b/lib/datasource/helm/index.spec.ts
index 3d44e16f55325f8773e00a680adbc1e031485ab4..f9f7e51ab96d30b3367d495dfbbe19f9ca732f5a 100644
--- a/lib/datasource/helm/index.spec.ts
+++ b/lib/datasource/helm/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource } from '.';
 
 // Truncated index.yaml file
diff --git a/lib/datasource/hex/index.spec.ts b/lib/datasource/hex/index.spec.ts
index a99fcc81896f2b5b3504a42e9b5b3af0534351b7..17dc31081de21d8ee8eb1fccced2395e17ac47b0 100644
--- a/lib/datasource/hex/index.spec.ts
+++ b/lib/datasource/hex/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { EXTERNAL_HOST_ERROR } from '../../constants/error-messages';
 import * as _hostRules from '../../util/host-rules';
 import { id as datasource } from '.';
diff --git a/lib/datasource/jenkins-plugins/index.spec.ts b/lib/datasource/jenkins-plugins/index.spec.ts
index fed3e2cca0b8f5a23caacedd01df4cc133f0c8f0..06e2fc824a32872fed5887d9e4381d1766f9b3d9 100644
--- a/lib/datasource/jenkins-plugins/index.spec.ts
+++ b/lib/datasource/jenkins-plugins/index.spec.ts
@@ -1,5 +1,5 @@
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import * as versioning from '../../versioning/docker';
 import jenkinsPluginsVersions from './__fixtures__/plugin-versions.json';
diff --git a/lib/datasource/npm/get.spec.ts b/lib/datasource/npm/get.spec.ts
index fb80cbfe541dd41aa84482b4c251ef209ecee61a..09a9fc0ae8ba1c09d156f295d40783f1b476e97d 100644
--- a/lib/datasource/npm/get.spec.ts
+++ b/lib/datasource/npm/get.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import { ExternalHostError } from '../../types/errors/external-host-error';
 import { getDependency, resetMemCache } from './get';
diff --git a/lib/datasource/nuget/index.spec.ts b/lib/datasource/nuget/index.spec.ts
index 9aa12854a06d5873761ae92ea22890273df64365..cca611cc4c96ec7958d45ae3ee8b7fd25a339953 100644
--- a/lib/datasource/nuget/index.spec.ts
+++ b/lib/datasource/nuget/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import * as _hostRules from '../../util/host-rules';
 import { id as versioning } from '../../versioning/nuget';
 import { id as datasource } from '.';
diff --git a/lib/datasource/orb/index.spec.ts b/lib/datasource/orb/index.spec.ts
index 028a0d104fcaa155ea2e6c669e77210abc05d1ef..83c6b6faba8ae1b5400d1093b767c6aff34d49a9 100644
--- a/lib/datasource/orb/index.spec.ts
+++ b/lib/datasource/orb/index.spec.ts
@@ -1,5 +1,5 @@
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource } from '.';
 
 const orbData = {
diff --git a/lib/datasource/packagist/index.spec.ts b/lib/datasource/packagist/index.spec.ts
index be411ebcca67444dc4ec1c4e81c10ade974cfb47..adf7b95abdc19274509742e85205f051be0659e3 100644
--- a/lib/datasource/packagist/index.spec.ts
+++ b/lib/datasource/packagist/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import * as _hostRules from '../../util/host-rules';
 import * as composerVersioning from '../../versioning/composer';
 import { id as versioning } from '../../versioning/loose';
diff --git a/lib/datasource/pod/index.spec.ts b/lib/datasource/pod/index.spec.ts
index 780f51d935b4d6e70ed5e6a121c371afead91a1d..26b37b27c3c0fd1891db27bc3ede4c8e7fdee1d5 100644
--- a/lib/datasource/pod/index.spec.ts
+++ b/lib/datasource/pod/index.spec.ts
@@ -1,5 +1,5 @@
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { EXTERNAL_HOST_ERROR } from '../../constants/error-messages';
 import * as rubyVersioning from '../../versioning/ruby';
 import * as pod from '.';
diff --git a/lib/datasource/pypi/index.spec.ts b/lib/datasource/pypi/index.spec.ts
index 0177a0760734d9606963e0a38a7f34a1b3ef9e9c..31e23adb33291b8f39d9e7516cae7a9d694d1315 100644
--- a/lib/datasource/pypi/index.spec.ts
+++ b/lib/datasource/pypi/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource } from '.';
 
 const res1: any = fs.readFileSync(
diff --git a/lib/datasource/repology/index.spec.ts b/lib/datasource/repology/index.spec.ts
index 314acea523965eae8422c191aba2e0f3e6b366bb..3c39b3d9f9ba525f7066ca9def97d8fbb11d1467 100644
--- a/lib/datasource/repology/index.spec.ts
+++ b/lib/datasource/repology/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import { EXTERNAL_HOST_ERROR } from '../../constants/error-messages';
 import { id as versioning } from '../../versioning/loose';
diff --git a/lib/datasource/ruby-version/index.spec.ts b/lib/datasource/ruby-version/index.spec.ts
index 94dc098d569d1e94c8872d7c77b15d94ca9dd752..40283bd64e89655274aba50213a465689f7ce3cf 100644
--- a/lib/datasource/ruby-version/index.spec.ts
+++ b/lib/datasource/ruby-version/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource } from '.';
 
 const rubyReleasesHtml = fs.readFileSync(
diff --git a/lib/datasource/rubygems/index.spec.ts b/lib/datasource/rubygems/index.spec.ts
index 58321658af687124a3f5a423cc519853699d3f14..21394308087e6904976644f3b217174bb671c5de 100644
--- a/lib/datasource/rubygems/index.spec.ts
+++ b/lib/datasource/rubygems/index.spec.ts
@@ -1,5 +1,5 @@
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import * as rubyVersioning from '../../versioning/ruby';
 import railsInfo from './__fixtures__/rails/info.json';
 import railsVersions from './__fixtures__/rails/versions.json';
diff --git a/lib/datasource/terraform-module/index.spec.ts b/lib/datasource/terraform-module/index.spec.ts
index 4b8ae4b4d3c9e1af83ce444eb82fe4cb28469fed..51d6a8adf6f9b12ab9e22dce6c741b12b6898646 100644
--- a/lib/datasource/terraform-module/index.spec.ts
+++ b/lib/datasource/terraform-module/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource } from '.';
 
 const consulData: any = fs.readFileSync(
diff --git a/lib/datasource/terraform-provider/index.spec.ts b/lib/datasource/terraform-provider/index.spec.ts
index 16ee16d21044473acad601c9d599eb773bd0c1b8..126ddedfc0723368f65c5c955f499cc2e8bf6c43 100644
--- a/lib/datasource/terraform-provider/index.spec.ts
+++ b/lib/datasource/terraform-provider/index.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { getPkgReleases } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { id as datasource, defaultRegistryUrls } from '.';
 
 const consulData: any = fs.readFileSync(
diff --git a/lib/logger/err-serializer.spec.ts b/lib/logger/err-serializer.spec.ts
index 16237ef8f2f045e6b0cec711e28816552cc740e4..2e1ed2a052339d2e1287f2d93fba1f8cbfdab965 100644
--- a/lib/logger/err-serializer.spec.ts
+++ b/lib/logger/err-serializer.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../test/httpMock';
+import * as httpMock from '../../test/http-mock';
 import { partial } from '../../test/util';
 import * as hostRules from '../util/host-rules';
 import { Http } from '../util/http';
diff --git a/lib/manager/bazel/update.spec.ts b/lib/manager/bazel/update.spec.ts
index 4d816abfbf60f289b380eb4a589f3eb2fb6745b7..72f847dab11e54bf299f2d35be4501c055a267a9 100644
--- a/lib/manager/bazel/update.spec.ts
+++ b/lib/manager/bazel/update.spec.ts
@@ -1,7 +1,7 @@
 import { readFileSync } from 'fs';
 import { Readable } from 'stream';
 import { resolve } from 'upath';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { UpdateType } from '../../config';
 import { updateDependency } from './update';
 
diff --git a/lib/manager/bundler/artifacts.spec.ts b/lib/manager/bundler/artifacts.spec.ts
index 77770cc17a20bbb0d1d02d8c33815e5e2afb9899..8b4d3664528faba96ae57ef54f6e8a92fedfffcd 100644
--- a/lib/manager/bundler/artifacts.spec.ts
+++ b/lib/manager/bundler/artifacts.spec.ts
@@ -1,6 +1,6 @@
 import { exec as _exec } from 'child_process';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { fs, git, mocked } from '../../../test/util';
 import * as _datasource from '../../datasource';
 import { setUtilConfig } from '../../util';
diff --git a/lib/manager/cargo/artifacts.spec.ts b/lib/manager/cargo/artifacts.spec.ts
index 0e6f2b1e27714c690ac63cbd735d783735a8bbe2..537d324b27a17f181a3157c2d7b322e77d5775aa 100644
--- a/lib/manager/cargo/artifacts.spec.ts
+++ b/lib/manager/cargo/artifacts.spec.ts
@@ -1,7 +1,7 @@
 import { exec as _exec } from 'child_process';
 import _fs from 'fs-extra';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { git, mocked } from '../../../test/util';
 import { setExecConfig } from '../../util/exec';
 import { BinarySource } from '../../util/exec/common';
diff --git a/lib/manager/cocoapods/artifacts.spec.ts b/lib/manager/cocoapods/artifacts.spec.ts
index 910508824dcc66bf924f3d5f8510aa5cf9eedd5e..a0c00dd30a30e2e6fa76defdc4ee29f6a828c751 100644
--- a/lib/manager/cocoapods/artifacts.spec.ts
+++ b/lib/manager/cocoapods/artifacts.spec.ts
@@ -1,7 +1,7 @@
 import { exec as _exec } from 'child_process';
 import _fs from 'fs-extra';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { git, mocked } from '../../../test/util';
 import * as _datasource from '../../datasource';
 import { setExecConfig } from '../../util/exec';
diff --git a/lib/manager/composer/artifacts.spec.ts b/lib/manager/composer/artifacts.spec.ts
index 6b3e3583dff731bb274340e178f6b7962e1e77a2..bdc0e9b35ead5f98093d592786f5cf4ba787c8e9 100644
--- a/lib/manager/composer/artifacts.spec.ts
+++ b/lib/manager/composer/artifacts.spec.ts
@@ -1,6 +1,6 @@
 import { exec as _exec } from 'child_process';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { env, fs, git, mocked, partial } from '../../../test/util';
 import {
   PLATFORM_TYPE_GITHUB,
diff --git a/lib/manager/gomod/artifacts.spec.ts b/lib/manager/gomod/artifacts.spec.ts
index 4bdc4e4ced6c522bd20370a20bb9e065aeffd92d..f814c19e5313fa2355ae4819da3d0063ce26e2d3 100644
--- a/lib/manager/gomod/artifacts.spec.ts
+++ b/lib/manager/gomod/artifacts.spec.ts
@@ -1,7 +1,7 @@
 import { exec as _exec } from 'child_process';
 import _fs from 'fs-extra';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { git, mocked } from '../../../test/util';
 import { setUtilConfig } from '../../util';
 import { BinarySource } from '../../util/exec/common';
diff --git a/lib/manager/gradle-wrapper/artifacts-real.spec.ts b/lib/manager/gradle-wrapper/artifacts-real.spec.ts
index 41b0371582c3062f52794db102a5068ab045e144..d5fa8f8f5f43643204acebe9c3dd3b8f0fa92583 100644
--- a/lib/manager/gradle-wrapper/artifacts-real.spec.ts
+++ b/lib/manager/gradle-wrapper/artifacts-real.spec.ts
@@ -1,7 +1,7 @@
 import { readFile, readFileSync } from 'fs-extra';
 import Git from 'simple-git';
 import { resolve } from 'upath';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName, git, partial } from '../../../test/util';
 import { setUtilConfig } from '../../util';
 import { StatusResult } from '../../util/git';
diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts
index 428023b15d288618d016117fc4457f49a22ddaa3..a10d381eed627cc5790a0dc103441b35a66c9e11 100644
--- a/lib/manager/gradle-wrapper/artifacts.spec.ts
+++ b/lib/manager/gradle-wrapper/artifacts.spec.ts
@@ -2,8 +2,8 @@
 import { exec as _exec } from 'child_process';
 import { readFile } from 'fs-extra';
 import { resolve } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
-import * as httpMock from '../../../test/httpMock';
+import { envMock, mockExecAll } from '../../../test/exec-util';
+import * as httpMock from '../../../test/http-mock';
 import {
   addReplacingSerializer,
   env,
diff --git a/lib/manager/gradle/index.spec.ts b/lib/manager/gradle/index.spec.ts
index c811c31ebcb41245f61e1a11011362a1015ad7e6..701e0aca67449fc1bb19bd014a18bc01ae65f62a 100644
--- a/lib/manager/gradle/index.spec.ts
+++ b/lib/manager/gradle/index.spec.ts
@@ -3,7 +3,7 @@ import os from 'os';
 import fsExtra from 'fs-extra';
 import tmp from 'tmp-promise';
 import * as upath from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import {
   addReplacingSerializer,
   getName,
diff --git a/lib/manager/helmv3/artifacts.spec.ts b/lib/manager/helmv3/artifacts.spec.ts
index c2723973b7c3992e1c67d33ae086074678d6f4a6..2ffaf1a698f519fdcdbdaa836238109c76d2c03a 100644
--- a/lib/manager/helmv3/artifacts.spec.ts
+++ b/lib/manager/helmv3/artifacts.spec.ts
@@ -1,7 +1,7 @@
 import { exec as _exec } from 'child_process';
 import _fs from 'fs-extra';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { git, mocked } from '../../../test/util';
 import { setExecConfig } from '../../util/exec';
 import { BinarySource } from '../../util/exec/common';
diff --git a/lib/manager/homebrew/update.spec.ts b/lib/manager/homebrew/update.spec.ts
index 296c15fab72cce32b70fb7649a2fee4613ed489d..5c97d03bfa2efbcf3fce8e39688ff2630356b49d 100644
--- a/lib/manager/homebrew/update.spec.ts
+++ b/lib/manager/homebrew/update.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs';
 import { Readable } from 'stream';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { updateDependency } from './update';
 
 const aide = fs.readFileSync(
diff --git a/lib/manager/mix/artifacts.spec.ts b/lib/manager/mix/artifacts.spec.ts
index f35afd6434c56e78401d1c1eb1971bc8b33784d0..fed8cefc604eb01ff3fb2e390ae7dbeb253c58fe 100644
--- a/lib/manager/mix/artifacts.spec.ts
+++ b/lib/manager/mix/artifacts.spec.ts
@@ -1,6 +1,6 @@
 import { exec as _exec } from 'child_process';
 import _fs from 'fs-extra';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { mocked } from '../../../test/util';
 import { BinarySource } from '../../util/exec/common';
 import * as _env from '../../util/exec/env';
diff --git a/lib/manager/npm/post-update/lerna.spec.ts b/lib/manager/npm/post-update/lerna.spec.ts
index ba8881a4084a9a1691cb5b763a295b93addf90f2..6abc4c3fb5d4c4d48a1f45e57ab947bb9ccea47e 100644
--- a/lib/manager/npm/post-update/lerna.spec.ts
+++ b/lib/manager/npm/post-update/lerna.spec.ts
@@ -1,5 +1,5 @@
 import { exec as _exec } from 'child_process';
-import { envMock, mockExecAll } from '../../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../../test/exec-util';
 import { getName, mocked } from '../../../../test/util';
 import * as _env from '../../../util/exec/env';
 import * as _lernaHelper from './lerna';
diff --git a/lib/manager/npm/post-update/npm.spec.ts b/lib/manager/npm/post-update/npm.spec.ts
index ef6a57b2bf4d84e13b8702d01034fd29a55ede2c..9aa0e7b4b89c7c14b3f7e8dceafa36fb50c6f3de 100644
--- a/lib/manager/npm/post-update/npm.spec.ts
+++ b/lib/manager/npm/post-update/npm.spec.ts
@@ -1,7 +1,7 @@
 import { exec as _exec } from 'child_process';
 import upath from 'upath';
 
-import { envMock, mockExecAll } from '../../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../../test/exec-util';
 import { mocked } from '../../../../test/util';
 import { BinarySource } from '../../../util/exec/common';
 import * as _env from '../../../util/exec/env';
diff --git a/lib/manager/npm/post-update/pnpm.spec.ts b/lib/manager/npm/post-update/pnpm.spec.ts
index 83026fd3373120fac7e1e20fad017846eae92c25..179adcd58d1156b1bb02c20dcf0bb5c408903f4c 100644
--- a/lib/manager/npm/post-update/pnpm.spec.ts
+++ b/lib/manager/npm/post-update/pnpm.spec.ts
@@ -1,5 +1,5 @@
 import { exec as _exec } from 'child_process';
-import { envMock, mockExecAll } from '../../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../../test/exec-util';
 import { mocked } from '../../../../test/util';
 import * as _env from '../../../util/exec/env';
 import * as _fs from '../../../util/fs/proxies';
diff --git a/lib/manager/npm/post-update/yarn.spec.ts b/lib/manager/npm/post-update/yarn.spec.ts
index cb0e1ddc93cb9b721f76c4ec8d34a6c7b59f224a..5b2dd6afd5bf2a795f731e93559e3f8943ede935 100644
--- a/lib/manager/npm/post-update/yarn.spec.ts
+++ b/lib/manager/npm/post-update/yarn.spec.ts
@@ -1,5 +1,9 @@
 import { exec as _exec } from 'child_process';
-import { ExecSnapshots, envMock, mockExecAll } from '../../../../test/execUtil';
+import {
+  ExecSnapshots,
+  envMock,
+  mockExecAll,
+} from '../../../../test/exec-util';
 import { fs, getName, mocked } from '../../../../test/util';
 import * as _env from '../../../util/exec/env';
 import * as _yarnHelper from './yarn';
diff --git a/lib/manager/nuget/artifacts.spec.ts b/lib/manager/nuget/artifacts.spec.ts
index b86b6309d0ecafbe4e45c2912a97a5ed2483dedb..90420ef8a744c865f1b83569a55b2c7cf0214dc8 100644
--- a/lib/manager/nuget/artifacts.spec.ts
+++ b/lib/manager/nuget/artifacts.spec.ts
@@ -1,6 +1,6 @@
 import { exec as _exec } from 'child_process';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { fs, mocked } from '../../../test/util';
 import { setUtilConfig } from '../../util';
 import { BinarySource } from '../../util/exec/common';
diff --git a/lib/manager/pip_setup/extract.spec.ts b/lib/manager/pip_setup/extract.spec.ts
index 3f8e80f2236db4a64b1397d56b6eb529bfb2e8c6..d2fff37884be74e519ed5c041dc08354b678e9b4 100644
--- a/lib/manager/pip_setup/extract.spec.ts
+++ b/lib/manager/pip_setup/extract.spec.ts
@@ -1,4 +1,4 @@
-import { envMock, exec, mockExecSequence } from '../../../test/execUtil';
+import { envMock, exec, mockExecSequence } from '../../../test/exec-util';
 import { env, getName } from '../../../test/util';
 import {
   getPythonAlias,
diff --git a/lib/manager/pip_setup/index.spec.ts b/lib/manager/pip_setup/index.spec.ts
index c17f90d2f56a3de0384edaf79a8bbbc6996ea096..d826bdf09180a9ce00cae4868ae7a44a94a9161e 100644
--- a/lib/manager/pip_setup/index.spec.ts
+++ b/lib/manager/pip_setup/index.spec.ts
@@ -5,7 +5,7 @@ import {
   exec,
   mockExecAll,
   mockExecSequence,
-} from '../../../test/execUtil';
+} from '../../../test/exec-util';
 import { env, getName } from '../../../test/util';
 import { BinarySource } from '../../util/exec/common';
 import * as fs from '../../util/fs';
diff --git a/lib/manager/pipenv/artifacts.spec.ts b/lib/manager/pipenv/artifacts.spec.ts
index 5ba8de38afd03060fb22f6139693b10f82d07343..4674adc1bb1eef9fc4602669c5914772d2aa48cd 100644
--- a/lib/manager/pipenv/artifacts.spec.ts
+++ b/lib/manager/pipenv/artifacts.spec.ts
@@ -1,7 +1,7 @@
 import { exec as _exec } from 'child_process';
 import _fs from 'fs-extra';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { git, mocked } from '../../../test/util';
 import { setUtilConfig } from '../../util';
 import { BinarySource } from '../../util/exec/common';
diff --git a/lib/manager/poetry/artifacts.spec.ts b/lib/manager/poetry/artifacts.spec.ts
index a6c3370b7fac00f5aa8163beb743e45633987d20..3ae83916dfec90437f7486ca589f59a64e6fe0ae 100644
--- a/lib/manager/poetry/artifacts.spec.ts
+++ b/lib/manager/poetry/artifacts.spec.ts
@@ -2,7 +2,7 @@ import { exec as _exec } from 'child_process';
 import { readFileSync } from 'fs';
 import _fs from 'fs-extra';
 import { join } from 'upath';
-import { envMock, mockExecAll } from '../../../test/execUtil';
+import { envMock, mockExecAll } from '../../../test/exec-util';
 import { mocked } from '../../../test/util';
 import * as _datasource from '../../datasource';
 import { setExecConfig } from '../../util/exec';
diff --git a/lib/manager/terraform/extract.ts b/lib/manager/terraform/extract.ts
index ff44e98497ed03eb72bb741937cc88324c5d5181..c883a657e7c52da7e4636c750fb89a0d00e41a46 100644
--- a/lib/manager/terraform/extract.ts
+++ b/lib/manager/terraform/extract.ts
@@ -5,7 +5,7 @@ import {
   analyzeTerraformProvider,
   extractTerraformProvider,
 } from './providers';
-import { extractTerraformRequiredProviders } from './required_providers';
+import { extractTerraformRequiredProviders } from './required-providers';
 import {
   analyseTerraformResource,
   extractTerraformResource,
diff --git a/lib/manager/terraform/required_providers.ts b/lib/manager/terraform/required-providers.ts
similarity index 100%
rename from lib/manager/terraform/required_providers.ts
rename to lib/manager/terraform/required-providers.ts
diff --git a/lib/platform/bitbucket-server/README.md b/lib/platform/bitbucket-server/index.md
similarity index 100%
rename from lib/platform/bitbucket-server/README.md
rename to lib/platform/bitbucket-server/index.md
diff --git a/lib/platform/bitbucket-server/index.spec.ts b/lib/platform/bitbucket-server/index.spec.ts
index 925c68fd4867f2034f0dea53a1d6c188d6af818c..926831e487e7f8567aa96fbc0523312807fe3632 100644
--- a/lib/platform/bitbucket-server/index.spec.ts
+++ b/lib/platform/bitbucket-server/index.spec.ts
@@ -1,5 +1,5 @@
 import nock from 'nock';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import {
   REPOSITORY_CHANGED,
diff --git a/lib/platform/bitbucket/comments.spec.ts b/lib/platform/bitbucket/comments.spec.ts
index 339ef00d8140c0352ed546987a8436cf263c901a..ca2cee98b715632a7bf4fe7793d6f0a132d8f38b 100644
--- a/lib/platform/bitbucket/comments.spec.ts
+++ b/lib/platform/bitbucket/comments.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import { setBaseUrl } from '../../util/http/bitbucket';
 import * as comments from './comments';
diff --git a/lib/platform/bitbucket/README.md b/lib/platform/bitbucket/index.md
similarity index 100%
rename from lib/platform/bitbucket/README.md
rename to lib/platform/bitbucket/index.md
diff --git a/lib/platform/bitbucket/index.spec.ts b/lib/platform/bitbucket/index.spec.ts
index c810369d8a77555fc025fc7c350a8a9c96585bad..da0a9e7886191af42176c94e9c77e0ad687bf366 100644
--- a/lib/platform/bitbucket/index.spec.ts
+++ b/lib/platform/bitbucket/index.spec.ts
@@ -1,5 +1,5 @@
 import nock from 'nock';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { logger as _logger } from '../../logger';
 import { BranchStatus, PrState } from '../../types';
 import * as _git from '../../util/git';
diff --git a/lib/platform/bitbucket/utils.spec.ts b/lib/platform/bitbucket/utils.spec.ts
index 7900bcca9ea00a4f33ca16d36ed27b4d36cc37ce..abe9c14f0fc3efbb85235334d68fefa604d2dc68 100644
--- a/lib/platform/bitbucket/utils.spec.ts
+++ b/lib/platform/bitbucket/utils.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { setBaseUrl } from '../../util/http/bitbucket';
 import * as utils from './utils';
 
diff --git a/lib/platform/gitea/gitea-helper.spec.ts b/lib/platform/gitea/gitea-helper.spec.ts
index 741171d6f6f0afe3c30530d595da6f36b8946368..c57615537ad45b9a8a837ad5d4b85abb35829d47 100644
--- a/lib/platform/gitea/gitea-helper.spec.ts
+++ b/lib/platform/gitea/gitea-helper.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { PrState } from '../../types';
 import { setBaseUrl } from '../../util/http/gitea';
 import * as ght from './gitea-helper';
diff --git a/lib/platform/gitea/README.md b/lib/platform/gitea/index.md
similarity index 100%
rename from lib/platform/gitea/README.md
rename to lib/platform/gitea/index.md
diff --git a/lib/platform/github/index.spec.ts b/lib/platform/github/index.spec.ts
index d4aa2084c052b00bac56ffd0cb791065f41332b1..9e706fd5a7038587cc7d801c1e8abca69bd91c29 100644
--- a/lib/platform/github/index.spec.ts
+++ b/lib/platform/github/index.spec.ts
@@ -1,5 +1,5 @@
 import fs from 'fs-extra';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { mocked } from '../../../test/util';
 import {
   REPOSITORY_NOT_FOUND,
diff --git a/lib/platform/gitlab/index.spec.ts b/lib/platform/gitlab/index.spec.ts
index eda236f6f712577f7558b056ff79ca1f5ecaa51f..fadc4cd0362b318741382623b8303ae015d9e65f 100644
--- a/lib/platform/gitlab/index.spec.ts
+++ b/lib/platform/gitlab/index.spec.ts
@@ -1,7 +1,7 @@
 // TODO fix mocks
 import nock from 'nock';
 import { Platform, RepoParams } from '..';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import {
   REPOSITORY_ARCHIVED,
   REPOSITORY_CHANGED,
diff --git a/lib/util/exec/exec.spec.ts b/lib/util/exec/exec.spec.ts
index 3bcecea574a44388bbfc0aea19ecf3071f9e02da..9877ce8a208ebc46bbebc85f5a7f3f8b2b988502 100644
--- a/lib/util/exec/exec.spec.ts
+++ b/lib/util/exec/exec.spec.ts
@@ -3,7 +3,7 @@ import {
   ExecOptions as ChildProcessExecOptions,
   exec as _cpExec,
 } from 'child_process';
-import { envMock } from '../../../test/execUtil';
+import { envMock } from '../../../test/exec-util';
 import {
   BinarySource,
   ExecConfig,
diff --git a/lib/util/http/bitbucket-server.spec.ts b/lib/util/http/bitbucket-server.spec.ts
index 9886b67ffbccacd3d1cdc7667b075105560a4da7..06092fa934df9bef2b174019b0a03ec2a1f32a1c 100644
--- a/lib/util/http/bitbucket-server.spec.ts
+++ b/lib/util/http/bitbucket-server.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import { PLATFORM_TYPE_BITBUCKET_SERVER } from '../../constants/platforms';
 import * as hostRules from '../host-rules';
diff --git a/lib/util/http/bitbucket.spec.ts b/lib/util/http/bitbucket.spec.ts
index d99bd8dbe44270505538f20d8c7817ae39867463..d9fe541ae4656b71fe21341795a17a0da39cbb3e 100644
--- a/lib/util/http/bitbucket.spec.ts
+++ b/lib/util/http/bitbucket.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import { PLATFORM_TYPE_BITBUCKET } from '../../constants/platforms';
 import * as hostRules from '../host-rules';
diff --git a/lib/util/http/gitea.spec.ts b/lib/util/http/gitea.spec.ts
index b24c852bd51ba6cf7dd99e815bb342ababa958c8..9225146952ee301a506ea70e32bc13f6a148c3bb 100644
--- a/lib/util/http/gitea.spec.ts
+++ b/lib/util/http/gitea.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import { GiteaHttp, setBaseUrl } from './gitea';
 
diff --git a/lib/util/http/github.spec.ts b/lib/util/http/github.spec.ts
index dc9c5b6ddf50821899d0d3627f5343cc7c20cfaf..80d7752c2715d4ceb80c89cc4dd8bbb7038ca806 100644
--- a/lib/util/http/github.spec.ts
+++ b/lib/util/http/github.spec.ts
@@ -1,5 +1,5 @@
 import nock from 'nock';
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import {
   EXTERNAL_HOST_ERROR,
diff --git a/lib/util/http/gitlab.spec.ts b/lib/util/http/gitlab.spec.ts
index 45ddb8acfd22aa4d12ffcd4b8ea0274eac7e6c0b..1296a984570c6c2421703586b0d729a547193767 100644
--- a/lib/util/http/gitlab.spec.ts
+++ b/lib/util/http/gitlab.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import { EXTERNAL_HOST_ERROR } from '../../constants/error-messages';
 import { PLATFORM_TYPE_GITLAB } from '../../constants/platforms';
diff --git a/lib/util/http/host-rules.spec.ts b/lib/util/http/host-rules.spec.ts
index 666ae6180a94af214dd45c66c8724c8f3d29ea14..3a4c1acd15ad94bc12a1d40c0e86726875dc369c 100644
--- a/lib/util/http/host-rules.spec.ts
+++ b/lib/util/http/host-rules.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../test/httpMock';
+import * as httpMock from '../../../test/http-mock';
 import { getName } from '../../../test/util';
 import {
   PLATFORM_TYPE_GITEA,
diff --git a/lib/workers/pr/__fixtures__/angular.js.md b/lib/workers/pr/__fixtures__/angular-js.md
similarity index 100%
rename from lib/workers/pr/__fixtures__/angular.js.md
rename to lib/workers/pr/__fixtures__/angular-js.md
diff --git a/lib/workers/pr/changelog/gitlab.spec.ts b/lib/workers/pr/changelog/gitlab.spec.ts
index f5f89ce53211b77731e397355371a944534100e4..ea83bb69133a1530b8ac07860607018b929f50e6 100644
--- a/lib/workers/pr/changelog/gitlab.spec.ts
+++ b/lib/workers/pr/changelog/gitlab.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../../test/httpMock';
+import * as httpMock from '../../../../test/http-mock';
 import { getName } from '../../../../test/util';
 import { PLATFORM_TYPE_GITLAB } from '../../../constants/platforms';
 import * as hostRules from '../../../util/host-rules';
diff --git a/lib/workers/pr/changelog/index.spec.ts b/lib/workers/pr/changelog/index.spec.ts
index 074e0afc7f62af17a79d24182ec9c4f6ce77591c..f45ceab56c5c1c49bcc394430f7a577afafea8b1 100644
--- a/lib/workers/pr/changelog/index.spec.ts
+++ b/lib/workers/pr/changelog/index.spec.ts
@@ -1,4 +1,4 @@
-import * as httpMock from '../../../../test/httpMock';
+import * as httpMock from '../../../../test/http-mock';
 import { getName, partial } from '../../../../test/util';
 import { PLATFORM_TYPE_GITHUB } from '../../../constants/platforms';
 import * as hostRules from '../../../util/host-rules';
diff --git a/lib/workers/pr/changelog/release-notes.spec.ts b/lib/workers/pr/changelog/release-notes.spec.ts
index 9ff2fb69a8ad973d62fe4849c63c84ed2569d042..a39870f100758642523593308e5628c7614d4463 100644
--- a/lib/workers/pr/changelog/release-notes.spec.ts
+++ b/lib/workers/pr/changelog/release-notes.spec.ts
@@ -1,6 +1,6 @@
 import fs from 'fs-extra';
 import { DateTime } from 'luxon';
-import * as httpMock from '../../../../test/httpMock';
+import * as httpMock from '../../../../test/http-mock';
 import { getName } from '../../../../test/util';
 import { ChangeLogNotes } from './common';
 import {
@@ -12,7 +12,7 @@ import {
 } from './release-notes';
 
 const angularJsChangelogMd = fs.readFileSync(
-  'lib/workers/pr/__fixtures__/angular.js.md',
+  'lib/workers/pr/__fixtures__/angular-js.md',
   'utf8'
 );
 const jestChangelogMd = fs.readFileSync(
diff --git a/package.json b/package.json
index 2547e3d2ed403b41d4be0dc438d794e312047c0f..ba98894538e467d78b4cc99cd29546bc2e6c7cfd 100644
--- a/package.json
+++ b/package.json
@@ -21,8 +21,9 @@
     "jest": "cross-env NODE_ENV=test LOG_LEVEL=fatal node --expose-gc node_modules/jest/bin/jest.js",
     "jest-debug": "cross-env NODE_ENV=test LOG_LEVEL=fatal node --expose-gc --inspect-brk node_modules/jest/bin/jest.js",
     "jest-silent": "cross-env NODE_ENV=test yarn jest --reporters jest-silent-reporter",
-    "lint": "run-s eslint prettier",
+    "lint": "run-s ls-lint eslint prettier",
     "lint-fix": "run-s eslint-fix prettier-fix",
+    "ls-lint": "ls-lint",
     "prepare": "run-s prepare:*",
     "prepare:tools": "tsc -p tools",
     "prepare:re2": "node --experimental-modules tools/check-re2.mjs",
@@ -113,6 +114,7 @@
   "dependencies": {
     "@breejs/later": "4.0.2",
     "@iarna/toml": "2.2.5",
+    "@ls-lint/ls-lint": "1.9.2",
     "@renovate/pep440": "0.4.1",
     "@renovatebot/ruby-semver": "0.2.1",
     "@sindresorhus/is": "4.0.0",
diff --git a/test/execUtil.ts b/test/exec-util.ts
similarity index 100%
rename from test/execUtil.ts
rename to test/exec-util.ts
diff --git a/test/httpMock.ts b/test/http-mock.ts
similarity index 100%
rename from test/httpMock.ts
rename to test/http-mock.ts
diff --git a/yarn.lock b/yarn.lock
index 63cc9f2d0f586e7fb0df023816f0e579ca1f88b1..fb676f99dfbf4ae53befe6160bbe34cb6bd6bd7f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1190,6 +1190,11 @@
   resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919"
   integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
 
+"@ls-lint/ls-lint@1.9.2":
+  version "1.9.2"
+  resolved "https://registry.yarnpkg.com/@ls-lint/ls-lint/-/ls-lint-1.9.2.tgz#689f1f4c06072823a726802ba167340efcefe19c"
+  integrity sha512-sugEjWjSSy9OHF6t1ZBLZCAROj52cZthB9dIePmzZzzMwmWwy3qAEMSdJheHeS1FOwDZI7Ipm1H/bWgzJNnSAw==
+
 "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents":
   version "2.1.8-no-fsevents"
   resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz#da7c3996b8e6e19ebd14d82eaced2313e7769f9b"
@@ -3611,7 +3616,7 @@ debug@^3.1.0:
   dependencies:
     ms "^2.1.1"
 
-debuglog@*, debuglog@^1.0.1:
+debuglog@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
   integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
@@ -5276,7 +5281,7 @@ import-local@^3.0.2:
     pkg-dir "^4.2.0"
     resolve-cwd "^3.0.0"
 
-imurmurhash@*, imurmurhash@^0.1.4:
+imurmurhash@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
   integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
@@ -6730,11 +6735,6 @@ lockfile@^1.0.4:
   dependencies:
     signal-exit "^3.0.2"
 
-lodash._baseindexof@*:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
-  integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw=
-
 lodash._baseuniq@~4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@@ -6743,33 +6743,11 @@ lodash._baseuniq@~4.6.0:
     lodash._createset "~4.0.0"
     lodash._root "~3.0.0"
 
-lodash._bindcallback@*:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
-  integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4=
-
-lodash._cacheindexof@*:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
-  integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI=
-
-lodash._createcache@*:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
-  integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=
-  dependencies:
-    lodash._getnative "^3.0.0"
-
 lodash._createset@~4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
   integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=
 
-lodash._getnative@*, lodash._getnative@^3.0.0:
-  version "3.9.1"
-  resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
-  integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
-
 lodash._reinterpolate@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
@@ -6815,11 +6793,6 @@ lodash.isstring@^4.0.1:
   resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
   integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
 
-lodash.restparam@*:
-  version "3.6.1"
-  resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
-  integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
-
 lodash.set@^4.3.2:
   version "4.3.2"
   resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
@@ -7773,7 +7746,6 @@ npm@^6.14.8:
     cmd-shim "^3.0.3"
     columnify "~1.5.4"
     config-chain "^1.1.12"
-    debuglog "*"
     detect-indent "~5.0.0"
     detect-newline "^2.1.0"
     dezalgo "~1.0.3"
@@ -7788,7 +7760,6 @@ npm@^6.14.8:
     has-unicode "~2.0.1"
     hosted-git-info "^2.8.8"
     iferr "^1.0.2"
-    imurmurhash "*"
     infer-owner "^1.0.4"
     inflight "~1.0.6"
     inherits "^2.0.4"
@@ -7807,14 +7778,8 @@ npm@^6.14.8:
     libnpx "^10.2.4"
     lock-verify "^2.1.0"
     lockfile "^1.0.4"
-    lodash._baseindexof "*"
     lodash._baseuniq "~4.6.0"
-    lodash._bindcallback "*"
-    lodash._cacheindexof "*"
-    lodash._createcache "*"
-    lodash._getnative "*"
     lodash.clonedeep "~4.5.0"
-    lodash.restparam "*"
     lodash.union "~4.6.0"
     lodash.uniq "~4.5.0"
     lodash.without "~4.4.0"