Skip to content

Commit 3aad683

Browse files
author
filip mertens
committed
flat test
flatten fix flatten fix sol version rm comment update OZ hover fix proxy test fix hover test test disable proxy url test fix uml test fix erc1155 test fix proxy validate fix url test fix OZ proxy cleanup cleanup
1 parent 6f7f567 commit 3aad683

File tree

18 files changed

+561
-166
lines changed

18 files changed

+561
-166
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)