@openzeppelin/upgrades-core 1.36.0 → 1.37.0
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/CHANGELOG.md +5 -0
- package/dist/cli/cli.test.js +99 -1
- package/dist/cli/cli.test.js.map +1 -1
- package/dist/cli/validate/contract-report.d.ts +2 -1
- package/dist/cli/validate/contract-report.d.ts.map +1 -1
- package/dist/cli/validate/contract-report.js +43 -8
- package/dist/cli/validate/contract-report.js.map +1 -1
- package/dist/cli/validate/default-exclude.d.ts +2 -0
- package/dist/cli/validate/default-exclude.d.ts.map +1 -0
- package/dist/cli/validate/default-exclude.js +6 -0
- package/dist/cli/validate/default-exclude.js.map +1 -0
- package/dist/cli/validate/validate-upgrade-safety.d.ts +2 -1
- package/dist/cli/validate/validate-upgrade-safety.d.ts.map +1 -1
- package/dist/cli/validate/validate-upgrade-safety.js +3 -2
- package/dist/cli/validate/validate-upgrade-safety.js.map +1 -1
- package/dist/cli/validate.d.ts +1 -0
- package/dist/cli/validate.d.ts.map +1 -1
- package/dist/cli/validate.js +38 -16
- package/dist/cli/validate.js.map +1 -1
- package/dist/cli/validate.test.js +20 -0
- package/dist/cli/validate.test.js.map +1 -1
- package/dist/storage/extract.js +1 -1
- package/dist/storage/extract.js.map +1 -1
- package/dist/utils/annotations.js +1 -1
- package/dist/utils/annotations.js.map +1 -1
- package/package.json +4 -3
- package/src/cli/cli.test.ts +141 -1
- package/src/cli/cli.test.ts.md +136 -4
- package/src/cli/cli.test.ts.snap +0 -0
- package/src/cli/validate/contract-report.ts +59 -9
- package/src/cli/validate/default-exclude.ts +3 -0
- package/src/cli/validate/validate-upgrade-safety.ts +3 -1
- package/src/cli/validate.test.ts +22 -0
- package/src/cli/validate.ts +43 -16
- package/src/storage/extract.ts +2 -1
- package/src/utils/annotations.ts +1 -1
package/dist/cli/validate.js
CHANGED
|
@@ -22,15 +22,16 @@ Options:
|
|
|
22
22
|
--contract <CONTRACT> The name or fully qualified name of the contract to validate. If not specified, all upgradeable contracts in the build info directory will be validated.
|
|
23
23
|
--reference <REFERENCE_CONTRACT> Can only be used when the --contract option is also provided. The name or fully qualified name of the reference contract to use for storage layout comparisons. If not specified, uses the @custom:oz-upgrades-from annotation if it is defined in the contract that is being validated.
|
|
24
24
|
--requireReference Can only be used when the --contract option is also provided. Not compatible with --unsafeSkipStorageCheck. If specified, requires either the --reference option to be provided or the contract to have a @custom:oz-upgrades-from annotation.
|
|
25
|
-
--referenceBuildInfoDirs Optional paths of additional build info directories from previous versions of the project to use for storage layout comparisons. When using this option, refer to one of these directories using prefix '<dirName>:' before the contract name or fully qualified name in the --reference option or @custom:oz-upgrades-from annotation, where <dirName> is the directory short name. Each directory short name must be unique, including compared to the main build info directory.
|
|
26
|
-
--
|
|
25
|
+
--referenceBuildInfoDirs "<BUILD_INFO_DIR>[,<BUILD_INFO_DIR>...]" Optional paths of additional build info directories from previous versions of the project to use for storage layout comparisons. When using this option, refer to one of these directories using prefix '<dirName>:' before the contract name or fully qualified name in the --reference option or @custom:oz-upgrades-from annotation, where <dirName> is the directory short name. Each directory short name must be unique, including compared to the main build info directory. If passing in multiple directories, separate them with commas or call the option multiple times, once for each directory.
|
|
26
|
+
--exclude "<GLOB_PATTERN>" [--exclude "<GLOB_PATTERN>"...] Exclude validations for contracts in source file paths that match any of the given glob patterns. For example, --exclude "contracts/mocks/**/*.sol". Does not apply to reference contracts. If passing in multiple patterns, call the option multiple times, once for each pattern.
|
|
27
|
+
--unsafeAllow "<VALIDATION_ERROR>[,<VALIDATION_ERROR>...]" Selectively disable one or more validation errors. Comma-separated list with one or more of the following: ${run_1.errorKinds.join(', ')}
|
|
27
28
|
--unsafeAllowRenames Configure storage layout check to allow variable renaming.
|
|
28
29
|
--unsafeSkipStorageCheck Skips checking for storage layout compatibility errors. This is a dangerous option meant to be used as a last resort.`;
|
|
29
30
|
async function main(args) {
|
|
30
31
|
const { parsedArgs, extraArgs } = parseArgs(args);
|
|
31
32
|
if (!help(parsedArgs, extraArgs)) {
|
|
32
33
|
const functionArgs = getFunctionArgs(parsedArgs, extraArgs);
|
|
33
|
-
const result = await (0, _1.validateUpgradeSafety)(functionArgs.buildInfoDir, functionArgs.contract, functionArgs.reference, functionArgs.opts, functionArgs.referenceBuildInfoDirs);
|
|
34
|
+
const result = await (0, _1.validateUpgradeSafety)(functionArgs.buildInfoDir, functionArgs.contract, functionArgs.reference, functionArgs.opts, functionArgs.referenceBuildInfoDirs, functionArgs.exclude);
|
|
34
35
|
console.log(result.explain());
|
|
35
36
|
process.exitCode = result.ok ? 0 : 1;
|
|
36
37
|
}
|
|
@@ -45,7 +46,7 @@ function parseArgs(args) {
|
|
|
45
46
|
'unsafeAllowLinkedLibraries',
|
|
46
47
|
'requireReference',
|
|
47
48
|
],
|
|
48
|
-
string: ['unsafeAllow', 'contract', 'reference', 'referenceBuildInfoDirs'],
|
|
49
|
+
string: ['unsafeAllow', 'contract', 'reference', 'referenceBuildInfoDirs', 'exclude'],
|
|
49
50
|
alias: { h: 'help' },
|
|
50
51
|
});
|
|
51
52
|
const extraArgs = parsedArgs._;
|
|
@@ -82,7 +83,8 @@ function getFunctionArgs(parsedArgs, extraArgs) {
|
|
|
82
83
|
const contract = getAndValidateString(parsedArgs, 'contract');
|
|
83
84
|
const reference = getAndValidateString(parsedArgs, 'reference');
|
|
84
85
|
const opts = withDefaults(parsedArgs);
|
|
85
|
-
const referenceBuildInfoDirs =
|
|
86
|
+
const referenceBuildInfoDirs = getAndValidateStringArray(parsedArgs, 'referenceBuildInfoDirs', true);
|
|
87
|
+
const exclude = getAndValidateStringArray(parsedArgs, 'exclude', false);
|
|
86
88
|
if (contract === undefined) {
|
|
87
89
|
if (reference !== undefined) {
|
|
88
90
|
throw new Error('The --reference option can only be used along with the --contract option.');
|
|
@@ -91,16 +93,39 @@ function getFunctionArgs(parsedArgs, extraArgs) {
|
|
|
91
93
|
throw new Error('The --requireReference option can only be used along with the --contract option.');
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
|
-
return { buildInfoDir, contract, reference, opts, referenceBuildInfoDirs };
|
|
96
|
+
return { buildInfoDir, contract, reference, opts, referenceBuildInfoDirs, exclude };
|
|
95
97
|
}
|
|
96
98
|
}
|
|
97
99
|
function getAndValidateString(parsedArgs, option) {
|
|
98
100
|
const value = parsedArgs[option];
|
|
99
|
-
if (value !== undefined
|
|
100
|
-
|
|
101
|
+
if (value !== undefined) {
|
|
102
|
+
assertNonEmptyString(value, option);
|
|
101
103
|
}
|
|
102
104
|
return value;
|
|
103
105
|
}
|
|
106
|
+
function getAndValidateStringArray(parsedArgs, option, useCommaDelimiter) {
|
|
107
|
+
const value = parsedArgs[option];
|
|
108
|
+
if (value !== undefined) {
|
|
109
|
+
if (Array.isArray(value)) {
|
|
110
|
+
return value;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
assertNonEmptyString(value, option);
|
|
114
|
+
if (useCommaDelimiter) {
|
|
115
|
+
return value.split(/[\s,]+/);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return [value];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
function assertNonEmptyString(value, option) {
|
|
125
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
126
|
+
throw new Error(`Invalid option: --${option} cannot be empty`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
104
129
|
function validateOptions(parsedArgs) {
|
|
105
130
|
const invalidArgs = Object.keys(parsedArgs).filter(key => ![
|
|
106
131
|
'help',
|
|
@@ -115,19 +140,16 @@ function validateOptions(parsedArgs) {
|
|
|
115
140
|
'reference',
|
|
116
141
|
'requireReference',
|
|
117
142
|
'referenceBuildInfoDirs',
|
|
143
|
+
'exclude',
|
|
118
144
|
].includes(key));
|
|
119
145
|
if (invalidArgs.length > 0) {
|
|
120
146
|
throw new Error(`Invalid options: ${invalidArgs.join(', ')}`);
|
|
121
147
|
}
|
|
122
148
|
}
|
|
123
|
-
function getUnsafeAllowKinds(
|
|
124
|
-
|
|
125
|
-
return [];
|
|
126
|
-
}
|
|
127
|
-
const unsafeAllowTokens = unsafeAllow.split(/[\s,]+/);
|
|
149
|
+
function getUnsafeAllowKinds(parseArgs) {
|
|
150
|
+
const unsafeAllowTokens = getAndValidateStringArray(parseArgs, 'unsafeAllow', true) ?? [];
|
|
128
151
|
if (unsafeAllowTokens.some(token => !run_1.errorKinds.includes(token))) {
|
|
129
|
-
|
|
130
|
-
throw new Error(`Invalid option: --unsafeAllow "${unsafeAllow}". Supported values for the --unsafeAllow option are: ${run_1.errorKinds.join(', ')}`);
|
|
152
|
+
throw new Error(`Invalid option: --unsafeAllow "${parseArgs['unsafeAllow']}". Supported values for the --unsafeAllow option are: ${run_1.errorKinds.join(', ')}`);
|
|
131
153
|
}
|
|
132
154
|
return unsafeAllowTokens;
|
|
133
155
|
}
|
|
@@ -138,7 +160,7 @@ function withDefaults(parsedArgs) {
|
|
|
138
160
|
unsafeSkipStorageCheck: parsedArgs['unsafeSkipStorageCheck'],
|
|
139
161
|
unsafeAllowCustomTypes: parsedArgs['unsafeAllowCustomTypes'],
|
|
140
162
|
unsafeAllowLinkedLibraries: parsedArgs['unsafeAllowLinkedLibraries'],
|
|
141
|
-
unsafeAllow: getUnsafeAllowKinds(parsedArgs
|
|
163
|
+
unsafeAllow: getUnsafeAllowKinds(parsedArgs),
|
|
142
164
|
requireReference: parsedArgs['requireReference'],
|
|
143
165
|
};
|
|
144
166
|
return (0, validate_upgrade_safety_1.withCliDefaults)(allOpts);
|
package/dist/cli/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,4 +105,24 @@ ava_1.default.afterEach.always(() => {
|
|
|
105
105
|
message: `Invalid option: --unsafeAllow "foo". Supported values for the --unsafeAllow option are: ${run_1.errorKinds.join(', ')}`,
|
|
106
106
|
});
|
|
107
107
|
});
|
|
108
|
+
(0, ava_1.default)('withDefaults - empty unsafeAllow', t => {
|
|
109
|
+
const parsedArgs = (0, minimist_1.default)(['validate', 'build-info.json', '--unsafeAllow']);
|
|
110
|
+
t.throws(() => (0, validate_1.withDefaults)(parsedArgs), {
|
|
111
|
+
message: `Invalid option: --unsafeAllow cannot be empty`,
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
(0, ava_1.default)('withDefaults - unsafeAllow multiple times', t => {
|
|
115
|
+
const parsedArgs = (0, minimist_1.default)([
|
|
116
|
+
'validate',
|
|
117
|
+
'build-info.json',
|
|
118
|
+
'--unsafeAllow',
|
|
119
|
+
'selfdestruct',
|
|
120
|
+
'--unsafeAllow',
|
|
121
|
+
'delegatecall',
|
|
122
|
+
'--unsafeAllow',
|
|
123
|
+
'constructor',
|
|
124
|
+
]);
|
|
125
|
+
const opts = (0, validate_1.withDefaults)(parsedArgs);
|
|
126
|
+
t.deepEqual(opts.unsafeAllow, ['selfdestruct', 'delegatecall', 'constructor']);
|
|
127
|
+
});
|
|
108
128
|
//# sourceMappingURL=validate.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.test.js","sourceRoot":"","sources":["../../src/cli/validate.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.test.js","sourceRoot":"","sources":["../../src/cli/validate.test.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/extract.js
CHANGED
|
@@ -155,7 +155,7 @@ function loadLayoutType(typeName, layout, deref) {
|
|
|
155
155
|
function getRetypedRenamed(varDecl) {
|
|
156
156
|
let retypedFrom, renamedFrom;
|
|
157
157
|
if ('documentation' in varDecl) {
|
|
158
|
-
const docs = typeof varDecl.documentation === 'string' ? varDecl.documentation : varDecl.documentation?.text ?? '';
|
|
158
|
+
const docs = typeof varDecl.documentation === 'string' ? varDecl.documentation : (varDecl.documentation?.text ?? '');
|
|
159
159
|
for (const { groups } of (0, execall_1.execall)(/^\s*(?:@(?<title>\w+)(?::(?<tag>[a-z][a-z-]*))? )?(?<args>(?:(?!^\s@\w+)[^])*)/m, docs)) {
|
|
160
160
|
if (groups?.title === 'custom') {
|
|
161
161
|
if (groups.tag === 'oz-retyped-from') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/storage/extract.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/storage/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ function getAnnotationArgs(doc, tag, supportedArgs) {
|
|
|
44
44
|
*/
|
|
45
45
|
function getDocumentation(node) {
|
|
46
46
|
if ('documentation' in node) {
|
|
47
|
-
return typeof node.documentation === 'string' ? node.documentation : node.documentation?.text ?? '';
|
|
47
|
+
return typeof node.documentation === 'string' ? node.documentation : (node.documentation?.text ?? '');
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
50
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/utils/annotations.ts"],"names":[],"mappings":";;AAMA,4CAGC;AASD,8CAuBC;AAOD,4CAMC;AAtDD,uCAAoC;AAGpC;;GAEG;AACH,SAAgB,gBAAgB,CAAC,GAAW,EAAE,GAAW;IACvD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,iBAAiB,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,GAAW,EAAE,GAAW,EAAE,aAAiC;IAC3F,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAA,iBAAO,EAC9B,kFAAkF,EAClF,GAAG,CACJ,EAAE,CAAC;QACF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,6BAA6B,GAAG,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,IAAU;IACzC,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/utils/annotations.ts"],"names":[],"mappings":";;AAMA,4CAGC;AASD,8CAuBC;AAOD,4CAMC;AAtDD,uCAAoC;AAGpC;;GAEG;AACH,SAAgB,gBAAgB,CAAC,GAAW,EAAE,GAAW;IACvD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,iBAAiB,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,GAAW,EAAE,GAAW,EAAE,aAAiC;IAC3F,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAA,iBAAO,EAC9B,kFAAkF,EAClF,GAAG,CACJ,EAAE,CAAC;QACF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,6BAA6B,GAAG,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,IAAU;IACzC,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACxG,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openzeppelin/upgrades-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.37.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/core",
|
|
6
6
|
"license": "MIT",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"typescript": "^5.0.0"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@nomicfoundation/slang": "^0.
|
|
64
|
+
"@nomicfoundation/slang": "^0.17.0",
|
|
65
65
|
"cbor": "^9.0.0",
|
|
66
66
|
"chalk": "^4.1.0",
|
|
67
67
|
"compare-versions": "^6.0.0",
|
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
"ethereumjs-util": "^7.0.3",
|
|
70
70
|
"minimist": "^1.2.7",
|
|
71
71
|
"proper-lockfile": "^4.1.1",
|
|
72
|
-
"solidity-ast": "^0.4.51"
|
|
72
|
+
"solidity-ast": "^0.4.51",
|
|
73
|
+
"minimatch": "^9.0.5"
|
|
73
74
|
}
|
|
74
75
|
}
|
package/src/cli/cli.test.ts
CHANGED
|
@@ -444,7 +444,7 @@ test('validate - references other build info dir by command with fully qualified
|
|
|
444
444
|
t.snapshot(expectation.join('\n'));
|
|
445
445
|
});
|
|
446
446
|
|
|
447
|
-
|
|
447
|
+
async function setupMultipleBuildInfoDirsTest(t: ExecutionContext<unknown>) {
|
|
448
448
|
const temp = await getTempDir(t);
|
|
449
449
|
|
|
450
450
|
const v1Dir = path.join(temp, 'build-info-v1');
|
|
@@ -467,6 +467,11 @@ test('validate - references multiple build info dirs by annotation', async t =>
|
|
|
467
467
|
);
|
|
468
468
|
await fs.writeFile(path.join(v2BranchDir, 'ok.json'), JSON.stringify(v2BranchBuildInfoOk));
|
|
469
469
|
await fs.writeFile(path.join(v2BranchDir, 'bad.json'), JSON.stringify(v2BranchBuildInfoBad));
|
|
470
|
+
return { v2BranchDir, v1Dir, v2Dir };
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
test('validate - references multiple build info dirs by annotation', async t => {
|
|
474
|
+
const { v2BranchDir, v1Dir, v2Dir } = await setupMultipleBuildInfoDirsTest(t);
|
|
470
475
|
|
|
471
476
|
const error = await t.throwsAsync(
|
|
472
477
|
execAsync(`${CLI} validate ${v2BranchDir} --referenceBuildInfoDirs ${v1Dir},${v2Dir}`),
|
|
@@ -475,6 +480,16 @@ test('validate - references multiple build info dirs by annotation', async t =>
|
|
|
475
480
|
t.snapshot(expectation.join('\n'));
|
|
476
481
|
});
|
|
477
482
|
|
|
483
|
+
test('validate - references multiple build info dirs by annotation - same arg multiple times', async t => {
|
|
484
|
+
const { v2BranchDir, v1Dir, v2Dir } = await setupMultipleBuildInfoDirsTest(t);
|
|
485
|
+
|
|
486
|
+
const error = await t.throwsAsync(
|
|
487
|
+
execAsync(`${CLI} validate ${v2BranchDir} --referenceBuildInfoDirs ${v1Dir} --referenceBuildInfoDirs ${v2Dir}`),
|
|
488
|
+
);
|
|
489
|
+
const expectation: string[] = [`Stdout: ${(error as any).stdout}`, `Stderr: ${(error as any).stderr}`];
|
|
490
|
+
t.snapshot(expectation.join('\n'));
|
|
491
|
+
});
|
|
492
|
+
|
|
478
493
|
test('validate - references other build info dir by annotation - ok', async t => {
|
|
479
494
|
const temp = await getTempDir(t);
|
|
480
495
|
const referenceDir = path.join(temp, 'build-info-v1');
|
|
@@ -572,3 +587,128 @@ test('validate - contract must not have build info dir name - fully qualified',
|
|
|
572
587
|
error?.message,
|
|
573
588
|
);
|
|
574
589
|
});
|
|
590
|
+
|
|
591
|
+
test('validate - excludes by pattern - no match', async t => {
|
|
592
|
+
const temp = await getTempDir(t);
|
|
593
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/excludes/UsesAbstractUUPS.sol:UsesAbstractUUPS`);
|
|
594
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
595
|
+
|
|
596
|
+
const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --exclude "**/NoMatch.sol"`));
|
|
597
|
+
const expectation: string[] = [`Stdout: ${(error as any).stdout}`, `Stderr: ${(error as any).stderr}`];
|
|
598
|
+
t.snapshot(expectation.join('\n'));
|
|
599
|
+
});
|
|
600
|
+
|
|
601
|
+
test('validate - excludes by pattern - some match', async t => {
|
|
602
|
+
const temp = await getTempDir(t);
|
|
603
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/excludes/UsesAbstractUUPS.sol:UsesAbstractUUPS`);
|
|
604
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
605
|
+
|
|
606
|
+
const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --exclude "**/Abstract*.sol"`));
|
|
607
|
+
const expectation: string[] = [`Stdout: ${(error as any).stdout}`, `Stderr: ${(error as any).stderr}`];
|
|
608
|
+
t.snapshot(expectation.join('\n'));
|
|
609
|
+
});
|
|
610
|
+
|
|
611
|
+
test('validate - excludes by pattern - all match', async t => {
|
|
612
|
+
const temp = await getTempDir(t);
|
|
613
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/excludes/UsesAbstractUUPS.sol:UsesAbstractUUPS`);
|
|
614
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
615
|
+
|
|
616
|
+
const output = await execAsync(`${CLI} validate ${temp} --exclude "**/excludes/*.sol"`);
|
|
617
|
+
t.snapshot(output);
|
|
618
|
+
});
|
|
619
|
+
|
|
620
|
+
test('validate - excludes by pattern - all match using commas within glob', async t => {
|
|
621
|
+
const temp = await getTempDir(t);
|
|
622
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/excludes/UsesAbstractUUPS.sol:UsesAbstractUUPS`);
|
|
623
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
624
|
+
|
|
625
|
+
const output = await execAsync(`${CLI} validate ${temp} --exclude "**/excludes/{Abstract*,UsesAbstractUUPS}.sol"`);
|
|
626
|
+
t.snapshot(output);
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
test('validate - exclude passed multiple times', async t => {
|
|
630
|
+
const temp = await getTempDir(t);
|
|
631
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/excludes/UsesAbstractUUPS.sol:UsesAbstractUUPS`);
|
|
632
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
633
|
+
|
|
634
|
+
const output = await execAsync(
|
|
635
|
+
`${CLI} validate ${temp} --exclude "**/excludes/Abstract*.sol" --exclude "**/UsesAbstractUUPS.sol"`,
|
|
636
|
+
);
|
|
637
|
+
t.snapshot(output);
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
test('validate - excludes specified contract', async t => {
|
|
641
|
+
const temp = await getTempDir(t);
|
|
642
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:BecomesBadLayout`);
|
|
643
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
644
|
+
|
|
645
|
+
const error = await t.throwsAsync(
|
|
646
|
+
execAsync(`${CLI} validate ${temp} --contract BecomesBadLayout --reference StorageV1 --exclude "**/Validate.sol"`),
|
|
647
|
+
);
|
|
648
|
+
t.true(
|
|
649
|
+
error?.message.includes('No validation report found for contract contracts/test/cli/Validate.sol:BecomesBadLayout'),
|
|
650
|
+
error?.message,
|
|
651
|
+
);
|
|
652
|
+
});
|
|
653
|
+
|
|
654
|
+
test('validate - excludes UpgradeableBeacon and its parents by default', async t => {
|
|
655
|
+
const temp = await getTempDir(t);
|
|
656
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/excludes/ImportVersionsAndBeacon.sol:Dummy`);
|
|
657
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
658
|
+
|
|
659
|
+
const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp}`));
|
|
660
|
+
const expectation: string[] = [`Stdout: ${(error as any).stdout}`, `Stderr: ${(error as any).stderr}`];
|
|
661
|
+
t.snapshot(expectation.join('\n'));
|
|
662
|
+
});
|
|
663
|
+
|
|
664
|
+
test('validate - excludes UpgradeableBeacon and its parents by default, and excludes one contract from layout comparisions', async t => {
|
|
665
|
+
const temp = await getTempDir(t);
|
|
666
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/excludes/ImportVersionsAndBeacon.sol:Dummy`);
|
|
667
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
668
|
+
|
|
669
|
+
const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --exclude "**/V2Bad1.sol"`));
|
|
670
|
+
const expectation: string[] = [`Stdout: ${(error as any).stdout}`, `Stderr: ${(error as any).stderr}`];
|
|
671
|
+
t.snapshot(expectation.join('\n'));
|
|
672
|
+
});
|
|
673
|
+
|
|
674
|
+
test('validate - self reference by annotation', async t => {
|
|
675
|
+
const temp = await getTempDir(t);
|
|
676
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/SelfReferences.sol:SelfReference`);
|
|
677
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
678
|
+
|
|
679
|
+
const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --contract SelfReference`));
|
|
680
|
+
t.assert(error?.message.includes('must not use itself as a reference'), error?.message);
|
|
681
|
+
});
|
|
682
|
+
|
|
683
|
+
test('validate - self reference by fully qualified annotation', async t => {
|
|
684
|
+
const temp = await getTempDir(t);
|
|
685
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/SelfReferences.sol:SelfReference`);
|
|
686
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
687
|
+
|
|
688
|
+
const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --contract SelfReferenceFullyQualified`));
|
|
689
|
+
t.assert(error?.message.includes('must not use itself as a reference'), error?.message);
|
|
690
|
+
});
|
|
691
|
+
|
|
692
|
+
test('validate - self reference by option', async t => {
|
|
693
|
+
const temp = await getTempDir(t);
|
|
694
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/SelfReferences.sol:SelfReference`);
|
|
695
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
696
|
+
|
|
697
|
+
const error = await t.throwsAsync(
|
|
698
|
+
execAsync(`${CLI} validate ${temp} --contract NoAnnotation --reference NoAnnotation`),
|
|
699
|
+
);
|
|
700
|
+
t.assert(error?.message.includes('must not use itself as a reference'), error?.message);
|
|
701
|
+
});
|
|
702
|
+
|
|
703
|
+
test('validate - self reference by fully qualified option', async t => {
|
|
704
|
+
const temp = await getTempDir(t);
|
|
705
|
+
const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/SelfReferences.sol:SelfReference`);
|
|
706
|
+
await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
|
|
707
|
+
|
|
708
|
+
const error = await t.throwsAsync(
|
|
709
|
+
execAsync(
|
|
710
|
+
`${CLI} validate ${temp} --contract NoAnnotation --reference contracts/test/cli/SelfReferences.sol:NoAnnotation`,
|
|
711
|
+
),
|
|
712
|
+
);
|
|
713
|
+
t.assert(error?.message.includes('must not use itself as a reference'), error?.message);
|
|
714
|
+
});
|
package/src/cli/cli.test.ts.md
CHANGED
|
@@ -19,8 +19,9 @@ Generated by [AVA](https://avajs.dev).
|
|
|
19
19
|
--contract <CONTRACT> The name or fully qualified name of the contract to validate. If not specified, all upgradeable contracts in the build info directory will be validated.␊
|
|
20
20
|
--reference <REFERENCE_CONTRACT> Can only be used when the --contract option is also provided. The name or fully qualified name of the reference contract to use for storage layout comparisons. If not specified, uses the @custom:oz-upgrades-from annotation if it is defined in the contract that is being validated.␊
|
|
21
21
|
--requireReference Can only be used when the --contract option is also provided. Not compatible with --unsafeSkipStorageCheck. If specified, requires either the --reference option to be provided or the contract to have a @custom:oz-upgrades-from annotation.␊
|
|
22
|
-
--referenceBuildInfoDirs Optional paths of additional build info directories from previous versions of the project to use for storage layout comparisons. When using this option, refer to one of these directories using prefix '<dirName>:' before the contract name or fully qualified name in the --reference option or @custom:oz-upgrades-from annotation, where <dirName> is the directory short name. Each directory short name must be unique, including compared to the main build info directory.␊
|
|
23
|
-
--
|
|
22
|
+
--referenceBuildInfoDirs "<BUILD_INFO_DIR>[,<BUILD_INFO_DIR>...]" Optional paths of additional build info directories from previous versions of the project to use for storage layout comparisons. When using this option, refer to one of these directories using prefix '<dirName>:' before the contract name or fully qualified name in the --reference option or @custom:oz-upgrades-from annotation, where <dirName> is the directory short name. Each directory short name must be unique, including compared to the main build info directory. If passing in multiple directories, separate them with commas or call the option multiple times, once for each directory.␊
|
|
23
|
+
--exclude "<GLOB_PATTERN>" [--exclude "<GLOB_PATTERN>"...] Exclude validations for contracts in source file paths that match any of the given glob patterns. For example, --exclude "contracts/mocks/**/*.sol". Does not apply to reference contracts. If passing in multiple patterns, call the option multiple times, once for each pattern.␊
|
|
24
|
+
--unsafeAllow "<VALIDATION_ERROR>[,<VALIDATION_ERROR>...]" Selectively disable one or more validation errors. Comma-separated list with one or more of the following: state-variable-assignment, state-variable-immutable, external-library-linking, struct-definition, enum-definition, constructor, delegatecall, selfdestruct, missing-public-upgradeto, internal-function-storage␊
|
|
24
25
|
--unsafeAllowRenames Configure storage layout check to allow variable renaming.␊
|
|
25
26
|
--unsafeSkipStorageCheck Skips checking for storage layout compatibility errors. This is a dangerous option meant to be used as a last resort.␊
|
|
26
27
|
`
|
|
@@ -40,8 +41,9 @@ Generated by [AVA](https://avajs.dev).
|
|
|
40
41
|
--contract <CONTRACT> The name or fully qualified name of the contract to validate. If not specified, all upgradeable contracts in the build info directory will be validated.␊
|
|
41
42
|
--reference <REFERENCE_CONTRACT> Can only be used when the --contract option is also provided. The name or fully qualified name of the reference contract to use for storage layout comparisons. If not specified, uses the @custom:oz-upgrades-from annotation if it is defined in the contract that is being validated.␊
|
|
42
43
|
--requireReference Can only be used when the --contract option is also provided. Not compatible with --unsafeSkipStorageCheck. If specified, requires either the --reference option to be provided or the contract to have a @custom:oz-upgrades-from annotation.␊
|
|
43
|
-
--referenceBuildInfoDirs Optional paths of additional build info directories from previous versions of the project to use for storage layout comparisons. When using this option, refer to one of these directories using prefix '<dirName>:' before the contract name or fully qualified name in the --reference option or @custom:oz-upgrades-from annotation, where <dirName> is the directory short name. Each directory short name must be unique, including compared to the main build info directory.␊
|
|
44
|
-
--
|
|
44
|
+
--referenceBuildInfoDirs "<BUILD_INFO_DIR>[,<BUILD_INFO_DIR>...]" Optional paths of additional build info directories from previous versions of the project to use for storage layout comparisons. When using this option, refer to one of these directories using prefix '<dirName>:' before the contract name or fully qualified name in the --reference option or @custom:oz-upgrades-from annotation, where <dirName> is the directory short name. Each directory short name must be unique, including compared to the main build info directory. If passing in multiple directories, separate them with commas or call the option multiple times, once for each directory.␊
|
|
45
|
+
--exclude "<GLOB_PATTERN>" [--exclude "<GLOB_PATTERN>"...] Exclude validations for contracts in source file paths that match any of the given glob patterns. For example, --exclude "contracts/mocks/**/*.sol". Does not apply to reference contracts. If passing in multiple patterns, call the option multiple times, once for each pattern.␊
|
|
46
|
+
--unsafeAllow "<VALIDATION_ERROR>[,<VALIDATION_ERROR>...]" Selectively disable one or more validation errors. Comma-separated list with one or more of the following: state-variable-assignment, state-variable-immutable, external-library-linking, struct-definition, enum-definition, constructor, delegatecall, selfdestruct, missing-public-upgradeto, internal-function-storage␊
|
|
45
47
|
--unsafeAllowRenames Configure storage layout check to allow variable renaming.␊
|
|
46
48
|
--unsafeSkipStorageCheck Skips checking for storage layout compatibility errors. This is a dangerous option meant to be used as a last resort.␊
|
|
47
49
|
`
|
|
@@ -383,6 +385,20 @@ Generated by [AVA](https://avajs.dev).
|
|
|
383
385
|
|
|
384
386
|
## validate - references multiple build info dirs by annotation
|
|
385
387
|
|
|
388
|
+
> Snapshot 1
|
|
389
|
+
|
|
390
|
+
`Stdout: ✘ contracts/test/cli/ValidateBuildInfoV2_Branch_Bad.sol:MyContract (upgrades from build-info-v2:contracts/test/cli/ValidateBuildInfoV2_Ok.sol:MyContract)␊
|
|
391
|
+
␊
|
|
392
|
+
contracts/test/cli/ValidateBuildInfoV2_Branch_Bad.sol:8: Renamed \`z\` to \`zBranch\`␊
|
|
393
|
+
␊
|
|
394
|
+
✔ contracts/test/cli/ValidateBuildInfoV2_Branch_Ok.sol:MyContract (upgrades from build-info-v1:contracts/test/cli/ValidateBuildInfoV1.sol:MyContract)␊
|
|
395
|
+
␊
|
|
396
|
+
FAILED (2 upgradeable contracts detected, 1 passed, 1 failed)␊
|
|
397
|
+
␊
|
|
398
|
+
Stderr: `
|
|
399
|
+
|
|
400
|
+
## validate - references multiple build info dirs by annotation - same arg multiple times
|
|
401
|
+
|
|
386
402
|
> Snapshot 1
|
|
387
403
|
|
|
388
404
|
`Stdout: ✘ contracts/test/cli/ValidateBuildInfoV2_Branch_Bad.sol:MyContract (upgrades from build-info-v2:contracts/test/cli/ValidateBuildInfoV2_Ok.sol:MyContract)␊
|
|
@@ -423,3 +439,119 @@ Generated by [AVA](https://avajs.dev).
|
|
|
423
439
|
FAILED␊
|
|
424
440
|
␊
|
|
425
441
|
Stderr: `
|
|
442
|
+
|
|
443
|
+
## validate - excludes by pattern - no match
|
|
444
|
+
|
|
445
|
+
> Snapshot 1
|
|
446
|
+
|
|
447
|
+
`Stdout: ✘ contracts/test/cli/excludes/UsesAbstractUUPS.sol:UsesAbstractUUPS␊
|
|
448
|
+
␊
|
|
449
|
+
contracts/test/cli/excludes/UsesAbstractUUPS.sol:9: Contract \`UsesAbstractUUPS\` has a constructor␊
|
|
450
|
+
Define an initializer instead␊
|
|
451
|
+
https://zpl.in/upgrades/error-001␊
|
|
452
|
+
␊
|
|
453
|
+
contracts/test/cli/excludes/AbstractUUPS.sol:11: Contract \`AbstractUUPS\` has a constructor␊
|
|
454
|
+
Define an initializer instead␊
|
|
455
|
+
https://zpl.in/upgrades/error-001␊
|
|
456
|
+
␊
|
|
457
|
+
contracts/test/cli/excludes/AbstractUUPS.sol:9: Variable \`z\` is immutable and will be initialized on the implementation␊
|
|
458
|
+
If by design, annotate with '@custom:oz-upgrades-unsafe-allow state-variable-immutable'␊
|
|
459
|
+
Otherwise, consider a constant variable or use a mutable variable instead␊
|
|
460
|
+
https://zpl.in/upgrades/error-005␊
|
|
461
|
+
␊
|
|
462
|
+
contracts/test/cli/excludes/Abstract2.sol:7: Contract \`Abstract2\` has a constructor␊
|
|
463
|
+
Define an initializer instead␊
|
|
464
|
+
https://zpl.in/upgrades/error-001␊
|
|
465
|
+
␊
|
|
466
|
+
contracts/test/cli/excludes/Abstract2.sol:5: Variable \`y\` is immutable and will be initialized on the implementation␊
|
|
467
|
+
If by design, annotate with '@custom:oz-upgrades-unsafe-allow state-variable-immutable'␊
|
|
468
|
+
Otherwise, consider a constant variable or use a mutable variable instead␊
|
|
469
|
+
https://zpl.in/upgrades/error-005␊
|
|
470
|
+
␊
|
|
471
|
+
contracts/test/cli/excludes/Abstract1.sol:7: Contract \`Abstract1\` has a constructor␊
|
|
472
|
+
Define an initializer instead␊
|
|
473
|
+
https://zpl.in/upgrades/error-001␊
|
|
474
|
+
␊
|
|
475
|
+
contracts/test/cli/excludes/Abstract1.sol:5: Variable \`x\` is immutable and will be initialized on the implementation␊
|
|
476
|
+
If by design, annotate with '@custom:oz-upgrades-unsafe-allow state-variable-immutable'␊
|
|
477
|
+
Otherwise, consider a constant variable or use a mutable variable instead␊
|
|
478
|
+
https://zpl.in/upgrades/error-005␊
|
|
479
|
+
␊
|
|
480
|
+
FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
|
|
481
|
+
␊
|
|
482
|
+
Stderr: `
|
|
483
|
+
|
|
484
|
+
## validate - excludes by pattern - some match
|
|
485
|
+
|
|
486
|
+
> Snapshot 1
|
|
487
|
+
|
|
488
|
+
`Stdout: ✘ contracts/test/cli/excludes/UsesAbstractUUPS.sol:UsesAbstractUUPS␊
|
|
489
|
+
␊
|
|
490
|
+
contracts/test/cli/excludes/UsesAbstractUUPS.sol:9: Contract \`UsesAbstractUUPS\` has a constructor␊
|
|
491
|
+
Define an initializer instead␊
|
|
492
|
+
https://zpl.in/upgrades/error-001␊
|
|
493
|
+
␊
|
|
494
|
+
FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
|
|
495
|
+
␊
|
|
496
|
+
Stderr: `
|
|
497
|
+
|
|
498
|
+
## validate - excludes by pattern - all match
|
|
499
|
+
|
|
500
|
+
> Snapshot 1
|
|
501
|
+
|
|
502
|
+
{
|
|
503
|
+
stderr: '',
|
|
504
|
+
stdout: `No upgradeable contracts detected.␊
|
|
505
|
+
`,
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
## validate - excludes by pattern - all match using commas within glob
|
|
509
|
+
|
|
510
|
+
> Snapshot 1
|
|
511
|
+
|
|
512
|
+
{
|
|
513
|
+
stderr: '',
|
|
514
|
+
stdout: `No upgradeable contracts detected.␊
|
|
515
|
+
`,
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
## validate - exclude passed multiple times
|
|
519
|
+
|
|
520
|
+
> Snapshot 1
|
|
521
|
+
|
|
522
|
+
{
|
|
523
|
+
stderr: '',
|
|
524
|
+
stdout: `No upgradeable contracts detected.␊
|
|
525
|
+
`,
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
## validate - excludes UpgradeableBeacon and its parents by default
|
|
529
|
+
|
|
530
|
+
> Snapshot 1
|
|
531
|
+
|
|
532
|
+
`Stdout: ✘ contracts/test/cli/excludes/V2Bad1.sol:V2Bad1 (upgrades from contracts/test/cli/excludes/V1.sol:V1)␊
|
|
533
|
+
␊
|
|
534
|
+
V1: Deleted \`x\`␊
|
|
535
|
+
> Keep the variable even if unused␊
|
|
536
|
+
␊
|
|
537
|
+
✘ contracts/test/cli/excludes/V2Bad2.sol:V2Bad2 (upgrades from contracts/test/cli/excludes/V1.sol:V1)␊
|
|
538
|
+
␊
|
|
539
|
+
V1: Deleted \`x\`␊
|
|
540
|
+
> Keep the variable even if unused␊
|
|
541
|
+
␊
|
|
542
|
+
FAILED (2 upgradeable contracts detected, 0 passed, 2 failed)␊
|
|
543
|
+
␊
|
|
544
|
+
Stderr: `
|
|
545
|
+
|
|
546
|
+
## validate - excludes UpgradeableBeacon and its parents by default, and excludes one contract from layout comparisions
|
|
547
|
+
|
|
548
|
+
> Snapshot 1
|
|
549
|
+
|
|
550
|
+
`Stdout: ✘ contracts/test/cli/excludes/V2Bad2.sol:V2Bad2 (upgrades from contracts/test/cli/excludes/V1.sol:V1)␊
|
|
551
|
+
␊
|
|
552
|
+
V1: Deleted \`x\`␊
|
|
553
|
+
> Keep the variable even if unused␊
|
|
554
|
+
␊
|
|
555
|
+
FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
|
|
556
|
+
␊
|
|
557
|
+
Stderr: `
|
package/src/cli/cli.test.ts.snap
CHANGED
|
Binary file
|