@openzeppelin/upgrades-core 1.30.1 → 1.31.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.
Files changed (36) hide show
  1. package/dist/cli/cli.test.js +51 -0
  2. package/dist/cli/cli.test.js.map +1 -1
  3. package/dist/cli/validate/contract-report.d.ts +1 -1
  4. package/dist/cli/validate/contract-report.d.ts.map +1 -1
  5. package/dist/cli/validate/contract-report.js +4 -1
  6. package/dist/cli/validate/contract-report.js.map +1 -1
  7. package/dist/cli/validate/project-report.d.ts +3 -2
  8. package/dist/cli/validate/project-report.d.ts.map +1 -1
  9. package/dist/cli/validate/project-report.js +12 -6
  10. package/dist/cli/validate/project-report.js.map +1 -1
  11. package/dist/cli/validate/project-report.test.js +1 -1
  12. package/dist/cli/validate/project-report.test.js.map +1 -1
  13. package/dist/cli/validate/validate-upgrade-safety.d.ts +5 -1
  14. package/dist/cli/validate/validate-upgrade-safety.d.ts.map +1 -1
  15. package/dist/cli/validate/validate-upgrade-safety.js +18 -5
  16. package/dist/cli/validate/validate-upgrade-safety.js.map +1 -1
  17. package/dist/cli/validate/validate-upgrade-safety.test.js +8 -0
  18. package/dist/cli/validate/validate-upgrade-safety.test.js.map +1 -1
  19. package/dist/cli/validate/validations.test.js +2 -1
  20. package/dist/cli/validate/validations.test.js.map +1 -1
  21. package/dist/cli/validate.d.ts.map +1 -1
  22. package/dist/cli/validate.js +15 -6
  23. package/dist/cli/validate.js.map +1 -1
  24. package/package.json +2 -2
  25. package/src/cli/cli.test.ts +76 -0
  26. package/src/cli/cli.test.ts.md +65 -9
  27. package/src/cli/cli.test.ts.snap +0 -0
  28. package/src/cli/validate/contract-report.ts +6 -2
  29. package/src/cli/validate/project-report.test.ts +1 -1
  30. package/src/cli/validate/project-report.test.ts.md +1 -1
  31. package/src/cli/validate/project-report.test.ts.snap +0 -0
  32. package/src/cli/validate/project-report.ts +18 -8
  33. package/src/cli/validate/validate-upgrade-safety.test.ts +13 -1
  34. package/src/cli/validate/validate-upgrade-safety.ts +20 -6
  35. package/src/cli/validate/validations.test.ts +2 -1
  36. package/src/cli/validate.ts +15 -6
@@ -125,6 +125,50 @@ async function getTempDir(t) {
125
125
  const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --contract BecomesBadLayout --reference NonExistent`));
126
126
  t.true(error?.message.includes('Could not find contract NonExistent.'), error?.message);
127
127
  });
128
+ (0, ava_1.default)('validate - requireReference - no contract option', async (t) => {
129
+ const temp = await getTempDir(t);
130
+ const buildInfo = await hardhat_1.artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:StorageV1`);
131
+ await fs_1.promises.writeFile(path_1.default.join(temp, 'validate.json'), JSON.stringify(buildInfo));
132
+ const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --requireReference`));
133
+ t.true(error?.message.includes('The --requireReference option can only be used along with the --contract option.'), error?.message);
134
+ });
135
+ (0, ava_1.default)('validate - requireReference - no reference, no upgradesFrom', async (t) => {
136
+ const temp = await getTempDir(t);
137
+ const buildInfo = await hardhat_1.artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:StorageV1`);
138
+ await fs_1.promises.writeFile(path_1.default.join(temp, 'validate.json'), JSON.stringify(buildInfo));
139
+ const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --contract StorageV1 --requireReference`));
140
+ t.true(error?.message.includes('does not specify what contract it upgrades from'), error?.message);
141
+ });
142
+ (0, ava_1.default)('validate - requireReference - no reference, has upgradesFrom - safe', async (t) => {
143
+ const temp = await getTempDir(t);
144
+ const buildInfo = await hardhat_1.artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:BecomesSafe`);
145
+ await fs_1.promises.writeFile(path_1.default.join(temp, 'validate.json'), JSON.stringify(buildInfo));
146
+ const output = (await execAsync(`${CLI} validate ${temp} --contract BecomesSafe --requireReference`)).stdout;
147
+ t.snapshot(output);
148
+ });
149
+ (0, ava_1.default)('validate - requireReference - no reference, has upgradesFrom - unsafe', async (t) => {
150
+ const temp = await getTempDir(t);
151
+ const buildInfo = await hardhat_1.artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:BecomesBadLayout`);
152
+ await fs_1.promises.writeFile(path_1.default.join(temp, 'validate.json'), JSON.stringify(buildInfo));
153
+ const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --contract BecomesBadLayout --requireReference`));
154
+ const expectation = [`Stdout: ${error.stdout}`, `Stderr: ${error.stderr}`];
155
+ t.snapshot(expectation.join('\n'));
156
+ });
157
+ (0, ava_1.default)('validate - requireReference - has reference - unsafe', async (t) => {
158
+ const temp = await getTempDir(t);
159
+ const buildInfo = await hardhat_1.artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:StorageV2_Bad_NoAnnotation`);
160
+ await fs_1.promises.writeFile(path_1.default.join(temp, 'validate.json'), JSON.stringify(buildInfo));
161
+ const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --contract StorageV2_Bad_NoAnnotation --reference StorageV1 --requireReference`));
162
+ const expectation = [`Stdout: ${error.stdout}`, `Stderr: ${error.stderr}`];
163
+ t.snapshot(expectation.join('\n'));
164
+ });
165
+ (0, ava_1.default)('validate - requireReference - has reference - safe', async (t) => {
166
+ const temp = await getTempDir(t);
167
+ const buildInfo = await hardhat_1.artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:StorageV2_Ok_NoAnnotation`);
168
+ await fs_1.promises.writeFile(path_1.default.join(temp, 'validate.json'), JSON.stringify(buildInfo));
169
+ const output = (await execAsync(`${CLI} validate ${temp} --contract StorageV2_Ok_NoAnnotation --reference StorageV1 --requireReference`)).stdout;
170
+ t.snapshot(output);
171
+ });
128
172
  (0, ava_1.default)('validate - no upgradeable', async (t) => {
129
173
  const temp = await getTempDir(t);
130
174
  const buildInfo = await hardhat_1.artifacts.getBuildInfo(`contracts/test/cli/Storage088.sol:Storage088`);
@@ -139,4 +183,11 @@ async function getTempDir(t) {
139
183
  const output = (await execAsync(`${CLI} validate ${temp}`)).stdout;
140
184
  t.snapshot(output);
141
185
  });
186
+ (0, ava_1.default)('validate - single contract - ok', async (t) => {
187
+ const temp = await getTempDir(t);
188
+ const buildInfo = await hardhat_1.artifacts.getBuildInfo(`contracts/test/cli/Annotation.sol:Annotation`);
189
+ await fs_1.promises.writeFile(path_1.default.join(temp, 'validate.json'), JSON.stringify(buildInfo));
190
+ const output = (await execAsync(`${CLI} validate ${temp} --contract Annotation`)).stdout;
191
+ t.snapshot(output);
192
+ });
142
193
  //# sourceMappingURL=cli.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../src/cli/cli.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../src/cli/cli.test.ts"],"names":[],"mappings":"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"}
@@ -29,5 +29,5 @@ export declare class UpgradeableContractReport implements Report {
29
29
  * @param specifiedContracts If provided, only the specified contract (upgrading from its reference contract) will be reported.
30
30
  * @returns The upgradeable contract reports.
31
31
  */
32
- export declare function getContractReports(sourceContracts: SourceContract[], opts: ValidateUpgradeSafetyOptions, specifiedContracts?: SpecifiedContracts): UpgradeableContractReport[];
32
+ export declare function getContractReports(sourceContracts: SourceContract[], opts: Required<ValidateUpgradeSafetyOptions>, specifiedContracts?: SpecifiedContracts): UpgradeableContractReport[];
33
33
  //# sourceMappingURL=contract-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract-report.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/contract-report.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,4BAA4B,EAE5B,8BAA8B,EAE/B,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,MAAM;IAEpD,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IACtC,QAAQ,CAAC,gBAAgB,EAAE,8BAA8B;IACzD,QAAQ,CAAC,mBAAmB,EAAE,yBAAyB,GAAG,SAAS;gBAH1D,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,gBAAgB,EAAE,8BAA8B,EAChD,mBAAmB,EAAE,yBAAyB,GAAG,SAAS;IAGrE,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED;;OAEG;IACH,OAAO,CAAC,KAAK,UAAO,GAAG,MAAM;CAiB9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,cAAc,EAAE,EACjC,IAAI,EAAE,4BAA4B,EAClC,kBAAkB,CAAC,EAAE,kBAAkB,+BAuBxC"}
1
+ {"version":3,"file":"contract-report.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/contract-report.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,4BAA4B,EAE5B,8BAA8B,EAE/B,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,MAAM;IAEpD,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IACtC,QAAQ,CAAC,gBAAgB,EAAE,8BAA8B;IACzD,QAAQ,CAAC,mBAAmB,EAAE,yBAAyB,GAAG,SAAS;gBAH1D,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,gBAAgB,EAAE,8BAA8B,EAChD,mBAAmB,EAAE,yBAAyB,GAAG,SAAS;IAGrE,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED;;OAEG;IACH,OAAO,CAAC,KAAK,UAAO,GAAG,MAAM;CAiB9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,cAAc,EAAE,EACjC,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC5C,kBAAkB,CAAC,EAAE,kBAAkB,+BA2BxC"}
@@ -61,7 +61,10 @@ function getContractReports(sourceContracts, opts, specifiedContracts) {
61
61
  const contractsToReport = specifiedContracts !== undefined ? [specifiedContracts.contract] : sourceContracts;
62
62
  for (const sourceContract of contractsToReport) {
63
63
  const upgradeabilityAssessment = (0, upgradeability_assessment_1.getUpgradeabilityAssessment)(sourceContract, sourceContracts, specifiedContracts?.reference);
64
- if (specifiedContracts !== undefined || upgradeabilityAssessment.upgradeable) {
64
+ if (opts.requireReference && upgradeabilityAssessment.referenceContract === undefined) {
65
+ throw new Error(`The contract ${sourceContract.fullyQualifiedName} does not specify what contract it upgrades from. Add the \`@custom:oz-upgrades-from <REFERENCE_CONTRACT>\` annotation to the contract, or include the reference contract name when running the validate command or function.`);
66
+ }
67
+ else if (specifiedContracts !== undefined || upgradeabilityAssessment.upgradeable) {
65
68
  const reference = upgradeabilityAssessment.referenceContract;
66
69
  const kind = upgradeabilityAssessment.uups ? 'uups' : 'transparent';
67
70
  const report = getUpgradeableContractReport(sourceContract, reference, { ...opts, kind: kind });
@@ -1 +1 @@
1
- {"version":3,"file":"contract-report.js","sourceRoot":"","sources":["../../../src/cli/validate/contract-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract-report.js","sourceRoot":"","sources":["../../../src/cli/validate/contract-report.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import { UpgradeableContractReport } from './contract-report';
2
2
  import { Report } from '../../standalone';
3
3
  export declare class ProjectReport implements Report {
4
4
  readonly upgradeableContractReports: UpgradeableContractReport[];
5
- constructor(upgradeableContractReports: UpgradeableContractReport[]);
5
+ readonly specifiedContract?: boolean | undefined;
6
+ constructor(upgradeableContractReports: UpgradeableContractReport[], specifiedContract?: boolean | undefined);
6
7
  get ok(): boolean;
7
8
  explain(color?: boolean): string;
8
9
  /**
@@ -14,5 +15,5 @@ export declare class ProjectReport implements Report {
14
15
  */
15
16
  get numTotal(): number;
16
17
  }
17
- export declare function getProjectReport(upgradeableContractReports: UpgradeableContractReport[]): ProjectReport;
18
+ export declare function getProjectReport(upgradeableContractReports: UpgradeableContractReport[], specifiedContract?: boolean): ProjectReport;
18
19
  //# sourceMappingURL=project-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-report.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/project-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,qBAAa,aAAc,YAAW,MAAM;IAC9B,QAAQ,CAAC,0BAA0B,EAAE,yBAAyB,EAAE;gBAAvD,0BAA0B,EAAE,yBAAyB,EAAE;IAE5E,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,OAAO,CAAC,KAAK,UAAO,GAAG,MAAM;IAgB7B;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;CACF;AAED,wBAAgB,gBAAgB,CAAC,0BAA0B,EAAE,yBAAyB,EAAE,GAAG,aAAa,CAEvG"}
1
+ {"version":3,"file":"project-report.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/project-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,qBAAa,aAAc,YAAW,MAAM;IAExC,QAAQ,CAAC,0BAA0B,EAAE,yBAAyB,EAAE;IAChE,QAAQ,CAAC,iBAAiB,CAAC;gBADlB,0BAA0B,EAAE,yBAAyB,EAAE,EACvD,iBAAiB,CAAC,qBAAS;IAGtC,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,OAAO,CAAC,KAAK,UAAO,GAAG,MAAM;IAoB7B;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;CACF;AAED,wBAAgB,gBAAgB,CAC9B,0BAA0B,EAAE,yBAAyB,EAAE,EACvD,iBAAiB,CAAC,EAAE,OAAO,GAC1B,aAAa,CAEf"}
@@ -2,8 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getProjectReport = exports.ProjectReport = void 0;
4
4
  class ProjectReport {
5
- constructor(upgradeableContractReports) {
5
+ constructor(upgradeableContractReports, specifiedContract) {
6
6
  this.upgradeableContractReports = upgradeableContractReports;
7
+ this.specifiedContract = specifiedContract;
7
8
  }
8
9
  get ok() {
9
10
  return this.upgradeableContractReports.every(r => r.ok);
@@ -14,10 +15,15 @@ class ProjectReport {
14
15
  }
15
16
  else {
16
17
  const lines = this.upgradeableContractReports.map(r => r.explain(color));
17
- const numFailed = this.numTotal - this.numPassed;
18
- const plural = numFailed === 1 ? '' : 's';
19
18
  const status = this.ok ? 'SUCCESS' : 'FAILED';
20
- lines.push(`${status} (${this.numTotal} upgradeable contract${plural} detected, ${this.numPassed} passed, ${numFailed} failed)`);
19
+ if (this.specifiedContract) {
20
+ lines.push(`${status}`);
21
+ }
22
+ else {
23
+ const numFailed = this.numTotal - this.numPassed;
24
+ const plural = this.numTotal === 1 ? '' : 's';
25
+ lines.push(`${status} (${this.numTotal} upgradeable contract${plural} detected, ${this.numPassed} passed, ${numFailed} failed)`);
26
+ }
21
27
  return lines.join('\n\n');
22
28
  }
23
29
  }
@@ -35,8 +41,8 @@ class ProjectReport {
35
41
  }
36
42
  }
37
43
  exports.ProjectReport = ProjectReport;
38
- function getProjectReport(upgradeableContractReports) {
39
- return new ProjectReport(upgradeableContractReports);
44
+ function getProjectReport(upgradeableContractReports, specifiedContract) {
45
+ return new ProjectReport(upgradeableContractReports, specifiedContract);
40
46
  }
41
47
  exports.getProjectReport = getProjectReport;
42
48
  //# sourceMappingURL=project-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-report.js","sourceRoot":"","sources":["../../../src/cli/validate/project-report.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IACxB,YAAqB,0BAAuD;QAAvD,+BAA0B,GAA1B,0BAA0B,CAA6B;IAAG,CAAC;IAEhF,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,IAAI;QAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;YACvB,OAAO,oCAAoC,CAAC;SAC7C;aAAM;YACL,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YACjD,MAAM,MAAM,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE9C,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,KAAK,IAAI,CAAC,QAAQ,wBAAwB,MAAM,cAAc,IAAI,CAAC,SAAS,YAAY,SAAS,UAAU,CACrH,CAAC;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;IACH,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC;IAChD,CAAC;CACF;AApCD,sCAoCC;AAED,SAAgB,gBAAgB,CAAC,0BAAuD;IACtF,OAAO,IAAI,aAAa,CAAC,0BAA0B,CAAC,CAAC;AACvD,CAAC;AAFD,4CAEC"}
1
+ {"version":3,"file":"project-report.js","sourceRoot":"","sources":["../../../src/cli/validate/project-report.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IACxB,YACW,0BAAuD,EACvD,iBAA2B;QAD3B,+BAA0B,GAA1B,0BAA0B,CAA6B;QACvD,sBAAiB,GAAjB,iBAAiB,CAAU;IACnC,CAAC;IAEJ,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,IAAI;QAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;YACvB,OAAO,oCAAoC,CAAC;SAC7C;aAAM;YACL,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE9C,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9C,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,KAAK,IAAI,CAAC,QAAQ,wBAAwB,MAAM,cAAc,IAAI,CAAC,SAAS,YAAY,SAAS,UAAU,CACrH,CAAC;aACH;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;IACH,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC;IAChD,CAAC;CACF;AA3CD,sCA2CC;AAED,SAAgB,gBAAgB,CAC9B,0BAAuD,EACvD,iBAA2B;IAE3B,OAAO,IAAI,aAAa,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;AAC1E,CAAC;AALD,4CAKC"}
@@ -47,7 +47,7 @@ test('get project report - ok - console', async (t) => {
47
47
  t.true(report.ok);
48
48
  t.is(report.numPassed, 1);
49
49
  t.is(report.numTotal, 1);
50
- t.regex(report.explain(), /SUCCESS \(1 upgradeable contracts detected, 1 passed, 0 failed\)/);
50
+ t.regex(report.explain(), /SUCCESS \(1 upgradeable contract detected, 1 passed, 0 failed\)/);
51
51
  });
52
52
  test('get project report - errors - console', async (t) => {
53
53
  const v1 = t.context.extractStorageLayout('StorageUpgrade_Replace_V1');
@@ -1 +1 @@
1
- {"version":3,"file":"project-report.test.js","sourceRoot":"","sources":["../../../src/cli/validate/project-report.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-report.test.js","sourceRoot":"","sources":["../../../src/cli/validate/project-report.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,9 @@ import { SourceContract } from './validations';
4
4
  /**
5
5
  * Validation options for upgrade safety checks.
6
6
  */
7
- export type ValidateUpgradeSafetyOptions = Omit<ValidationOptions, 'kind'>;
7
+ export type ValidateUpgradeSafetyOptions = Omit<ValidationOptions, 'kind'> & {
8
+ requireReference?: boolean;
9
+ };
8
10
  export type SpecifiedContracts = {
9
11
  contract: SourceContract;
10
12
  reference?: SourceContract;
@@ -20,4 +22,6 @@ export type SpecifiedContracts = {
20
22
  * @returns The project report.
21
23
  */
22
24
  export declare function validateUpgradeSafety(buildInfoDir?: string, contract?: string, reference?: string, opts?: ValidateUpgradeSafetyOptions): Promise<ProjectReport>;
25
+ export declare function findSpecifiedContracts(sourceContracts: SourceContract[], opts: Required<ValidateUpgradeSafetyOptions>, contractName?: string, referenceName?: string): SpecifiedContracts | undefined;
26
+ export declare function withCliDefaults(opts: ValidateUpgradeSafetyOptions): Required<ValidateUpgradeSafetyOptions>;
23
27
  //# sourceMappingURL=validate-upgrade-safety.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-upgrade-safety.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK1C,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAA8B,MAAM,eAAe,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC,aAAa,CAAC,CAQxB"}
1
+ {"version":3,"file":"validate-upgrade-safety.d.ts","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA0B,MAAM,OAAO,CAAC;AAKlE,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAA8B,MAAM,eAAe,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC,aAAa,CAAC,CAUxB;AAED,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,cAAc,EAAE,EACjC,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC5C,YAAY,CAAC,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACrB,kBAAkB,GAAG,SAAS,CAahC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,4BAA4B,GAAG,QAAQ,CAAC,4BAA4B,CAAC,CAK1G"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateUpgradeSafety = void 0;
3
+ exports.withCliDefaults = exports.findSpecifiedContracts = exports.validateUpgradeSafety = void 0;
4
+ const __1 = require("../..");
4
5
  const build_info_file_1 = require("./build-info-file");
5
6
  const contract_report_1 = require("./contract-report");
6
7
  const find_contract_1 = require("./find-contract");
@@ -17,14 +18,15 @@ const validations_1 = require("./validations");
17
18
  * @returns The project report.
18
19
  */
19
20
  async function validateUpgradeSafety(buildInfoDir, contract, reference, opts = {}) {
21
+ const allOpts = withCliDefaults(opts);
20
22
  const buildInfoFiles = await (0, build_info_file_1.getBuildInfoFiles)(buildInfoDir);
21
23
  const sourceContracts = (0, validations_1.validateBuildInfoContracts)(buildInfoFiles);
22
- const specifiedContracts = findSpecifiedContracts(sourceContracts, contract, reference);
23
- const contractReports = (0, contract_report_1.getContractReports)(sourceContracts, opts, specifiedContracts);
24
- return (0, project_report_1.getProjectReport)(contractReports);
24
+ const specifiedContracts = findSpecifiedContracts(sourceContracts, allOpts, contract, reference);
25
+ const contractReports = (0, contract_report_1.getContractReports)(sourceContracts, allOpts, specifiedContracts);
26
+ return (0, project_report_1.getProjectReport)(contractReports, specifiedContracts !== undefined);
25
27
  }
26
28
  exports.validateUpgradeSafety = validateUpgradeSafety;
27
- function findSpecifiedContracts(sourceContracts, contractName, referenceName) {
29
+ function findSpecifiedContracts(sourceContracts, opts, contractName, referenceName) {
28
30
  if (contractName !== undefined) {
29
31
  return {
30
32
  contract: (0, find_contract_1.findContract)(contractName, undefined, sourceContracts),
@@ -34,8 +36,19 @@ function findSpecifiedContracts(sourceContracts, contractName, referenceName) {
34
36
  else if (referenceName !== undefined) {
35
37
  throw new Error(`The reference option can only be specified when the contract option is also specified.`);
36
38
  }
39
+ else if (opts.requireReference) {
40
+ throw new Error(`The requireReference option can only be specified when the contract option is also specified.`);
41
+ }
37
42
  else {
38
43
  return undefined;
39
44
  }
40
45
  }
46
+ exports.findSpecifiedContracts = findSpecifiedContracts;
47
+ function withCliDefaults(opts) {
48
+ return {
49
+ ...(0, __1.withValidationDefaults)(opts),
50
+ requireReference: opts.requireReference ?? false,
51
+ };
52
+ }
53
+ exports.withCliDefaults = withCliDefaults;
41
54
  //# sourceMappingURL=validate-upgrade-safety.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-upgrade-safety.js","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.ts"],"names":[],"mappings":";;;AAEA,uDAAsD;AACtD,uDAAuD;AACvD,mDAA+C;AAC/C,qDAAmE;AACnE,+CAA2E;AAY3E;;;;;;;;;GASG;AACI,KAAK,UAAU,qBAAqB,CACzC,YAAqB,EACrB,QAAiB,EACjB,SAAkB,EAClB,OAAqC,EAAE;IAEvC,MAAM,cAAc,GAAG,MAAM,IAAA,mCAAiB,EAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,IAAA,wCAA0B,EAAC,cAAc,CAAC,CAAC;IAEnE,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAExF,MAAM,eAAe,GAAG,IAAA,oCAAkB,EAAC,eAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACtF,OAAO,IAAA,iCAAgB,EAAC,eAAe,CAAC,CAAC;AAC3C,CAAC;AAbD,sDAaC;AAED,SAAS,sBAAsB,CAC7B,eAAiC,EACjC,YAAqB,EACrB,aAAsB;IAEtB,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,OAAO;YACL,QAAQ,EAAE,IAAA,4BAAY,EAAC,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC;YAChE,SAAS,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,4BAAY,EAAC,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7G,CAAC;KACH;SAAM,IAAI,aAAa,KAAK,SAAS,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;KAC3G;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC"}
1
+ {"version":3,"file":"validate-upgrade-safety.js","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.ts"],"names":[],"mappings":";;;AAAA,6BAAkE;AAElE,uDAAsD;AACtD,uDAAuD;AACvD,mDAA+C;AAC/C,qDAAmE;AACnE,+CAA2E;AAc3E;;;;;;;;;GASG;AACI,KAAK,UAAU,qBAAqB,CACzC,YAAqB,EACrB,QAAiB,EACjB,SAAkB,EAClB,OAAqC,EAAE;IAEvC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,cAAc,GAAG,MAAM,IAAA,mCAAiB,EAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,IAAA,wCAA0B,EAAC,cAAc,CAAC,CAAC;IAEnE,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjG,MAAM,eAAe,GAAG,IAAA,oCAAkB,EAAC,eAAe,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACzF,OAAO,IAAA,iCAAgB,EAAC,eAAe,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC;AAC7E,CAAC;AAfD,sDAeC;AAED,SAAgB,sBAAsB,CACpC,eAAiC,EACjC,IAA4C,EAC5C,YAAqB,EACrB,aAAsB;IAEtB,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,OAAO;YACL,QAAQ,EAAE,IAAA,4BAAY,EAAC,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC;YAChE,SAAS,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,4BAAY,EAAC,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7G,CAAC;KACH;SAAM,IAAI,aAAa,KAAK,SAAS,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;KAC3G;SAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;KAClH;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAlBD,wDAkBC;AAED,SAAgB,eAAe,CAAC,IAAkC;IAChE,OAAO;QACL,GAAG,IAAA,0BAAsB,EAAC,IAAI,CAAC;QAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;KACjD,CAAC;AACJ,CAAC;AALD,0CAKC"}
@@ -69,4 +69,12 @@ ava_1.default.after(async () => {
69
69
  t.true(error?.message.includes(`Invalid number of arguments for @custom:oz-upgrades annotation in contract ${fullyQualifiedName}.`));
70
70
  t.true(error?.message.includes('Found 1, expected 0'));
71
71
  });
72
+ (0, ava_1.default)('findSpecifiedContracts - requireReference option without contract', async (t) => {
73
+ try {
74
+ (0, validate_upgrade_safety_1.findSpecifiedContracts)([], (0, validate_upgrade_safety_1.withCliDefaults)({ requireReference: true }));
75
+ }
76
+ catch (e) {
77
+ t.true(e.message.includes('The requireReference option can only be specified when the contract option is also specified.'));
78
+ }
79
+ });
72
80
  //# sourceMappingURL=validate-upgrade-safety.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-upgrade-safety.test.js","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-upgrade-safety.test.js","sourceRoot":"","sources":["../../../src/cli/validate/validate-upgrade-safety.test.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ const ava_1 = __importDefault(require("ava"));
7
7
  const hardhat_1 = require("hardhat");
8
8
  const validations_1 = require("./validations");
9
9
  const contract_report_1 = require("./contract-report");
10
+ const validate_upgrade_safety_1 = require("./validate-upgrade-safety");
10
11
  const test = ava_1.default;
11
12
  const SOURCE_FILE = 'contracts/test/cli/Validate.sol';
12
13
  test.before(async (t) => {
@@ -16,7 +17,7 @@ test.before(async (t) => {
16
17
  }
17
18
  else {
18
19
  const sourceContracts = (0, validations_1.validateBuildInfoContracts)([buildInfo]);
19
- t.context.reports = (0, contract_report_1.getContractReports)(sourceContracts, {});
20
+ t.context.reports = (0, contract_report_1.getContractReports)(sourceContracts, (0, validate_upgrade_safety_1.withCliDefaults)({}));
20
21
  }
21
22
  });
22
23
  function getReport(t, contractName) {
@@ -1 +1 @@
1
- {"version":3,"file":"validations.test.js","sourceRoot":"","sources":["../../../src/cli/validate/validations.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validations.test.js","sourceRoot":"","sources":["../../../src/cli/validate/validations.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,4BAA4B,EAAyB,MAAM,GAAG,CAAC;AAqBxE,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxD;AA6BD,UAAU,YAAY;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC,CAAC;CAC9C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,CAiBlG;AAkDD,wBAAgB,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,4BAA4B,CAAC,CAYpG"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,4BAA4B,EAAyB,MAAM,GAAG,CAAC;AAsBxE,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxD;AA8BD,UAAU,YAAY;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC,CAAC;CAC9C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,CAsBlG;AAmDD,wBAAgB,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,4BAA4B,CAAC,CAapG"}
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.withDefaults = exports.getFunctionArgs = exports.main = void 0;
7
7
  const minimist_1 = __importDefault(require("minimist"));
8
8
  const _1 = require(".");
9
- const __1 = require("..");
10
9
  const run_1 = require("../validate/run");
11
10
  const debug_1 = __importDefault(require("../utils/debug"));
11
+ const validate_upgrade_safety_1 = require("./validate/validate-upgrade-safety");
12
12
  const USAGE = 'Usage: npx @openzeppelin/upgrades-core validate [<BUILD_INFO_DIR>] [<OPTIONS>]';
13
13
  const DETAILS = `
14
14
  Detects upgradeable contracts from a build info directory and validates whether they are upgrade safe.
@@ -18,7 +18,8 @@ Arguments:
18
18
 
19
19
  Options:
20
20
  --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.
21
- --reference <REFERENCE_CONTRACT> The name or fully qualified name of the reference contract to use for storage layout comparisons. Can only be used along with the --contract option. If not specified, uses the @custom:oz-upgrades-from annotation in the contract that is being validated.
21
+ --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.
22
+ --requireReference Can only be used when the --contract option is also provided. If specified, requires either the --reference option to be provided or the contract to have a @custom:oz-upgrades-from annotation.
22
23
  --unsafeAllow "<VALIDATION_ERRORS>" Selectively disable one or more validation errors. Comma-separated list with one or more of the following: ${run_1.errorKinds.join(', ')}
23
24
  --unsafeAllowRenames Configure storage layout check to allow variable renaming.
24
25
  --unsafeSkipStorageCheck Skips checking for storage layout compatibility errors. This is a dangerous option meant to be used as a last resort.`;
@@ -40,6 +41,7 @@ function parseArgs(args) {
40
41
  'unsafeSkipStorageCheck',
41
42
  'unsafeAllowCustomTypes',
42
43
  'unsafeAllowLinkedLibraries',
44
+ 'requireReference',
43
45
  ],
44
46
  string: ['unsafeAllow', 'contract', 'reference'],
45
47
  alias: { h: 'help' },
@@ -77,10 +79,15 @@ function getFunctionArgs(parsedArgs, extraArgs) {
77
79
  const buildInfoDir = extraArgs.length === 1 ? undefined : extraArgs[1];
78
80
  const contract = getAndValidateString(parsedArgs, 'contract');
79
81
  const reference = getAndValidateString(parsedArgs, 'reference');
80
- if (reference !== undefined && contract === undefined) {
81
- throw new Error('The --reference option can only be used along with the --contract option.');
82
- }
83
82
  const opts = withDefaults(parsedArgs);
83
+ if (contract === undefined) {
84
+ if (reference !== undefined) {
85
+ throw new Error('The --reference option can only be used along with the --contract option.');
86
+ }
87
+ else if (opts.requireReference) {
88
+ throw new Error('The --requireReference option can only be used along with the --contract option.');
89
+ }
90
+ }
84
91
  return { buildInfoDir, contract, reference, opts };
85
92
  }
86
93
  }
@@ -104,6 +111,7 @@ function validateOptions(parsedArgs) {
104
111
  'unsafeAllow',
105
112
  'contract',
106
113
  'reference',
114
+ 'requireReference',
107
115
  ].includes(key));
108
116
  if (invalidArgs.length > 0) {
109
117
  throw new Error(`Invalid options: ${invalidArgs.join(', ')}`);
@@ -128,8 +136,9 @@ function withDefaults(parsedArgs) {
128
136
  unsafeAllowCustomTypes: parsedArgs['unsafeAllowCustomTypes'],
129
137
  unsafeAllowLinkedLibraries: parsedArgs['unsafeAllowLinkedLibraries'],
130
138
  unsafeAllow: getUnsafeAllowKinds(parsedArgs['unsafeAllow']),
139
+ requireReference: parsedArgs['requireReference'],
131
140
  };
132
- return (0, __1.withValidationDefaults)(allOpts);
141
+ return (0, validate_upgrade_safety_1.withCliDefaults)(allOpts);
133
142
  }
134
143
  exports.withDefaults = withDefaults;
135
144
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/upgrades-core",
3
- "version": "1.30.1",
3
+ "version": "1.31.0",
4
4
  "description": "",
5
5
  "repository": "https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/core",
6
6
  "license": "MIT",
@@ -64,5 +64,5 @@
64
64
  "proper-lockfile": "^4.1.1",
65
65
  "solidity-ast": "^0.4.51"
66
66
  },
67
- "gitHead": "b4cfacb7594582367e1b8765407b3e131c4ccf0b"
67
+ "gitHead": "db0baed15bdd9f1624feefe7b6b5e875afa62337"
68
68
  }
@@ -167,6 +167,73 @@ test('validate - reference not found', async t => {
167
167
  t.true(error?.message.includes('Could not find contract NonExistent.'), error?.message);
168
168
  });
169
169
 
170
+ test('validate - requireReference - no contract option', async t => {
171
+ const temp = await getTempDir(t);
172
+ const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:StorageV1`);
173
+ await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
174
+
175
+ const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --requireReference`));
176
+ t.true(
177
+ error?.message.includes('The --requireReference option can only be used along with the --contract option.'),
178
+ error?.message,
179
+ );
180
+ });
181
+
182
+ test('validate - requireReference - no reference, no upgradesFrom', async t => {
183
+ const temp = await getTempDir(t);
184
+ const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:StorageV1`);
185
+ await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
186
+
187
+ const error = await t.throwsAsync(execAsync(`${CLI} validate ${temp} --contract StorageV1 --requireReference`));
188
+ t.true(error?.message.includes('does not specify what contract it upgrades from'), error?.message);
189
+ });
190
+
191
+ test('validate - requireReference - no reference, has upgradesFrom - safe', async t => {
192
+ const temp = await getTempDir(t);
193
+ const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:BecomesSafe`);
194
+ await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
195
+
196
+ const output = (await execAsync(`${CLI} validate ${temp} --contract BecomesSafe --requireReference`)).stdout;
197
+ t.snapshot(output);
198
+ });
199
+
200
+ test('validate - requireReference - no reference, has upgradesFrom - unsafe', async t => {
201
+ const temp = await getTempDir(t);
202
+ const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:BecomesBadLayout`);
203
+ await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
204
+
205
+ const error = await t.throwsAsync(
206
+ execAsync(`${CLI} validate ${temp} --contract BecomesBadLayout --requireReference`),
207
+ );
208
+ const expectation: string[] = [`Stdout: ${(error as any).stdout}`, `Stderr: ${(error as any).stderr}`];
209
+ t.snapshot(expectation.join('\n'));
210
+ });
211
+
212
+ test('validate - requireReference - has reference - unsafe', async t => {
213
+ const temp = await getTempDir(t);
214
+ const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:StorageV2_Bad_NoAnnotation`);
215
+ await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
216
+
217
+ const error = await t.throwsAsync(
218
+ execAsync(`${CLI} validate ${temp} --contract StorageV2_Bad_NoAnnotation --reference StorageV1 --requireReference`),
219
+ );
220
+ const expectation: string[] = [`Stdout: ${(error as any).stdout}`, `Stderr: ${(error as any).stderr}`];
221
+ t.snapshot(expectation.join('\n'));
222
+ });
223
+
224
+ test('validate - requireReference - has reference - safe', async t => {
225
+ const temp = await getTempDir(t);
226
+ const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Validate.sol:StorageV2_Ok_NoAnnotation`);
227
+ await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
228
+
229
+ const output = (
230
+ await execAsync(
231
+ `${CLI} validate ${temp} --contract StorageV2_Ok_NoAnnotation --reference StorageV1 --requireReference`,
232
+ )
233
+ ).stdout;
234
+ t.snapshot(output);
235
+ });
236
+
170
237
  test('validate - no upgradeable', async t => {
171
238
  const temp = await getTempDir(t);
172
239
  const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Storage088.sol:Storage088`);
@@ -184,3 +251,12 @@ test('validate - ok', async t => {
184
251
  const output = (await execAsync(`${CLI} validate ${temp}`)).stdout;
185
252
  t.snapshot(output);
186
253
  });
254
+
255
+ test('validate - single contract - ok', async t => {
256
+ const temp = await getTempDir(t);
257
+ const buildInfo = await artifacts.getBuildInfo(`contracts/test/cli/Annotation.sol:Annotation`);
258
+ await fs.writeFile(path.join(temp, 'validate.json'), JSON.stringify(buildInfo));
259
+
260
+ const output = (await execAsync(`${CLI} validate ${temp} --contract Annotation`)).stdout;
261
+ t.snapshot(output);
262
+ });
@@ -17,7 +17,8 @@ Generated by [AVA](https://avajs.dev).
17
17
  ␊
18
18
  Options:␊
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
- --reference <REFERENCE_CONTRACT> The name or fully qualified name of the reference contract to use for storage layout comparisons. Can only be used along with the --contract option. If not specified, uses the @custom:oz-upgrades-from annotation in the contract that is being validated.␊
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
+ --requireReference Can only be used when the --contract option is also provided. If specified, requires either the --reference option to be provided or the contract to have a @custom:oz-upgrades-from annotation.␊
21
22
  --unsafeAllow "<VALIDATION_ERRORS>" 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␊
22
23
  --unsafeAllowRenames Configure storage layout check to allow variable renaming.␊
23
24
  --unsafeSkipStorageCheck Skips checking for storage layout compatibility errors. This is a dangerous option meant to be used as a last resort.␊
@@ -36,7 +37,8 @@ Generated by [AVA](https://avajs.dev).
36
37
  ␊
37
38
  Options:␊
38
39
  --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.␊
39
- --reference <REFERENCE_CONTRACT> The name or fully qualified name of the reference contract to use for storage layout comparisons. Can only be used along with the --contract option. If not specified, uses the @custom:oz-upgrades-from annotation in the contract that is being validated.␊
40
+ --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.␊
41
+ --requireReference Can only be used when the --contract option is also provided. If specified, requires either the --reference option to be provided or the contract to have a @custom:oz-upgrades-from annotation.␊
40
42
  --unsafeAllow "<VALIDATION_ERRORS>" 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␊
41
43
  --unsafeAllowRenames Configure storage layout check to allow variable renaming.␊
42
44
  --unsafeSkipStorageCheck Skips checking for storage layout compatibility errors. This is a dangerous option meant to be used as a last resort.␊
@@ -134,7 +136,7 @@ Generated by [AVA](https://avajs.dev).
134
136
  contracts/test/cli/Validate.sol:14: Use of selfdestruct is not allowed␊
135
137
  https://zpl.in/upgrades/error-003␊
136
138
  ␊
137
- FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
139
+ FAILED␊
138
140
  ␊
139
141
  Stderr: `
140
142
 
@@ -151,7 +153,7 @@ Generated by [AVA](https://avajs.dev).
151
153
  - Slot changed from 1 to 2␊
152
154
  > Set __gap array to size 48␊
153
155
  ␊
154
- FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
156
+ FAILED␊
155
157
  ␊
156
158
  Stderr: `
157
159
 
@@ -164,7 +166,7 @@ Generated by [AVA](https://avajs.dev).
164
166
  contracts/test/cli/Validate.sol:97: Use of selfdestruct is not allowed␊
165
167
  https://zpl.in/upgrades/error-003␊
166
168
  ␊
167
- FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
169
+ FAILED␊
168
170
  ␊
169
171
  Stderr: `
170
172
 
@@ -179,7 +181,7 @@ Generated by [AVA](https://avajs.dev).
179
181
  @openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol␊
180
182
  https://zpl.in/upgrades/error-008␊
181
183
  ␊
182
- FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
184
+ FAILED␊
183
185
  ␊
184
186
  Stderr: `
185
187
 
@@ -195,7 +197,7 @@ Generated by [AVA](https://avajs.dev).
195
197
  StorageV1: Deleted \`__gap\`␊
196
198
  > Keep the variable even if unused␊
197
199
  ␊
198
- FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
200
+ FAILED␊
199
201
  ␊
200
202
  Stderr: `
201
203
 
@@ -211,10 +213,55 @@ Generated by [AVA](https://avajs.dev).
211
213
  StorageV1: Deleted \`__gap\`␊
212
214
  > Keep the variable even if unused␊
213
215
  ␊
214
- FAILED (1 upgradeable contract detected, 0 passed, 1 failed)␊
216
+ FAILED␊
215
217
  ␊
216
218
  Stderr: `
217
219
 
220
+ ## validate - requireReference - no reference, has upgradesFrom - safe
221
+
222
+ > Snapshot 1
223
+
224
+ ` ✔ contracts/test/cli/Validate.sol:BecomesSafe (upgrades from contracts/test/cli/Validate.sol:MultipleUnsafe)␊
225
+ ␊
226
+ SUCCESS␊
227
+ `
228
+
229
+ ## validate - requireReference - no reference, has upgradesFrom - unsafe
230
+
231
+ > Snapshot 1
232
+
233
+ `Stdout: ✘ contracts/test/cli/Validate.sol:BecomesBadLayout (upgrades from contracts/test/cli/Validate.sol:BecomesSafe)␊
234
+ ␊
235
+ BecomesSafe: Deleted \`x\`␊
236
+ > Keep the variable even if unused␊
237
+ ␊
238
+ FAILED␊
239
+ ␊
240
+ Stderr: `
241
+
242
+ ## validate - requireReference - has reference - unsafe
243
+
244
+ > Snapshot 1
245
+
246
+ `Stdout: ✘ contracts/test/cli/Validate.sol:StorageV2_Bad_NoAnnotation (upgrades from contracts/test/cli/Validate.sol:StorageV1)␊
247
+ ␊
248
+ contracts/test/cli/Validate.sol:147: Layout changed for \`__gap\` (uint256[49] -> uint256[49])␊
249
+ - Slot changed from 1 to 2␊
250
+ > Set __gap array to size 48␊
251
+ ␊
252
+ FAILED␊
253
+ ␊
254
+ Stderr: `
255
+
256
+ ## validate - requireReference - has reference - safe
257
+
258
+ > Snapshot 1
259
+
260
+ ` ✔ contracts/test/cli/Validate.sol:StorageV2_Ok_NoAnnotation (upgrades from contracts/test/cli/Validate.sol:StorageV1)␊
261
+ ␊
262
+ SUCCESS␊
263
+ `
264
+
218
265
  ## validate - no upgradeable
219
266
 
220
267
  > Snapshot 1
@@ -228,5 +275,14 @@ Generated by [AVA](https://avajs.dev).
228
275
 
229
276
  ` ✔ contracts/test/cli/Annotation.sol:Annotation␊
230
277
  ␊
231
- SUCCESS (1 upgradeable contracts detected, 1 passed, 0 failed)␊
278
+ SUCCESS (1 upgradeable contract detected, 1 passed, 0 failed)␊
279
+ `
280
+
281
+ ## validate - single contract - ok
282
+
283
+ > Snapshot 1
284
+
285
+ ` ✔ contracts/test/cli/Annotation.sol:Annotation␊
286
+ ␊
287
+ SUCCESS␊
232
288
  `
Binary file
@@ -69,7 +69,7 @@ export class UpgradeableContractReport implements Report {
69
69
  */
70
70
  export function getContractReports(
71
71
  sourceContracts: SourceContract[],
72
- opts: ValidateUpgradeSafetyOptions,
72
+ opts: Required<ValidateUpgradeSafetyOptions>,
73
73
  specifiedContracts?: SpecifiedContracts,
74
74
  ) {
75
75
  const upgradeableContractReports: UpgradeableContractReport[] = [];
@@ -83,7 +83,11 @@ export function getContractReports(
83
83
  sourceContracts,
84
84
  specifiedContracts?.reference,
85
85
  );
86
- if (specifiedContracts !== undefined || upgradeabilityAssessment.upgradeable) {
86
+ if (opts.requireReference && upgradeabilityAssessment.referenceContract === undefined) {
87
+ throw new Error(
88
+ `The contract ${sourceContract.fullyQualifiedName} does not specify what contract it upgrades from. Add the \`@custom:oz-upgrades-from <REFERENCE_CONTRACT>\` annotation to the contract, or include the reference contract name when running the validate command or function.`,
89
+ );
90
+ } else if (specifiedContracts !== undefined || upgradeabilityAssessment.upgradeable) {
87
91
  const reference = upgradeabilityAssessment.referenceContract;
88
92
  const kind = upgradeabilityAssessment.uups ? 'uups' : 'transparent';
89
93
  const report = getUpgradeableContractReport(sourceContract, reference, { ...opts, kind: kind });
@@ -62,7 +62,7 @@ test('get project report - ok - console', async t => {
62
62
  t.true(report.ok);
63
63
  t.is(report.numPassed, 1);
64
64
  t.is(report.numTotal, 1);
65
- t.regex(report.explain(), /SUCCESS \(1 upgradeable contracts detected, 1 passed, 0 failed\)/);
65
+ t.regex(report.explain(), /SUCCESS \(1 upgradeable contract detected, 1 passed, 0 failed\)/);
66
66
  });
67
67
 
68
68
  test('get project report - errors - console', async t => {
@@ -37,4 +37,4 @@ Generated by [AVA](https://avajs.dev).
37
37
  ␊
38
38
  ✔ mypath/MyContract.sol:MyContract2␊
39
39
  ␊
40
- FAILED (2 upgradeable contract detected, 1 passed, 1 failed)`
40
+ FAILED (2 upgradeable contracts detected, 1 passed, 1 failed)`
@@ -2,7 +2,10 @@ import { UpgradeableContractReport } from './contract-report';
2
2
  import { Report } from '../../standalone';
3
3
 
4
4
  export class ProjectReport implements Report {
5
- constructor(readonly upgradeableContractReports: UpgradeableContractReport[]) {}
5
+ constructor(
6
+ readonly upgradeableContractReports: UpgradeableContractReport[],
7
+ readonly specifiedContract?: boolean,
8
+ ) {}
6
9
 
7
10
  get ok(): boolean {
8
11
  return this.upgradeableContractReports.every(r => r.ok);
@@ -13,13 +16,17 @@ export class ProjectReport implements Report {
13
16
  return 'No upgradeable contracts detected.';
14
17
  } else {
15
18
  const lines = this.upgradeableContractReports.map(r => r.explain(color));
16
- const numFailed = this.numTotal - this.numPassed;
17
- const plural = numFailed === 1 ? '' : 's';
18
19
  const status = this.ok ? 'SUCCESS' : 'FAILED';
19
20
 
20
- lines.push(
21
- `${status} (${this.numTotal} upgradeable contract${plural} detected, ${this.numPassed} passed, ${numFailed} failed)`,
22
- );
21
+ if (this.specifiedContract) {
22
+ lines.push(`${status}`);
23
+ } else {
24
+ const numFailed = this.numTotal - this.numPassed;
25
+ const plural = this.numTotal === 1 ? '' : 's';
26
+ lines.push(
27
+ `${status} (${this.numTotal} upgradeable contract${plural} detected, ${this.numPassed} passed, ${numFailed} failed)`,
28
+ );
29
+ }
23
30
  return lines.join('\n\n');
24
31
  }
25
32
  }
@@ -39,6 +46,9 @@ export class ProjectReport implements Report {
39
46
  }
40
47
  }
41
48
 
42
- export function getProjectReport(upgradeableContractReports: UpgradeableContractReport[]): ProjectReport {
43
- return new ProjectReport(upgradeableContractReports);
49
+ export function getProjectReport(
50
+ upgradeableContractReports: UpgradeableContractReport[],
51
+ specifiedContract?: boolean,
52
+ ): ProjectReport {
53
+ return new ProjectReport(upgradeableContractReports, specifiedContract);
44
54
  }
@@ -6,7 +6,7 @@ import path from 'path';
6
6
  import os from 'os';
7
7
 
8
8
  import { artifacts } from 'hardhat';
9
- import { validateUpgradeSafety } from './validate-upgrade-safety';
9
+ import { findSpecifiedContracts, validateUpgradeSafety, withCliDefaults } from './validate-upgrade-safety';
10
10
  import { ReferenceContractNotFound } from './find-contract';
11
11
 
12
12
  test.before(async () => {
@@ -97,3 +97,15 @@ test('invalid annotation args - upgrades', async t => {
97
97
  );
98
98
  t.true(error?.message.includes('Found 1, expected 0'));
99
99
  });
100
+
101
+ test('findSpecifiedContracts - requireReference option without contract', async t => {
102
+ try {
103
+ findSpecifiedContracts([], withCliDefaults({ requireReference: true }));
104
+ } catch (e: any) {
105
+ t.true(
106
+ e.message.includes(
107
+ 'The requireReference option can only be specified when the contract option is also specified.',
108
+ ),
109
+ );
110
+ }
111
+ });
@@ -1,4 +1,4 @@
1
- import { ValidationOptions } from '../..';
1
+ import { ValidationOptions, withValidationDefaults } from '../..';
2
2
 
3
3
  import { getBuildInfoFiles } from './build-info-file';
4
4
  import { getContractReports } from './contract-report';
@@ -9,7 +9,9 @@ import { SourceContract, validateBuildInfoContracts } from './validations';
9
9
  /**
10
10
  * Validation options for upgrade safety checks.
11
11
  */
12
- export type ValidateUpgradeSafetyOptions = Omit<ValidationOptions, 'kind'>;
12
+ export type ValidateUpgradeSafetyOptions = Omit<ValidationOptions, 'kind'> & {
13
+ requireReference?: boolean;
14
+ };
13
15
 
14
16
  export type SpecifiedContracts = {
15
17
  contract: SourceContract;
@@ -32,17 +34,20 @@ export async function validateUpgradeSafety(
32
34
  reference?: string,
33
35
  opts: ValidateUpgradeSafetyOptions = {},
34
36
  ): Promise<ProjectReport> {
37
+ const allOpts = withCliDefaults(opts);
38
+
35
39
  const buildInfoFiles = await getBuildInfoFiles(buildInfoDir);
36
40
  const sourceContracts = validateBuildInfoContracts(buildInfoFiles);
37
41
 
38
- const specifiedContracts = findSpecifiedContracts(sourceContracts, contract, reference);
42
+ const specifiedContracts = findSpecifiedContracts(sourceContracts, allOpts, contract, reference);
39
43
 
40
- const contractReports = getContractReports(sourceContracts, opts, specifiedContracts);
41
- return getProjectReport(contractReports);
44
+ const contractReports = getContractReports(sourceContracts, allOpts, specifiedContracts);
45
+ return getProjectReport(contractReports, specifiedContracts !== undefined);
42
46
  }
43
47
 
44
- function findSpecifiedContracts(
48
+ export function findSpecifiedContracts(
45
49
  sourceContracts: SourceContract[],
50
+ opts: Required<ValidateUpgradeSafetyOptions>,
46
51
  contractName?: string,
47
52
  referenceName?: string,
48
53
  ): SpecifiedContracts | undefined {
@@ -53,7 +58,16 @@ function findSpecifiedContracts(
53
58
  };
54
59
  } else if (referenceName !== undefined) {
55
60
  throw new Error(`The reference option can only be specified when the contract option is also specified.`);
61
+ } else if (opts.requireReference) {
62
+ throw new Error(`The requireReference option can only be specified when the contract option is also specified.`);
56
63
  } else {
57
64
  return undefined;
58
65
  }
59
66
  }
67
+
68
+ export function withCliDefaults(opts: ValidateUpgradeSafetyOptions): Required<ValidateUpgradeSafetyOptions> {
69
+ return {
70
+ ...withValidationDefaults(opts),
71
+ requireReference: opts.requireReference ?? false,
72
+ };
73
+ }
@@ -3,6 +3,7 @@ import _test, { ExecutionContext, TestFn } from 'ava';
3
3
  import { artifacts } from 'hardhat';
4
4
  import { validateBuildInfoContracts } from './validations';
5
5
  import { UpgradeableContractReport, getContractReports } from './contract-report';
6
+ import { withCliDefaults } from './validate-upgrade-safety';
6
7
 
7
8
  interface Context {
8
9
  reports: UpgradeableContractReport[];
@@ -19,7 +20,7 @@ test.before(async t => {
19
20
  t.fail();
20
21
  } else {
21
22
  const sourceContracts = validateBuildInfoContracts([buildInfo]);
22
- t.context.reports = getContractReports(sourceContracts, {});
23
+ t.context.reports = getContractReports(sourceContracts, withCliDefaults({}));
23
24
  }
24
25
  });
25
26
 
@@ -1,9 +1,9 @@
1
1
  import minimist from 'minimist';
2
2
 
3
3
  import { ValidateUpgradeSafetyOptions, validateUpgradeSafety } from '.';
4
- import { withValidationDefaults } from '..';
5
4
  import { ValidationError, errorKinds } from '../validate/run';
6
5
  import debug from '../utils/debug';
6
+ import { withCliDefaults } from './validate/validate-upgrade-safety';
7
7
 
8
8
  const USAGE = 'Usage: npx @openzeppelin/upgrades-core validate [<BUILD_INFO_DIR>] [<OPTIONS>]';
9
9
  const DETAILS = `
@@ -14,7 +14,8 @@ Arguments:
14
14
 
15
15
  Options:
16
16
  --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.
17
- --reference <REFERENCE_CONTRACT> The name or fully qualified name of the reference contract to use for storage layout comparisons. Can only be used along with the --contract option. If not specified, uses the @custom:oz-upgrades-from annotation in the contract that is being validated.
17
+ --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.
18
+ --requireReference Can only be used when the --contract option is also provided. If specified, requires either the --reference option to be provided or the contract to have a @custom:oz-upgrades-from annotation.
18
19
  --unsafeAllow "<VALIDATION_ERRORS>" Selectively disable one or more validation errors. Comma-separated list with one or more of the following: ${errorKinds.join(
19
20
  ', ',
20
21
  )}
@@ -45,6 +46,7 @@ function parseArgs(args: string[]) {
45
46
  'unsafeSkipStorageCheck',
46
47
  'unsafeAllowCustomTypes',
47
48
  'unsafeAllowLinkedLibraries',
49
+ 'requireReference',
48
50
  ],
49
51
  string: ['unsafeAllow', 'contract', 'reference'],
50
52
  alias: { h: 'help' },
@@ -87,10 +89,15 @@ export function getFunctionArgs(parsedArgs: minimist.ParsedArgs, extraArgs: stri
87
89
  const buildInfoDir = extraArgs.length === 1 ? undefined : extraArgs[1];
88
90
  const contract = getAndValidateString(parsedArgs, 'contract');
89
91
  const reference = getAndValidateString(parsedArgs, 'reference');
90
- if (reference !== undefined && contract === undefined) {
91
- throw new Error('The --reference option can only be used along with the --contract option.');
92
- }
93
92
  const opts = withDefaults(parsedArgs);
93
+
94
+ if (contract === undefined) {
95
+ if (reference !== undefined) {
96
+ throw new Error('The --reference option can only be used along with the --contract option.');
97
+ } else if (opts.requireReference) {
98
+ throw new Error('The --requireReference option can only be used along with the --contract option.');
99
+ }
100
+ }
94
101
  return { buildInfoDir, contract, reference, opts };
95
102
  }
96
103
  }
@@ -117,6 +124,7 @@ function validateOptions(parsedArgs: minimist.ParsedArgs) {
117
124
  'unsafeAllow',
118
125
  'contract',
119
126
  'reference',
127
+ 'requireReference',
120
128
  ].includes(key),
121
129
  );
122
130
  if (invalidArgs.length > 0) {
@@ -152,7 +160,8 @@ export function withDefaults(parsedArgs: minimist.ParsedArgs): Required<Validate
152
160
  unsafeAllowCustomTypes: parsedArgs['unsafeAllowCustomTypes'],
153
161
  unsafeAllowLinkedLibraries: parsedArgs['unsafeAllowLinkedLibraries'],
154
162
  unsafeAllow: getUnsafeAllowKinds(parsedArgs['unsafeAllow']),
163
+ requireReference: parsedArgs['requireReference'],
155
164
  };
156
165
 
157
- return withValidationDefaults(allOpts);
166
+ return withCliDefaults(allOpts);
158
167
  }