@monorepolint/rules 0.5.0-alpha.82 → 0.5.0-alpha.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/__tests__/alphabeticalScripts.spec.js +22 -24
- package/lib/__tests__/alphabeticalScripts.spec.js.map +1 -1
- package/lib/__tests__/bannedDependencies.spec.js +67 -9
- package/lib/__tests__/bannedDependencies.spec.js.map +1 -1
- package/lib/__tests__/consistentDependencies.spec.js +11 -10
- package/lib/__tests__/consistentDependencies.spec.js.map +1 -1
- package/lib/__tests__/consistentVersions.spec.js +23 -22
- package/lib/__tests__/consistentVersions.spec.js.map +1 -1
- package/lib/__tests__/fileContents.spec.js +25 -32
- package/lib/__tests__/fileContents.spec.js.map +1 -1
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.js +49 -48
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.js.map +1 -1
- package/lib/__tests__/nestedWorkspaces.spec.js +10 -8
- package/lib/__tests__/nestedWorkspaces.spec.js.map +1 -1
- package/lib/__tests__/packageEntry.spec.js +47 -40
- package/lib/__tests__/packageEntry.spec.js.map +1 -1
- package/lib/__tests__/packageOrder.spec.js +34 -33
- package/lib/__tests__/packageOrder.spec.js.map +1 -1
- package/lib/__tests__/packageScript.spec.js +50 -51
- package/lib/__tests__/packageScript.spec.js.map +1 -1
- package/lib/__tests__/requireDependency.spec.js +12 -11
- package/lib/__tests__/requireDependency.spec.js.map +1 -1
- package/lib/__tests__/utils.d.ts +68 -1
- package/lib/__tests__/utils.d.ts.map +1 -1
- package/lib/__tests__/utils.js +70 -21
- package/lib/__tests__/utils.js.map +1 -1
- package/lib/alphabeticalDependencies.js +3 -3
- package/lib/alphabeticalDependencies.js.map +1 -1
- package/lib/alphabeticalScripts.js +1 -1
- package/lib/alphabeticalScripts.js.map +1 -1
- package/lib/bannedDependencies.d.ts +21 -12
- package/lib/bannedDependencies.d.ts.map +1 -1
- package/lib/bannedDependencies.js +86 -57
- package/lib/bannedDependencies.js.map +1 -1
- package/lib/consistentDependencies.d.ts +6 -6
- package/lib/consistentDependencies.d.ts.map +1 -1
- package/lib/consistentDependencies.js +2 -3
- package/lib/consistentDependencies.js.map +1 -1
- package/lib/consistentVersions.d.ts +1 -1
- package/lib/consistentVersions.js +8 -8
- package/lib/consistentVersions.js.map +1 -1
- package/lib/fileContents.d.ts +8 -8
- package/lib/fileContents.d.ts.map +1 -1
- package/lib/fileContents.js +32 -31
- package/lib/fileContents.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/mustSatisfyPeerDependencies.d.ts +31 -31
- package/lib/mustSatisfyPeerDependencies.d.ts.map +1 -1
- package/lib/mustSatisfyPeerDependencies.js +18 -16
- package/lib/mustSatisfyPeerDependencies.js.map +1 -1
- package/lib/packageEntry.d.ts +11 -20
- package/lib/packageEntry.d.ts.map +1 -1
- package/lib/packageEntry.js +15 -7
- package/lib/packageEntry.js.map +1 -1
- package/lib/packageOrder.d.ts +3 -3
- package/lib/packageOrder.d.ts.map +1 -1
- package/lib/packageOrder.js +2 -3
- package/lib/packageOrder.js.map +1 -1
- package/lib/packageScript.d.ts +10 -10
- package/lib/packageScript.js +4 -4
- package/lib/packageScript.js.map +1 -1
- package/lib/requireDependency.d.ts +6 -6
- package/lib/requireDependency.d.ts.map +1 -1
- package/lib/requireDependency.js +3 -3
- package/lib/requireDependency.js.map +1 -1
- package/lib/standardTsconfig.d.ts +10 -10
- package/lib/standardTsconfig.d.ts.map +1 -1
- package/lib/standardTsconfig.js +26 -21
- package/lib/standardTsconfig.js.map +1 -1
- package/lib/util/checkAlpha.d.ts +1 -0
- package/lib/util/checkAlpha.d.ts.map +1 -1
- package/lib/util/checkAlpha.js +8 -5
- package/lib/util/checkAlpha.js.map +1 -1
- package/lib/util/makeDirectory.js +2 -2
- package/lib/util/makeDirectory.js.map +1 -1
- package/lib/util/packageDependencyGraphService.d.ts +3 -3
- package/lib/util/packageDependencyGraphService.d.ts.map +1 -1
- package/lib/util/packageDependencyGraphService.js +3 -3
- package/lib/util/packageDependencyGraphService.js.map +1 -1
- package/package.json +8 -9
- package/src/__tests__/alphabeticalScripts.spec.ts +27 -28
- package/src/__tests__/bannedDependencies.spec.ts +80 -6
- package/src/__tests__/consistentDependencies.spec.ts +11 -6
- package/src/__tests__/consistentVersions.spec.ts +32 -27
- package/src/__tests__/fileContents.spec.ts +32 -40
- package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +52 -47
- package/src/__tests__/nestedWorkspaces.spec.ts +12 -6
- package/src/__tests__/packageEntry.spec.ts +64 -45
- package/src/__tests__/packageOrder.spec.ts +46 -40
- package/src/__tests__/packageScript.spec.ts +62 -54
- package/src/__tests__/requireDependency.spec.ts +11 -6
- package/src/__tests__/utils.ts +109 -19
- package/src/bannedDependencies.ts +106 -74
- package/src/consistentDependencies.ts +1 -2
- package/src/consistentVersions.ts +2 -2
- package/src/fileContents.ts +32 -30
- package/src/mustSatisfyPeerDependencies.ts +6 -2
- package/src/packageEntry.ts +13 -5
- package/src/packageOrder.ts +1 -2
- package/src/packageScript.ts +2 -2
- package/src/requireDependency.ts +2 -2
- package/src/standardTsconfig.ts +22 -19
- package/src/util/checkAlpha.ts +6 -3
- package/src/util/packageDependencyGraphService.ts +8 -5
- package/tsconfig.tsbuildinfo +1 -6233
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { WorkspaceContext } from "@monorepolint/core";
|
|
9
|
-
import {
|
|
9
|
+
import { Host, PackageJson, SimpleHost } from "@monorepolint/utils";
|
|
10
10
|
import * as path from "path";
|
|
11
11
|
import * as tmp from "tmp";
|
|
12
12
|
import {
|
|
@@ -65,29 +65,34 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
function makeWorkspace(fix = false) {
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
const host: Host = new SimpleHost();
|
|
69
|
+
const workspaceContext = new WorkspaceContext(
|
|
70
|
+
cwd!,
|
|
71
|
+
{
|
|
72
|
+
rules: [],
|
|
73
|
+
fix,
|
|
74
|
+
verbose: false,
|
|
75
|
+
silent: true,
|
|
76
|
+
},
|
|
77
|
+
host
|
|
78
|
+
);
|
|
74
79
|
const addErrorSpy = jest.spyOn(workspaceContext, "addError");
|
|
75
80
|
|
|
76
81
|
function check(options: Options) {
|
|
77
82
|
mustSatisfyPeerDependencies.check(workspaceContext, options);
|
|
78
83
|
}
|
|
79
84
|
|
|
80
|
-
return { addErrorSpy, check };
|
|
85
|
+
return { addErrorSpy, check, host };
|
|
81
86
|
}
|
|
82
87
|
|
|
83
|
-
function addPackageJson(filePath: string, packageJson: PackageJson) {
|
|
88
|
+
function addPackageJson(host: Host, filePath: string, packageJson: PackageJson) {
|
|
84
89
|
const dirPath = path.resolve(cwd!, path.dirname(filePath));
|
|
85
90
|
const resolvedFilePath = path.resolve(cwd!, filePath);
|
|
86
91
|
|
|
87
92
|
makeDirectoryRecursively(dirPath);
|
|
88
|
-
writeJson(resolvedFilePath, packageJson);
|
|
93
|
+
host.writeJson(resolvedFilePath, packageJson);
|
|
89
94
|
return (): PackageJson => {
|
|
90
|
-
return readJson(resolvedFilePath);
|
|
95
|
+
return host.readJson(resolvedFilePath);
|
|
91
96
|
};
|
|
92
97
|
}
|
|
93
98
|
|
|
@@ -821,7 +826,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
821
826
|
});
|
|
822
827
|
|
|
823
828
|
it("Flags overloaded dependency (entry in regular dependencies and peer dependencies)", async () => {
|
|
824
|
-
const { addErrorSpy, check } = makeWorkspace();
|
|
829
|
+
const { addErrorSpy, check, host } = makeWorkspace();
|
|
825
830
|
|
|
826
831
|
const testPackageJson = {
|
|
827
832
|
name: "test",
|
|
@@ -832,12 +837,12 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
832
837
|
greatLib: "15",
|
|
833
838
|
},
|
|
834
839
|
};
|
|
835
|
-
addPackageJson("./package.json", testPackageJson);
|
|
840
|
+
addPackageJson(host, "./package.json", testPackageJson);
|
|
836
841
|
|
|
837
842
|
const greatLibPackageJson = {
|
|
838
843
|
name: "greatLib",
|
|
839
844
|
};
|
|
840
|
-
addPackageJson("./node_modules/greatLib/package.json", greatLibPackageJson);
|
|
845
|
+
addPackageJson(host, "./node_modules/greatLib/package.json", greatLibPackageJson);
|
|
841
846
|
|
|
842
847
|
check({});
|
|
843
848
|
expect(addErrorSpy).toHaveBeenCalledTimes(1);
|
|
@@ -848,7 +853,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
848
853
|
});
|
|
849
854
|
|
|
850
855
|
it("Flags conflicting peer dependencies", async () => {
|
|
851
|
-
const { addErrorSpy, check } = makeWorkspace();
|
|
856
|
+
const { addErrorSpy, check, host } = makeWorkspace();
|
|
852
857
|
|
|
853
858
|
const testPackageJson = {
|
|
854
859
|
name: "test",
|
|
@@ -864,7 +869,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
864
869
|
ccc: "0.0.1",
|
|
865
870
|
},
|
|
866
871
|
};
|
|
867
|
-
addPackageJson("./package.json", testPackageJson);
|
|
872
|
+
addPackageJson(host, "./package.json", testPackageJson);
|
|
868
873
|
|
|
869
874
|
const aaaPackageJson = {
|
|
870
875
|
name: "a",
|
|
@@ -873,21 +878,21 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
873
878
|
greatestLib: "100",
|
|
874
879
|
},
|
|
875
880
|
};
|
|
876
|
-
addPackageJson("./node_modules/aaa/package.json", aaaPackageJson);
|
|
881
|
+
addPackageJson(host, "./node_modules/aaa/package.json", aaaPackageJson);
|
|
877
882
|
const bbbPackageJson = {
|
|
878
883
|
name: "b",
|
|
879
884
|
peerDependencies: {
|
|
880
885
|
greatLib: "16",
|
|
881
886
|
},
|
|
882
887
|
};
|
|
883
|
-
addPackageJson("./node_modules/bbb/package.json", bbbPackageJson);
|
|
888
|
+
addPackageJson(host, "./node_modules/bbb/package.json", bbbPackageJson);
|
|
884
889
|
const cccPackageJson = {
|
|
885
890
|
name: "c",
|
|
886
891
|
peerDependencies: {
|
|
887
892
|
greatestLib: "200",
|
|
888
893
|
},
|
|
889
894
|
};
|
|
890
|
-
addPackageJson("./node_modules/ccc/package.json", cccPackageJson);
|
|
895
|
+
addPackageJson(host, "./node_modules/ccc/package.json", cccPackageJson);
|
|
891
896
|
|
|
892
897
|
check({});
|
|
893
898
|
expect(addErrorSpy).toHaveBeenCalledTimes(1);
|
|
@@ -909,7 +914,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
909
914
|
});
|
|
910
915
|
|
|
911
916
|
it("Flags unsatisfied peer dependencies (test package has regular dep)", async () => {
|
|
912
|
-
const { addErrorSpy, check } = makeWorkspace();
|
|
917
|
+
const { addErrorSpy, check, host } = makeWorkspace();
|
|
913
918
|
|
|
914
919
|
const testPackageJson = {
|
|
915
920
|
name: "test",
|
|
@@ -922,33 +927,33 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
922
927
|
ccc: "0.0.1",
|
|
923
928
|
},
|
|
924
929
|
};
|
|
925
|
-
addPackageJson("./package.json", testPackageJson);
|
|
930
|
+
addPackageJson(host, "./package.json", testPackageJson);
|
|
926
931
|
|
|
927
932
|
const greatLibPackageJson = {
|
|
928
933
|
name: "greatLib",
|
|
929
934
|
};
|
|
930
|
-
addPackageJson("./node_modules/greatLib/package.json", greatLibPackageJson);
|
|
935
|
+
addPackageJson(host, "./node_modules/greatLib/package.json", greatLibPackageJson);
|
|
931
936
|
const aaaPackageJson = {
|
|
932
937
|
name: "a",
|
|
933
938
|
peerDependencies: {
|
|
934
939
|
greatLib: "^15.2 || ^16",
|
|
935
940
|
},
|
|
936
941
|
};
|
|
937
|
-
addPackageJson("./node_modules/aaa/package.json", aaaPackageJson);
|
|
942
|
+
addPackageJson(host, "./node_modules/aaa/package.json", aaaPackageJson);
|
|
938
943
|
const bbbPackageJson = {
|
|
939
944
|
name: "b",
|
|
940
945
|
peerDependencies: {
|
|
941
946
|
greatLib: "^15.2.3 || ^16",
|
|
942
947
|
},
|
|
943
948
|
};
|
|
944
|
-
addPackageJson("./node_modules/bbb/package.json", bbbPackageJson);
|
|
949
|
+
addPackageJson(host, "./node_modules/bbb/package.json", bbbPackageJson);
|
|
945
950
|
const cccPackageJson = {
|
|
946
951
|
name: "c",
|
|
947
952
|
peerDependencies: {
|
|
948
953
|
greatLib: "^15.8",
|
|
949
954
|
},
|
|
950
955
|
};
|
|
951
|
-
addPackageJson("./node_modules/ccc/package.json", cccPackageJson);
|
|
956
|
+
addPackageJson(host, "./node_modules/ccc/package.json", cccPackageJson);
|
|
952
957
|
|
|
953
958
|
check({});
|
|
954
959
|
expect(addErrorSpy).toHaveBeenCalledTimes(1);
|
|
@@ -968,7 +973,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
968
973
|
});
|
|
969
974
|
|
|
970
975
|
it("Flags missing peer dependencies (NO regular dependency present)", async () => {
|
|
971
|
-
const { addErrorSpy, check } = makeWorkspace(true);
|
|
976
|
+
const { addErrorSpy, check, host } = makeWorkspace(true);
|
|
972
977
|
|
|
973
978
|
const testPackageJson = {
|
|
974
979
|
name: "test",
|
|
@@ -980,7 +985,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
980
985
|
ccc: "0.0.1",
|
|
981
986
|
},
|
|
982
987
|
};
|
|
983
|
-
const readTestPackageJson = addPackageJson("./package.json", testPackageJson);
|
|
988
|
+
const readTestPackageJson = addPackageJson(host, "./package.json", testPackageJson);
|
|
984
989
|
|
|
985
990
|
const aaaPackageJson = {
|
|
986
991
|
name: "a",
|
|
@@ -988,21 +993,21 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
988
993
|
greatLib: "15 || ^16.2",
|
|
989
994
|
},
|
|
990
995
|
};
|
|
991
|
-
addPackageJson("./node_modules/aaa/package.json", aaaPackageJson);
|
|
996
|
+
addPackageJson(host, "./node_modules/aaa/package.json", aaaPackageJson);
|
|
992
997
|
const bbbPackageJson = {
|
|
993
998
|
name: "b",
|
|
994
999
|
peerDependencies: {
|
|
995
1000
|
greatLib: "^16",
|
|
996
1001
|
},
|
|
997
1002
|
};
|
|
998
|
-
addPackageJson("./node_modules/bbb/package.json", bbbPackageJson);
|
|
1003
|
+
addPackageJson(host, "./node_modules/bbb/package.json", bbbPackageJson);
|
|
999
1004
|
const cccPackageJson = {
|
|
1000
1005
|
name: "c",
|
|
1001
1006
|
peerDependencies: {
|
|
1002
1007
|
greatestLib: "100",
|
|
1003
1008
|
},
|
|
1004
1009
|
};
|
|
1005
|
-
addPackageJson("./node_modules/ccc/package.json", cccPackageJson);
|
|
1010
|
+
addPackageJson(host, "./node_modules/ccc/package.json", cccPackageJson);
|
|
1006
1011
|
|
|
1007
1012
|
check({});
|
|
1008
1013
|
expect(addErrorSpy).toHaveBeenCalledTimes(1);
|
|
@@ -1025,7 +1030,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
1025
1030
|
});
|
|
1026
1031
|
|
|
1027
1032
|
it("Flags unsatisfied peer dependencies (test package has peer dep)", async () => {
|
|
1028
|
-
const { addErrorSpy, check } = makeWorkspace(true);
|
|
1033
|
+
const { addErrorSpy, check, host } = makeWorkspace(true);
|
|
1029
1034
|
|
|
1030
1035
|
const testPackageJson = {
|
|
1031
1036
|
name: "test",
|
|
@@ -1040,7 +1045,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
1040
1045
|
ccc: "0.0.1",
|
|
1041
1046
|
},
|
|
1042
1047
|
};
|
|
1043
|
-
const readTestPackageJson = addPackageJson("./package.json", testPackageJson);
|
|
1048
|
+
const readTestPackageJson = addPackageJson(host, "./package.json", testPackageJson);
|
|
1044
1049
|
|
|
1045
1050
|
const aaaPackageJson = {
|
|
1046
1051
|
name: "a",
|
|
@@ -1048,21 +1053,21 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
1048
1053
|
greatLib: "15 || ^16",
|
|
1049
1054
|
},
|
|
1050
1055
|
};
|
|
1051
|
-
addPackageJson("./node_modules/aaa/package.json", aaaPackageJson);
|
|
1056
|
+
addPackageJson(host, "./node_modules/aaa/package.json", aaaPackageJson);
|
|
1052
1057
|
const bbbPackageJson = {
|
|
1053
1058
|
name: "b",
|
|
1054
1059
|
peerDependencies: {
|
|
1055
1060
|
greatLib: "^16",
|
|
1056
1061
|
},
|
|
1057
1062
|
};
|
|
1058
|
-
addPackageJson("./node_modules/bbb/package.json", bbbPackageJson);
|
|
1063
|
+
addPackageJson(host, "./node_modules/bbb/package.json", bbbPackageJson);
|
|
1059
1064
|
const cccPackageJson = {
|
|
1060
1065
|
name: "c",
|
|
1061
1066
|
peerDependencies: {
|
|
1062
1067
|
greatLib: "^16.2",
|
|
1063
1068
|
},
|
|
1064
1069
|
};
|
|
1065
|
-
addPackageJson("./node_modules/ccc/package.json", cccPackageJson);
|
|
1070
|
+
addPackageJson(host, "./node_modules/ccc/package.json", cccPackageJson);
|
|
1066
1071
|
|
|
1067
1072
|
check({});
|
|
1068
1073
|
expect(addErrorSpy).toHaveBeenCalledTimes(1);
|
|
@@ -1083,7 +1088,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
1083
1088
|
});
|
|
1084
1089
|
|
|
1085
1090
|
it("Honors dependencyWhitelist", async () => {
|
|
1086
|
-
const { addErrorSpy, check } = makeWorkspace();
|
|
1091
|
+
const { addErrorSpy, check, host } = makeWorkspace();
|
|
1087
1092
|
|
|
1088
1093
|
const testPackageJson = {
|
|
1089
1094
|
name: "test",
|
|
@@ -1097,30 +1102,30 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
1097
1102
|
greatLib: "15",
|
|
1098
1103
|
},
|
|
1099
1104
|
};
|
|
1100
|
-
addPackageJson("./package.json", testPackageJson);
|
|
1105
|
+
addPackageJson(host, "./package.json", testPackageJson);
|
|
1101
1106
|
|
|
1102
1107
|
const startHerePackageJson = {
|
|
1103
1108
|
name: "startHere",
|
|
1104
1109
|
};
|
|
1105
|
-
addPackageJson("./node_modules/startHere/package.json", startHerePackageJson);
|
|
1110
|
+
addPackageJson(host, "./node_modules/startHere/package.json", startHerePackageJson);
|
|
1106
1111
|
const greatLibPackageJson = {
|
|
1107
1112
|
name: "greatLib",
|
|
1108
1113
|
};
|
|
1109
|
-
addPackageJson("./node_modules/greatLib/package.json", greatLibPackageJson);
|
|
1114
|
+
addPackageJson(host, "./node_modules/greatLib/package.json", greatLibPackageJson);
|
|
1110
1115
|
const aaaPackageJson = {
|
|
1111
1116
|
name: "a",
|
|
1112
1117
|
peerDependencies: {
|
|
1113
1118
|
greatLib: "15",
|
|
1114
1119
|
},
|
|
1115
1120
|
};
|
|
1116
|
-
addPackageJson("./node_modules/aaa/package.json", aaaPackageJson);
|
|
1121
|
+
addPackageJson(host, "./node_modules/aaa/package.json", aaaPackageJson);
|
|
1117
1122
|
const bbbPackageJson = {
|
|
1118
1123
|
name: "b",
|
|
1119
1124
|
peerDependencies: {
|
|
1120
1125
|
greatLib: "16",
|
|
1121
1126
|
},
|
|
1122
1127
|
};
|
|
1123
|
-
addPackageJson("./node_modules/bbb/package.json", bbbPackageJson);
|
|
1128
|
+
addPackageJson(host, "./node_modules/bbb/package.json", bbbPackageJson);
|
|
1124
1129
|
|
|
1125
1130
|
check({ dependencyWhitelist: ["startHere"] });
|
|
1126
1131
|
expect(addErrorSpy).toHaveBeenCalledTimes(0);
|
|
@@ -1129,7 +1134,7 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
1129
1134
|
});
|
|
1130
1135
|
|
|
1131
1136
|
it("Honors dependencyBlacklist", async () => {
|
|
1132
|
-
const { addErrorSpy, check } = makeWorkspace();
|
|
1137
|
+
const { addErrorSpy, check, host } = makeWorkspace();
|
|
1133
1138
|
|
|
1134
1139
|
const testPackageJson = {
|
|
1135
1140
|
name: "test",
|
|
@@ -1143,30 +1148,30 @@ describe("mustSatisfyPeerDependencies", () => {
|
|
|
1143
1148
|
greatLib: "15",
|
|
1144
1149
|
},
|
|
1145
1150
|
};
|
|
1146
|
-
addPackageJson("./package.json", testPackageJson);
|
|
1151
|
+
addPackageJson(host, "./package.json", testPackageJson);
|
|
1147
1152
|
|
|
1148
1153
|
const startHerePackageJson = {
|
|
1149
1154
|
name: "startHere",
|
|
1150
1155
|
};
|
|
1151
|
-
addPackageJson("./node_modules/startHere/package.json", startHerePackageJson);
|
|
1156
|
+
addPackageJson(host, "./node_modules/startHere/package.json", startHerePackageJson);
|
|
1152
1157
|
const greatLibPackageJson = {
|
|
1153
1158
|
name: "greatLib",
|
|
1154
1159
|
};
|
|
1155
|
-
addPackageJson("./node_modules/greatLib/package.json", greatLibPackageJson);
|
|
1160
|
+
addPackageJson(host, "./node_modules/greatLib/package.json", greatLibPackageJson);
|
|
1156
1161
|
const aaaPackageJson = {
|
|
1157
1162
|
name: "a",
|
|
1158
1163
|
peerDependencies: {
|
|
1159
1164
|
greatLib: "15",
|
|
1160
1165
|
},
|
|
1161
1166
|
};
|
|
1162
|
-
addPackageJson("./node_modules/aaa/package.json", aaaPackageJson);
|
|
1167
|
+
addPackageJson(host, "./node_modules/aaa/package.json", aaaPackageJson);
|
|
1163
1168
|
const bbbPackageJson = {
|
|
1164
1169
|
name: "b",
|
|
1165
1170
|
peerDependencies: {
|
|
1166
1171
|
greatLib: "16",
|
|
1167
1172
|
},
|
|
1168
1173
|
};
|
|
1169
|
-
addPackageJson("./node_modules/bbb/package.json", bbbPackageJson);
|
|
1174
|
+
addPackageJson(host, "./node_modules/bbb/package.json", bbbPackageJson);
|
|
1170
1175
|
|
|
1171
1176
|
check({ dependencyBlacklist: ["greatLib"] });
|
|
1172
1177
|
expect(addErrorSpy).toHaveBeenCalledTimes(0);
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
7
|
import { WorkspaceContext } from "@monorepolint/core";
|
|
8
|
+
import { SimpleHost } from "@monorepolint/utils";
|
|
8
9
|
import { writeFileSync } from "fs";
|
|
9
10
|
import * as path from "path";
|
|
10
11
|
import * as tmp from "tmp";
|
|
@@ -55,12 +56,17 @@ describe("nestedWorkspaces", () => {
|
|
|
55
56
|
});
|
|
56
57
|
|
|
57
58
|
function makeWorkspace() {
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
const host = new SimpleHost();
|
|
60
|
+
const workspaceContext = new WorkspaceContext(
|
|
61
|
+
cwd!,
|
|
62
|
+
{
|
|
63
|
+
rules: [],
|
|
64
|
+
fix: false,
|
|
65
|
+
verbose: false,
|
|
66
|
+
silent: true,
|
|
67
|
+
},
|
|
68
|
+
host
|
|
69
|
+
);
|
|
64
70
|
|
|
65
71
|
async function checkAndSpy() {
|
|
66
72
|
const addErrorSpy = jest.spyOn(workspaceContext, "addError");
|
|
@@ -6,13 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
// tslint:disable:no-console
|
|
9
|
-
import { createMockFiles } from "./utils";
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import { Failure, PackageContext } from "@monorepolint/core";
|
|
15
|
-
import { packageEntry } from "../packageEntry";
|
|
10
|
+
import { Context, Failure } from "@monorepolint/core";
|
|
11
|
+
import { createExpectedEntryErrorMessage, createStandardizedEntryErrorMessage, packageEntry } from "../packageEntry";
|
|
12
|
+
import { AddErrorSpy, createTestingWorkspace, HOST_FACTORIES, TestingWorkspace } from "./utils";
|
|
16
13
|
|
|
17
14
|
const PACKAGE_MISSING_ENTRY =
|
|
18
15
|
JSON.stringify(
|
|
@@ -55,26 +52,28 @@ const PACKAGE_REPOSITORY =
|
|
|
55
52
|
2
|
|
56
53
|
) + "\n";
|
|
57
54
|
|
|
58
|
-
describe("expectPackageEntries", () => {
|
|
59
|
-
afterEach(() => {
|
|
60
|
-
mockFiles.clear();
|
|
61
|
-
});
|
|
62
|
-
|
|
55
|
+
describe.each(HOST_FACTORIES)("expectPackageEntries ($name)", (hostFactory) => {
|
|
63
56
|
describe("fix: true", () => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
57
|
+
let workspace: TestingWorkspace;
|
|
58
|
+
let spy: AddErrorSpy;
|
|
59
|
+
let context: Context;
|
|
60
|
+
|
|
61
|
+
beforeEach(async () => {
|
|
62
|
+
workspace = await createTestingWorkspace({
|
|
63
|
+
fixFlag: true,
|
|
64
|
+
host: hostFactory.make(),
|
|
65
|
+
});
|
|
66
|
+
context = workspace.context; // minimizing delta
|
|
67
|
+
|
|
68
|
+
spy = jest.spyOn(workspace.context, "addError");
|
|
69
69
|
});
|
|
70
|
-
const spy = jest.spyOn(context, "addError");
|
|
71
70
|
|
|
72
71
|
afterEach(() => {
|
|
73
72
|
spy.mockClear();
|
|
74
73
|
});
|
|
75
74
|
|
|
76
75
|
it("fixes missing entries", () => {
|
|
77
|
-
|
|
76
|
+
workspace.writeFile("package.json", PACKAGE_MISSING_ENTRY);
|
|
78
77
|
|
|
79
78
|
packageEntry.check(context, {
|
|
80
79
|
entries: {
|
|
@@ -86,15 +85,19 @@ describe("expectPackageEntries", () => {
|
|
|
86
85
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
87
86
|
|
|
88
87
|
const failure: Failure = spy.mock.calls[0][0];
|
|
89
|
-
expect(failure
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
expect(failure).toMatchObject(
|
|
89
|
+
workspace.failureMatcher({
|
|
90
|
+
file: "package.json",
|
|
91
|
+
hasFixer: true,
|
|
92
|
+
message: createStandardizedEntryErrorMessage("license"),
|
|
93
|
+
})
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
expect(workspace.readFile("package.json")).toEqual(PACKAGE_LICENSE);
|
|
94
97
|
});
|
|
95
98
|
|
|
96
99
|
it("fixes missing nested entries", () => {
|
|
97
|
-
|
|
100
|
+
workspace.writeFile("package.json", PACKAGE_MISSING_ENTRY);
|
|
98
101
|
|
|
99
102
|
packageEntry.check(context, {
|
|
100
103
|
entries: {
|
|
@@ -109,15 +112,19 @@ describe("expectPackageEntries", () => {
|
|
|
109
112
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
110
113
|
|
|
111
114
|
const failure: Failure = spy.mock.calls[0][0];
|
|
112
|
-
expect(failure
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
expect(failure).toMatchObject(
|
|
116
|
+
workspace.failureMatcher({
|
|
117
|
+
file: "package.json",
|
|
118
|
+
hasFixer: true,
|
|
119
|
+
message: createStandardizedEntryErrorMessage("repository"),
|
|
120
|
+
})
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
expect(workspace.readFile("package.json")).toEqual(PACKAGE_REPOSITORY);
|
|
117
124
|
});
|
|
118
125
|
|
|
119
126
|
it("doesn't error for nested entries that are defined", () => {
|
|
120
|
-
|
|
127
|
+
workspace.writeFile("package.json", PACKAGE_REPOSITORY);
|
|
121
128
|
|
|
122
129
|
packageEntry.check(context, {
|
|
123
130
|
entries: {
|
|
@@ -130,11 +137,11 @@ describe("expectPackageEntries", () => {
|
|
|
130
137
|
});
|
|
131
138
|
|
|
132
139
|
expect(spy).toHaveBeenCalledTimes(0);
|
|
133
|
-
expect(
|
|
140
|
+
expect(workspace.readFile("package.json")).toEqual(PACKAGE_REPOSITORY);
|
|
134
141
|
});
|
|
135
142
|
|
|
136
143
|
it("errors for keys that are missing", () => {
|
|
137
|
-
|
|
144
|
+
workspace.writeFile("package.json", PACKAGE_REPOSITORY);
|
|
138
145
|
|
|
139
146
|
packageEntry.check(context, {
|
|
140
147
|
entries: undefined,
|
|
@@ -144,14 +151,18 @@ describe("expectPackageEntries", () => {
|
|
|
144
151
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
145
152
|
|
|
146
153
|
const failure: Failure = spy.mock.calls[0][0];
|
|
147
|
-
expect(failure
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
154
|
+
expect(failure).toMatchObject(
|
|
155
|
+
workspace.failureMatcher({
|
|
156
|
+
file: "package.json",
|
|
157
|
+
hasFixer: false,
|
|
158
|
+
message: createExpectedEntryErrorMessage("bugs"),
|
|
159
|
+
})
|
|
160
|
+
);
|
|
161
|
+
expect(workspace.readFile("package.json")).toEqual(PACKAGE_REPOSITORY);
|
|
151
162
|
});
|
|
152
163
|
|
|
153
164
|
it("handles both entries and entriesExist", () => {
|
|
154
|
-
|
|
165
|
+
workspace.writeFile("package.json", PACKAGE_MISSING_ENTRY);
|
|
155
166
|
|
|
156
167
|
packageEntry.check(context, {
|
|
157
168
|
entries: {
|
|
@@ -166,16 +177,24 @@ describe("expectPackageEntries", () => {
|
|
|
166
177
|
expect(spy).toHaveBeenCalledTimes(2);
|
|
167
178
|
|
|
168
179
|
const failure: Failure = spy.mock.calls[0][0];
|
|
169
|
-
expect(failure
|
|
170
|
-
|
|
171
|
-
|
|
180
|
+
expect(failure).toMatchObject(
|
|
181
|
+
workspace.failureMatcher({
|
|
182
|
+
file: "package.json",
|
|
183
|
+
hasFixer: true,
|
|
184
|
+
message: createStandardizedEntryErrorMessage("repository"),
|
|
185
|
+
})
|
|
186
|
+
);
|
|
172
187
|
|
|
173
188
|
const failure2: Failure = spy.mock.calls[1][0];
|
|
174
|
-
expect(failure2
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
189
|
+
expect(failure2).toMatchObject(
|
|
190
|
+
workspace.failureMatcher({
|
|
191
|
+
file: "package.json",
|
|
192
|
+
hasFixer: false,
|
|
193
|
+
message: createExpectedEntryErrorMessage("bugs"),
|
|
194
|
+
})
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
expect(workspace.readFile("package.json")).toEqual(PACKAGE_REPOSITORY);
|
|
179
198
|
});
|
|
180
199
|
});
|
|
181
200
|
});
|