mirror of
https://github.com/enso-org/enso.git
synced 2024-12-20 00:01:37 +03:00
CI fails on error (https://github.com/enso-org/ide/pull/291)
Original commit: 1de3c3413a
This commit is contained in:
parent
4af19c5745
commit
6552176247
@ -26,7 +26,10 @@ function run(cmd,args) {
|
|||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
console.log(`Calling '${cmd} ${args.join(' ')}'`)
|
console.log(`Calling '${cmd} ${args.join(' ')}'`)
|
||||||
let proc = spawn(cmd,args,{stdio:'inherit', shell:true})
|
let proc = spawn(cmd,args,{stdio:'inherit', shell:true})
|
||||||
proc.on('exit', () => resolve(out))
|
proc.on('exit', (code) => {
|
||||||
|
if (code) process.exit(code)
|
||||||
|
resolve(out)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,7 +39,10 @@ function run_read(cmd,args) {
|
|||||||
let proc = spawn(cmd,args,{shell:true})
|
let proc = spawn(cmd,args,{shell:true})
|
||||||
proc.stderr.pipe(process.stderr)
|
proc.stderr.pipe(process.stderr)
|
||||||
proc.stdout.on('data', (data) => { out += data })
|
proc.stdout.on('data', (data) => { out += data })
|
||||||
proc.on('exit', () => resolve(out))
|
proc.on('exit', (code) => {
|
||||||
|
if (code) process.exit(code);
|
||||||
|
resolve(out)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,8 @@ pub mod test_utils;
|
|||||||
use prelude::*;
|
use prelude::*;
|
||||||
|
|
||||||
use ast_macros::*;
|
use ast_macros::*;
|
||||||
use data::text::*;
|
use data::text::Index;
|
||||||
|
use data::text::Span;
|
||||||
|
|
||||||
use serde::de::Deserializer;
|
use serde::de::Deserializer;
|
||||||
use serde::de::Visitor;
|
use serde::de::Visitor;
|
||||||
@ -762,7 +763,7 @@ impl TokenConsumer for IdMapBuilder {
|
|||||||
let begin = self.offset;
|
let begin = self.offset;
|
||||||
val.shape().feed_to(self);
|
val.shape().feed_to(self);
|
||||||
if let Some(id) = val.id {
|
if let Some(id) = val.id {
|
||||||
let span = Span::from((begin, self.offset));
|
let span = Span::from_indices(Index::new(begin), Index::new(self.offset));
|
||||||
self.id_map.insert(span, id);
|
self.id_map.insert(span, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1101,6 +1102,8 @@ impl<T> From<EscapeUnicode32> for SegmentFmt<T> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
use data::text::Size;
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
|
|
||||||
/// Assert that given value round trips JSON serialization.
|
/// Assert that given value round trips JSON serialization.
|
||||||
@ -1148,9 +1151,9 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn ast_id_map() {
|
fn ast_id_map() {
|
||||||
let span = |ix,length| Span::from((ix,length));
|
let span = |ix,length| Span::new(Index::new(ix),Size::new(length));
|
||||||
let uid = default();
|
let uid = default();
|
||||||
let ids = vec![(span(0,2),uid), (span(3,5),uid), (span(0,5),uid)];
|
let ids = vec![(span(0,2),uid), (span(3,2),uid), (span(0,5),uid)];
|
||||||
let func = Ast::new(Var {name:"XX".into()}, Some(uid));
|
let func = Ast::new(Var {name:"XX".into()}, Some(uid));
|
||||||
let arg = Ast::new(Var {name:"YY".into()}, Some(uid));
|
let arg = Ast::new(Var {name:"YY".into()}, Some(uid));
|
||||||
let ast = Ast::new(Prefix {func,off:1,arg }, Some(uid));
|
let ast = Ast::new(Prefix {func,off:1,arg }, Some(uid));
|
||||||
|
@ -22,7 +22,7 @@ fn web_test() {
|
|||||||
let mut parser = Parser::new_or_panic();
|
let mut parser = Parser::new_or_panic();
|
||||||
|
|
||||||
let mut parse = |input:&str| {
|
let mut parse = |input:&str| {
|
||||||
let span = Span::from((0,input.len()));
|
let span = Span::from_beginning(Size::new(input.len()));
|
||||||
let ids = IdMap::new(vec![(span,uuid)]);
|
let ids = IdMap::new(vec![(span,uuid)]);
|
||||||
let ast = parser.parse(String::from(input), ids).unwrap().wrapped;
|
let ast = parser.parse(String::from(input), ids).unwrap().wrapped;
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ impl Handle {
|
|||||||
/// If ID doesn't have metadata, empty (default) metadata is inserted.
|
/// If ID doesn't have metadata, empty (default) metadata is inserted.
|
||||||
pub fn with_node_metadata(&self, id:ast::ID, fun:impl FnOnce(&mut NodeMetadata)) {
|
pub fn with_node_metadata(&self, id:ast::ID, fun:impl FnOnce(&mut NodeMetadata)) {
|
||||||
let module = self.module();
|
let module = self.module();
|
||||||
let mut data = module.pop_node_metadata(id).unwrap_or(default());
|
let mut data = module.pop_node_metadata(id).unwrap_or_default();
|
||||||
fun(&mut data);
|
fun(&mut data);
|
||||||
module.set_node_metadata(id, data);
|
module.set_node_metadata(id, data);
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ use parser::api::SourceFile;
|
|||||||
use ast;
|
use ast;
|
||||||
use ast::Ast;
|
use ast::Ast;
|
||||||
use ast::HasRepr;
|
use ast::HasRepr;
|
||||||
use ast::IdMap;
|
|
||||||
use ast::HasIdMap;
|
use ast::HasIdMap;
|
||||||
use ast::known;
|
use ast::known;
|
||||||
use data::text::*;
|
use data::text::*;
|
||||||
@ -282,7 +281,7 @@ impl Handle {
|
|||||||
pub fn new_mock
|
pub fn new_mock
|
||||||
( location : Location
|
( location : Location
|
||||||
, code : &str
|
, code : &str
|
||||||
, id_map : IdMap
|
, id_map : ast::IdMap
|
||||||
, file_manager : fmc::Handle
|
, file_manager : fmc::Handle
|
||||||
, mut parser : Parser
|
, mut parser : Parser
|
||||||
) -> FallibleResult<Self> {
|
) -> FallibleResult<Self> {
|
||||||
@ -353,10 +352,10 @@ mod test {
|
|||||||
let uuid2 = Uuid::new_v4();
|
let uuid2 = Uuid::new_v4();
|
||||||
let uuid3 = Uuid::new_v4();
|
let uuid3 = Uuid::new_v4();
|
||||||
let module = "2+2";
|
let module = "2+2";
|
||||||
let id_map = IdMap::new(vec!
|
let id_map = ast::IdMap::new(vec!
|
||||||
[ (Span::from((0,1)),uuid1.clone())
|
[ (Span::new(Index::new(0),Size::new(1)),uuid1.clone())
|
||||||
, (Span::from((2,1)),uuid2)
|
, (Span::new(Index::new(2),Size::new(1)),uuid2)
|
||||||
, (Span::from((0,3)),uuid3)
|
, (Span::new(Index::new(0),Size::new(3)),uuid3)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let controller = Handle::new_mock
|
let controller = Handle::new_mock
|
||||||
|
@ -79,18 +79,28 @@ impl SubAssign for Size {
|
|||||||
#[derive(Clone,Copy,Debug,Default,PartialEq,Eq,PartialOrd,Ord,Serialize,Deserialize)]
|
#[derive(Clone,Copy,Debug,Default,PartialEq,Eq,PartialOrd,Ord,Serialize,Deserialize)]
|
||||||
pub struct Span { pub index:Index, pub size:Size }
|
pub struct Span { pub index:Index, pub size:Size }
|
||||||
|
|
||||||
impl From<(usize,usize)> for Span {
|
|
||||||
fn from(val:(usize, usize)) -> Span {
|
|
||||||
Span::new(Index::new(val.0), Size::new(val.1))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Span {
|
impl Span {
|
||||||
/// Initializes Span with given values.
|
/// Initializes Span with given values.
|
||||||
pub fn new(index:Index, size:Size) -> Self {
|
pub fn new(index:Index, size:Size) -> Self {
|
||||||
Span {index,size}
|
Span {index,size}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a span describing a range between two indices.
|
||||||
|
pub fn from_indices(begin:Index, end:Index) -> Self {
|
||||||
|
if end < begin {
|
||||||
|
Self::from_indices(end,begin)
|
||||||
|
} else {
|
||||||
|
let index = begin;
|
||||||
|
let size = end - begin;
|
||||||
|
Span {index,size}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a span from zero index with given length.
|
||||||
|
pub fn from_beginning(size:Size) -> Self {
|
||||||
|
Span {index:Index::new(0), size}
|
||||||
|
}
|
||||||
|
|
||||||
/// Get the character after last character of this span.
|
/// Get the character after last character of this span.
|
||||||
///
|
///
|
||||||
/// If span has size 0, it returns the `index` field.
|
/// If span has size 0, it returns the `index` field.
|
||||||
|
Loading…
Reference in New Issue
Block a user