implementing deployment failure in terminal

pull/5370/head
davidzagi93@gmail.com 3 years ago
parent a6753907bb
commit 787eaeaef1
  1. 1
      apps/remix-ide-e2e/src/tests/defaultLayout.test.ts
  2. 1
      apps/remix-ide-e2e/src/tests/libraryDeployment.test.ts
  3. 7
      apps/remix-ide/src/app/panels/terminal.js
  4. 25
      libs/remix-ui/terminal/src/lib/actions/terminalAction.ts
  5. 7
      libs/remix-ui/terminal/src/lib/reducers/terminalReducer.ts
  6. 20
      libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx

@ -50,6 +50,7 @@ module.exports = {
'Toggles Terminal': function (browser: NightwatchBrowser) { 'Toggles Terminal': function (browser: NightwatchBrowser) {
browser.waitForElementVisible('div[data-id="terminalContainer"]') browser.waitForElementVisible('div[data-id="terminalContainer"]')
.pause(5000)
.assert.visible('div[data-id="terminalContainerDisplay"]') .assert.visible('div[data-id="terminalContainerDisplay"]')
.click('i[data-id="terminalToggleIcon"]') .click('i[data-id="terminalToggleIcon"]')
.checkElementStyle('div[data-id="terminalToggleMenu"]', 'height', '35px') .checkElementStyle('div[data-id="terminalToggleMenu"]', 'height', '35px')

@ -77,6 +77,7 @@ function checkDeployShouldFail (browser: NightwatchBrowser, callback: VoidFuncti
.clickLaunchIcon('udapp') .clickLaunchIcon('udapp')
.selectContract('test') // deploy lib .selectContract('test') // deploy lib
.createContract('') .createContract('')
.pause(60000)
.getText('div[class^="terminal"]', (value) => { .getText('div[class^="terminal"]', (value) => {
console.log('value: ', value) console.log('value: ', value)
}) })

@ -88,6 +88,7 @@ class Terminal extends Plugin {
this.call('menuicons', 'select', 'debugger') this.call('menuicons', 'select', 'debugger')
this.call('debugger', 'debug', hash) this.call('debugger', 'debug', hash)
}) })
this.logHtmlResponse = []
} }
onActivation () { onActivation () {
@ -102,8 +103,9 @@ class Terminal extends Plugin {
} }
logHtml (html) { logHtml (html) {
var command = this.commands.html // console.log({ html: html.innerText })
if (typeof command === 'function') command(html) this.logHtmlResponse.push(html.innerText)
this.renderComponent()
} }
render () { render () {
@ -138,6 +140,7 @@ class Terminal extends Plugin {
commands = {this.commands} commands = {this.commands}
txListener = {this.txListener} txListener = {this.txListener}
eventsDecoder = {this.eventsDecoder} eventsDecoder = {this.eventsDecoder}
logHtml = {this.logHtmlResponse}
/>, />,
this.element this.element
) )

@ -1,5 +1,6 @@
export const registerCommandAction = (name, command, activate, dispatch) => { export const registerCommandAction = (name, command, activate, dispatch) => {
console.log(name, ' object key')
const commands: any = {} const commands: any = {}
const _commands: any = {} const _commands: any = {}
_commands[name] = command _commands[name] = command
@ -90,6 +91,8 @@ export const registerCommandAction = (name, command, activate, dispatch) => {
console.log({ scopedCommands }) console.log({ scopedCommands })
return scopedCommands return scopedCommands
} }
console.log('david test dispatch')
} }
export const filterFnAction = (name, filterFn, dispatch) => { export const filterFnAction = (name, filterFn, dispatch) => {
@ -170,23 +173,8 @@ export const initListeningOnNetwork = (props, dispatch) => {
// log(this, tx, null) // log(this, tx, null)
}) })
props.txListener.event.register('newTransaction', (tx, receipt) => { props.txListener.event.register('newTransaction', (tx, receipt) => {
console.log('new Transaction now')
log(props, tx, receipt, dispatch) log(props, tx, receipt, dispatch)
registerCommandAction('knownTransaction', function (args, cmds, append) {
var data = args[0]
console.log({ data })
// let el
// if (data.tx.isCall) {
// console.log({ data })
// // el = renderCall(this, data)
// } else {
// // el = renderKnownTransaction(this, data, blockchain)
// }
// this.seen[data.tx.hash] = el
// append(el)
}, { activate: true }, dispatch)
// const result = Object.assign([], tx)
// console.log({ result })
// scriptRunnerDispatch({ type: 'knownTransaction', payload: { message: result } })
}) })
const log = async (props, tx, receipt, dispatch) => { const log = async (props, tx, receipt, dispatch) => {
@ -214,9 +202,12 @@ export const initListeningOnNetwork = (props, dispatch) => {
props.txListener.event.register('debuggingRequested', async (hash) => { props.txListener.event.register('debuggingRequested', async (hash) => {
// TODO should probably be in the run module // TODO should probably be in the run module
console.log({ hash }, 'register Call')
if (!await props.options.appManager.isActive('debugger')) await props.options.appManager.activatePlugin('debugger') if (!await props.options.appManager.isActive('debugger')) await props.options.appManager.activatePlugin('debugger')
props.thisState.call('menuicons', 'select', 'debugger') props.thisState.call('menuicons', 'select', 'debugger')
props.thisState.call('debugger', 'debug', hash) props.thisState.call('debugger', 'debug', hash)
}) })
props.thisState.on('udapp', 'logHtml', (log) => {
console.log({ log }, ' listen to logHTML call')
})
} }

@ -141,9 +141,12 @@ export const remixWelcomeTextReducer = (state, action) => {
} }
export const registerScriptRunnerReducer = (state, action) => { export const registerScriptRunnerReducer = (state, action) => {
const result = Object.assign([], action.payload.message)
console.log({ result })
switch (action.type) { switch (action.type) {
case 'html':
return {
...state,
journalBlocks: initialState.journalBlocks.push({ message: action.payload.message, style: 'text-log' })
}
case 'log': case 'log':
return { return {
...state, ...state,

@ -44,7 +44,8 @@ export interface RemixUiTerminalProps {
registry: any, registry: any,
commands: any, commands: any,
txListener: any, txListener: any,
eventsDecoder: any eventsDecoder: any,
logHtml: any
} }
export interface ClipboardEvent<T = Element> extends SyntheticEvent<T, any> { export interface ClipboardEvent<T = Element> extends SyntheticEvent<T, any> {
@ -102,6 +103,11 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => {
messagesEndRef.current.scrollIntoView({ behavior: 'smooth' }) messagesEndRef.current.scrollIntoView({ behavior: 'smooth' })
} }
useEffect(() => {
scriptRunnerDispatch({ type: 'html', payload: { message: props.logHtml } })
}, [props.logHtml])
console.log({ logHtml: props.logHtml })
// events // events
useEffect(() => { useEffect(() => {
initListeningOnNetwork(props, scriptRunnerDispatch) initListeningOnNetwork(props, scriptRunnerDispatch)
@ -109,7 +115,6 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => {
registerInfoScriptRunnerAction(props.thisState, 'info', newstate.commands, scriptRunnerDispatch) registerInfoScriptRunnerAction(props.thisState, 'info', newstate.commands, scriptRunnerDispatch)
registerWarnScriptRunnerAction(props.thisState, 'warn', newstate.commands, scriptRunnerDispatch) registerWarnScriptRunnerAction(props.thisState, 'warn', newstate.commands, scriptRunnerDispatch)
registerErrorScriptRunnerAction(props.thisState, 'error', newstate.commands, scriptRunnerDispatch) registerErrorScriptRunnerAction(props.thisState, 'error', newstate.commands, scriptRunnerDispatch)
registerCommandAction('html', _blocksRenderer('html'), { activate: true }, dispatch) registerCommandAction('html', _blocksRenderer('html'), { activate: true }, dispatch)
registerCommandAction('log', _blocksRenderer('log'), { activate: true }, dispatch) registerCommandAction('log', _blocksRenderer('log'), { activate: true }, dispatch)
registerCommandAction('info', _blocksRenderer('info'), { activate: true }, dispatch) registerCommandAction('info', _blocksRenderer('info'), { activate: true }, dispatch)
@ -118,12 +123,13 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => {
registerCommandAction('script', function execute (args, scopedCommands, append) { registerCommandAction('script', function execute (args, scopedCommands, append) {
var script = String(args[0]) var script = String(args[0])
console.log({ script }, 'script')
_shell(script, scopedCommands, function (error, output) { _shell(script, scopedCommands, function (error, output) {
if (error) scriptRunnerDispatch({ type: 'error', payload: { message: error } }) if (error) scriptRunnerDispatch({ type: 'error', payload: { message: error } })
if (output) scriptRunnerDispatch({ type: 'script', payload: { message: '5' } }) if (output) scriptRunnerDispatch({ type: 'script', payload: { message: '5' } })
}) })
}, { activate: true }, dispatch) }, { activate: true }, dispatch)
}, [props.thisState.autoCompletePopup, autoCompletState.text]) }, [props.thisState.autoCompletePopup, autoCompletState.text, props.logHtml])
useEffect(() => { useEffect(() => {
scrollToBottom() scrollToBottom()
@ -870,15 +876,15 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => {
{ {
handleAutoComplete() handleAutoComplete()
} }
<div data-id="terminalContainerDisplay" style = {{ <div data-id='terminalContainerDisplay' style = {{
position: 'absolute', position: 'absolute',
height: '100', height: '100%',
width: '100', width: '100%',
opacity: '0.1', opacity: '0.1',
zIndex: -1 zIndex: -1
}}></div> }}></div>
<div className="terminal"> <div className="terminal">
<div id="journal" className="journal" data-id="terminalJournal"> <div id='journal' className='journal' data-id='terminalJournal'>
{!clearConsole && <TerminalWelcomeMessage packageJson={props.version}/>} {!clearConsole && <TerminalWelcomeMessage packageJson={props.version}/>}
{newstate.journalBlocks && newstate.journalBlocks.map((x, index) => { {newstate.journalBlocks && newstate.journalBlocks.map((x, index) => {
if (x.name === 'emptyBlock') { if (x.name === 'emptyBlock') {

Loading…
Cancel
Save