Skip to content

Commit 7003ab2

Browse files
authored
Merge pull request #4125 from ethereum/pathOZrebase
flat test
2 parents 888fe01 + c38e8a6 commit 7003ab2

File tree

18 files changed

+562
-167
lines changed

18 files changed

+562
-167
lines changed

apps/remix-ide-e2e/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
"npm": "^6.14.15"
77
},
88
"dependencies": {
9-
"@openzeppelin/contracts": "^4.9.2",
10-
"@openzeppelin/contracts-upgradeable": "^4.9.2",
11-
"@openzeppelin/upgrades-core": "^1.22.0",
12-
"@openzeppelin/wizard": "^0.1.1",
9+
"@openzeppelin/contracts": "^5.0.0",
10+
"@openzeppelin/contracts-upgradeable": "^5.0.0",
11+
"@openzeppelin/upgrades-core": "^1.30.0",
12+
"@openzeppelin/wizard": "^0.4.0",
1313
"@remix-project/remixd": "../../dist/libs/remixd",
1414
"deep-equal": "^1.0.1",
1515
"ganache-cli": "^6.8.1",

apps/remix-ide-e2e/src/tests/contract_flattener.test.ts

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -42,37 +42,43 @@ const sources = [
4242
'TestContract.sol': {
4343
content: `
4444
// SPDX-License-Identifier: MIT
45-
pragma solidity ^0.8.9;
46-
47-
import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol";
48-
import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol";
49-
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
50-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
51-
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
52-
53-
contract MyToken is Initializable, ERC721Upgradeable, ERC721BurnableUpgradeable, OwnableUpgradeable, UUPSUpgradeable {
54-
/// @custom:oz-upgrades-unsafe-allow constructor
55-
constructor() {
56-
_disableInitializers();
45+
pragma solidity ^0.8.20;
46+
47+
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
48+
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
49+
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";
50+
import "@openzeppelin/contracts/access/Ownable.sol";
51+
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
52+
53+
contract MyToken is ERC20, ERC20Burnable, ERC20Pausable, Ownable, ERC20Permit {
54+
constructor(address initialOwner)
55+
ERC20("MyToken", "MTK")
56+
Ownable(initialOwner)
57+
ERC20Permit("MyToken")
58+
{}
59+
60+
function pause() public onlyOwner {
61+
_pause();
5762
}
58-
59-
function initialize() initializer public {
60-
__ERC721_init("MyToken", "MTK");
61-
__ERC721Burnable_init();
62-
__Ownable_init();
63-
__UUPSUpgradeable_init();
63+
64+
function unpause() public onlyOwner {
65+
_unpause();
6466
}
65-
66-
function safeMint(address to, uint256 tokenId) public onlyOwner {
67-
_safeMint(to, tokenId);
67+
68+
function mint(address to, uint256 amount) public onlyOwner {
69+
_mint(to, amount);
6870
}
69-
70-
function _authorizeUpgrade(address newImplementation)
71+
72+
// The following functions are overrides required by Solidity.
73+
74+
function _update(address from, address to, uint256 value)
7175
internal
72-
onlyOwner
73-
override
74-
{}
76+
override(ERC20, ERC20Pausable)
77+
{
78+
super._update(from, to, value);
79+
}
7580
}
81+
7682
`
7783
},
7884
}

apps/remix-ide-e2e/src/tests/editorHoverContext.test.ts

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,18 @@ module.exports = {
8787
checkEditorHoverContent(browser, path, expectedContent)
8888
},
8989
'Add token file': function (browser: NightwatchBrowser) {
90-
browser.addFile('contracts/mytoken.sol', {
90+
browser
91+
.clickLaunchIcon('solidity')
92+
.setSolidityCompilerVersion('soljson-v0.8.20+commit.a1b79de6.js')
93+
.addFile('contracts/mytoken.sol', {
9194
content: myToken
9295
}).useXpath().waitForElementVisible("//*[@class='view-line' and contains(.,'gas')]")
9396
},
9497
// here we change quickly between files to test the files being parsed correctly when switching between them
9598
'Should show ERC20 hover over contract in editor #group1': function (browser: NightwatchBrowser) {
9699
browser.scrollToLine(10)
97100
const path = "//*[@class='view-line' and contains(.,'MyToken') and contains(.,'Pausable')]//span//span[contains(.,'ERC20Burnable')]"
98-
const expectedContent = 'contract ERC20Burnable is ERC20Burnable, ERC20, IERC20Metadata, IERC20, Context'
101+
const expectedContent = 'contract ERC20Burnable is ERC20Burnable, ERC20, IERC20Errors, IERC20Metadata, IERC20, Context'
99102
checkEditorHoverContent(browser, path, expectedContent, 25)
100103
},
101104
'Go back to ballot file': function (browser: NightwatchBrowser) {
@@ -120,10 +123,10 @@ module.exports = {
120123
'Should show ERC20 hover over contract in editor again #group1': function (browser: NightwatchBrowser) {
121124
browser.scrollToLine(10)
122125
const path = "//*[@class='view-line' and contains(.,'MyToken') and contains(.,'Pausable')]//span//span[contains(.,'ERC20Burnable')]"
123-
const expectedContent = 'contract ERC20Burnable is ERC20Burnable, ERC20, IERC20Metadata, IERC20, Context'
126+
const expectedContent = 'contract ERC20Burnable is ERC20Burnable, ERC20, IERC20Errors, IERC20Metadata, IERC20, Context'
124127
checkEditorHoverContent(browser, path, expectedContent, 25)
125128
},
126-
129+
127130

128131

129132
}
@@ -276,15 +279,20 @@ contract BallotHoverTest {
276279

277280
const myToken = `
278281
// SPDX-License-Identifier: MIT
279-
pragma solidity ^0.8.9;
282+
pragma solidity ^0.8.20;
280283
281284
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
282285
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
283-
import "@openzeppelin/contracts/security/Pausable.sol";
286+
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";
284287
import "@openzeppelin/contracts/access/Ownable.sol";
288+
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
285289
286-
contract MyToken is ERC20, ERC20Burnable, Pausable, Ownable {
287-
constructor() ERC20("MyToken", "MTK") {}
290+
contract MyToken is ERC20, ERC20Burnable, ERC20Pausable, Ownable, ERC20Permit {
291+
constructor(address initialOwner)
292+
ERC20("MyToken", "MTK")
293+
Ownable(initialOwner)
294+
ERC20Permit("MyToken")
295+
{}
288296
289297
function pause() public onlyOwner {
290298
_pause();
@@ -298,12 +306,14 @@ contract MyToken is ERC20, ERC20Burnable, Pausable, Ownable {
298306
_mint(to, amount);
299307
}
300308
301-
function _beforeTokenTransfer(address from, address to, uint256 amount)
309+
// The following functions are overrides required by Solidity.
310+
311+
function _update(address from, address to, uint256 value)
302312
internal
303-
whenNotPaused
304-
override
313+
override(ERC20, ERC20Pausable)
305314
{
306-
super._beforeTokenTransfer(from, to, amount);
315+
super._update(from, to, value);
307316
}
308317
}
318+
309319
`

apps/remix-ide-e2e/src/tests/proxy.test.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@ module.exports = {
2626
.click('[data-id="compilerContainerCompileBtn"]')
2727
.clickLaunchIcon('filePanel')
2828
.isVisible({
29-
selector: '*[data-id="treeViewDivtreeViewItem.deps/npm/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol"]',
29+
selector: '*[data-id="treeViewDivtreeViewItem.deps/npm/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"]',
3030
timeout: 120000,
3131
suppressNotFoundErrors: true
3232
})
3333
.clickLaunchIcon('solidity')
3434
.click('[data-id="compilerContainerCompileBtn"]')
3535
.clickLaunchIcon('filePanel')
3636
.isVisible({
37-
selector: '*[data-id="treeViewDivtreeViewItem.deps/npm/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol"]',
37+
selector: '*[data-id="treeViewDivtreeViewItem.deps/npm/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"]',
3838
timeout: 120000,
3939
suppressNotFoundErrors: true
4040
})
4141
.clickLaunchIcon('solidity')
4242
.click('[data-id="compilerContainerCompileBtn"]')
4343
.clickLaunchIcon('filePanel')
4444
.waitForElementVisible({
45-
selector: '*[data-id="treeViewDivtreeViewItem.deps/npm/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol"]',
45+
selector: '*[data-id="treeViewDivtreeViewItem.deps/npm/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"]',
4646
timeout: 120000,
4747
})
4848
.clickLaunchIcon('solidity')
@@ -81,6 +81,7 @@ module.exports = {
8181
.verify.visible('[data-id="contractGUIDeployWithProxyLabel"]')
8282
.waitForElementPresent('[data-id="contractGUIDeployWithProxyLabel"]')
8383
.click('[data-id="contractGUIDeployWithProxyLabel"]')
84+
.setValue('[data-id="initializeInputs-initialOwner"]', '0x5B38Da6a701c568545dCfcB03FcB875f56beddC4')
8485
.createContract('')
8586
.waitForElementContainsText('[data-id="udappNotifyModalDialogModalTitle-react"]', 'Deploy Implementation & Proxy (ERC1967)')
8687
.waitForElementVisible('[data-id="udappNotify-modal-footer-ok-react"]')
@@ -131,6 +132,7 @@ module.exports = {
131132
.setValue('//*[@id="runTabView"]/div/div[2]/div[3]/div[1]/div/div[1]/div[4]/div/div[1]/input', 'Remix')
132133
.setValue('//*[@id="runTabView"]/div/div[2]/div[3]/div[1]/div/div[1]/div[4]/div/div[2]/input', "R")
133134
.useCss()
135+
.setValue('[data-id="initializeInputs-initialOwner"]', '0x5B38Da6a701c568545dCfcB03FcB875f56beddC4')
134136
.createContract('')
135137
.waitForElementContainsText('[data-id="udappNotifyModalDialogModalTitle-react"]', 'Deploy Implementation & Proxy (ERC1967)')
136138
.waitForElementVisible('[data-id="udappNotify-modal-footer-ok-react"]')
@@ -180,6 +182,7 @@ module.exports = {
180182
.waitForElementVisible('[data-id="proxy-dropdown-items"]')
181183
.assert.textContains('[data-id="proxy-dropdown-items"]', shortenedFirstAddress)
182184
.assert.textContains('[data-id="proxy-dropdown-items"]', shortenedLastAddress)
185+
183186
.click('[data-id="proxyAddress1"]')
184187
.createContract('')
185188
.waitForElementContainsText('[data-id="udappNotifyModalDialogModalTitle-react"]', 'Deploy Implementation & Update Proxy')
@@ -250,11 +253,11 @@ const sources = [
250253
'myTokenV1.sol': {
251254
content: `
252255
// SPDX-License-Identifier: MIT
253-
pragma solidity ^0.8.4;
256+
pragma solidity ^0.8.20;
254257
255258
import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol";
256-
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
257259
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
260+
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
258261
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
259262
260263
contract MyToken is Initializable, ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable {
@@ -263,9 +266,9 @@ const sources = [
263266
_disableInitializers();
264267
}
265268
266-
function initialize() initializer public {
269+
function initialize(address initialOwner) initializer public {
267270
__ERC721_init("MyToken", "MTK");
268-
__Ownable_init();
271+
__Ownable_init(initialOwner);
269272
__UUPSUpgradeable_init();
270273
}
271274
@@ -280,6 +283,8 @@ const sources = [
280283
}, {
281284
'myTokenV2.sol': {
282285
content: `
286+
// SPDX-License-Identifier: MIT
287+
pragma solidity ^0.8.20;
283288
import "./myTokenV1.sol";
284289
285290
contract MyTokenV2 is MyToken {
@@ -293,11 +298,11 @@ const sources = [
293298
'initializeProxy.sol': {
294299
content: `
295300
// SPDX-License-Identifier: MIT
296-
pragma solidity ^0.8.4;
301+
pragma solidity ^0.8.20;
297302
298303
import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol";
299-
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
300304
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
305+
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
301306
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
302307
303308
contract MyInitializedToken is Initializable, ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable {
@@ -306,9 +311,9 @@ const sources = [
306311
_disableInitializers();
307312
}
308313
309-
function initialize(string memory tokenName, string memory tokenSymbol) initializer public {
314+
function initialize(string memory tokenName, string memory tokenSymbol, address initialOwner) initializer public {
310315
__ERC721_init(tokenName, tokenSymbol);
311-
__Ownable_init();
316+
__Ownable_init(initialOwner);
312317
__UUPSUpgradeable_init();
313318
}
314319

apps/remix-ide-e2e/src/tests/sol2uml.test.ts

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,10 @@ module.exports = {
2222
.rightClick('*[data-id="treeViewLitreeViewItemsecondContract.sol"]')
2323
.click('*[id="menuitemgeneratecustomaction"')
2424
.waitForElementVisible('*[id="sol-uml-gen"]')
25-
.isVisible('*[data-id="treeViewLitreeViewItemsecondContract_flattened.sol"]')
25+
.waitForElementVisible('*[data-id="treeViewLitreeViewItemsecondContract_flattened.sol"]')
2626
},
2727
'Zoom into uml diagram #group1': function (browser: NightwatchBrowser) {
28-
browser.addFile('secondContract.sol', sources[1]['secondContract.sol'])
29-
.waitForElementVisible('*[data-id="treeViewLitreeViewItemsecondContract.sol"')
30-
.pause(3000)
31-
.rightClick('*[data-id="treeViewLitreeViewItemsecondContract.sol"]')
32-
.click('*[id="menuitemgeneratecustomaction"')
33-
.waitForElementVisible('*[id="sol-uml-gen"]')
28+
browser
3429
.click('*[data-id="umlZoominbtn"]')
3530
}
3631
}
@@ -182,37 +177,38 @@ contract Ballot {
182177
{
183178
'secondContract.sol': {
184179
content: `
185-
// SPDX-License-Identifier: MIT
186-
pragma solidity ^0.8.9;
187-
188-
import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol";
189-
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
190-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
191-
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
192-
193-
contract MyToken is Initializable, ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable {
194-
/// @custom:oz-upgrades-unsafe-allow constructor
195-
constructor() {
196-
_disableInitializers();
197-
}
180+
// SPDX-License-Identifier: GPL-3.0
198181
199-
function initialize() initializer public {
200-
__ERC721_init("MyToken", "MTK");
201-
__Ownable_init();
202-
__UUPSUpgradeable_init();
203-
}
182+
pragma solidity ^0.5.9;
204183
205-
function safeMint(address to, uint256 tokenId) public onlyOwner {
206-
_safeMint(to, tokenId);
207-
1 + 1;
208-
}
184+
import "@0x/contracts-erc20/contracts/src/ERC20Token.sol";
209185
210-
function _authorizeUpgrade(address newImplementation)
211-
internal
212-
onlyOwner
213-
override
214-
{}
186+
/**
187+
* @title SampleERC20
188+
* @dev Create a sample ERC20 standard token
189+
*/
190+
contract SampleERC20 is ERC20Token {
191+
192+
string public name;
193+
string public symbol;
194+
uint256 public decimals;
195+
196+
constructor (
197+
string memory _name,
198+
string memory _symbol,
199+
uint256 _decimals,
200+
uint256 _totalSupply
201+
)
202+
public
203+
{
204+
name = _name;
205+
symbol = _symbol;
206+
decimals = _decimals;
207+
_totalSupply = _totalSupply;
208+
balances[msg.sender] = _totalSupply;
209+
}
215210
}
211+
216212
`}
217213
}
218214
]

0 commit comments

Comments
 (0)