function verify_compile_success(source, expected) { var ast = JuttleParser.parseFilter(source).ast; var semantic = new SemanticPass({ now: new JuttleMoment() }); semantic.sa_expr(ast); ast = simplifier.simplify(ast); var compiler = new FilterAWSCompiler({ supported_products: ['EC2', 'EBS'] }); var search_expr = compiler.compile(ast); expect(search_expr).to.deep.equal(expected); }
function verify_compile_error(source, feature) { var ast = JuttleParser.parseFilter(source).ast; var semantic = new SemanticPass({ now: new JuttleMoment() }); semantic.sa_expr(ast); ast = simplifier.simplify(ast); var compiler = compiler || new FilterAWSCompiler({ supported_products: ['EC2', 'EBS'] }); try { compiler.compile(ast); throw new Error('Compile succeeded when it should have failed'); } catch (e) { expect(e).to.be.instanceOf(JuttleErrors.CompileError); expect(e.code).to.equal('FILTER-FEATURE-NOT-SUPPORTED'); expect(e.info.feature).to.equal(feature); } }