def test_osh_selector_var_sub(self, state): target = state.ast_dispatcher.nodes.get("SimpleVarSub") word = check_edge(state, "words", 2) varsub = check_edge(word, "parts", 0) assert isinstance(varsub.student_ast, target) assert varsub.student_ast.token.val == "$b"
def test_osh_selector_var_sub(self, state): target = state.ast_dispatcher.nodes.get('SimpleVarSub') cl = check_node(state, "SimpleCommand") word = check_edge(cl, 'words', 2) varsub = check_edge(word, 'parts', 0) assert isinstance(varsub.student_ast, target) assert varsub.student_ast.token == "$b"
def test_has_equal_ast_field_fail(): state = prepare_state("SELECT id, name FROM Trips", "SELECT name FROM Trips") sel = check_node(state, "SelectStmt", 0) tl = check_edge(sel, "target_list", 0) with pytest.raises(TF): has_equal_ast(tl)
def test_check_edge_antlr_exception_skips(dialect_name): state = prepare_state("SELECT x FROM ___!", "SELECT x FROM ___!", dialect_name) assert isinstance(state.student_ast, state.ast_dispatcher.ast_mod.ParseError) select = check_edge(state, "where", 0) # should be skipped assert select is state
def test_where_brackets_with_has_code(): state = prepare_state("SELECT a FROM b WHERE c AND d", "SELECT a FROM b WHERE (d AND c)") sel = check_node(state, "SelectStmt") wc = check_edge(sel, "where_clause") has_code(wc, "d") with pytest.raises(TF): has_code(wc, "not_there")
def test_osh_selector_result(self, state): target = state.ast_dispatcher.nodes.get('CompoundWord') cl = check_node(state, "SimpleCommand") cmd = check_edge(cl, 'words', 0) assert isinstance(cmd.student_ast, target) assert cmd.student_ast.parts[0].token == "echo"
def test_has_equal_ast_subcode(self, state): word = check_edge(state, "words", 0) has_equal_ast(word)
def test_osh_selector_result(self, state): target = state.ast_dispatcher.nodes.get("CompoundWord") cmd = check_edge(state, "words", 0) assert isinstance(cmd.student_ast, target) assert cmd.student_ast.parts[0].token.val == "echo"
def test_osh_selector_fail(self, state): child = check_node(state, 'SimpleCommand') with pytest.raises(TF): check_edge(child, 'words', 4)
def test_osh_selector_fail(self, state): with pytest.raises(TF): check_edge(state, "words", 4)
def test_has_code_subset_re_pass2(state_tst): select = check_node(state_tst, "SelectStmt", 0) where = check_edge(select, "where_clause") with pytest.raises(TF): has_code(where, "id > [a-z]")
def test_has_equal_ast_field_success(): state = prepare_state("SELECT name FROM Trips", "SELECT name FROM Trips") sel = check_node(state, "SelectStmt", 0) tl = check_edge(sel, "target_list", 0) has_equal_ast(tl)
def test_has_code_fixed_subset_fail2(state_tst): select = check_node(state_tst, "SelectStmt", 0) where = check_edge(select, "where_clause") with pytest.raises(TF): has_code(where, "WHERE id > 4", fixed=True)
def test_has_code_subset_re_pass(state_tst): select = check_node(state_tst, "SelectStmt", 0) where = check_edge(select, "where_clause") has_code(where, "id > [0-9]")
def test_has_equal_ast_subcode(self, state): word = check_edge(check_node(state, 'SimpleCommand'), 'words', 0) has_equal_ast(word)
def test_has_code_fixed_subset_pass(state_tst): select = check_node(state_tst, "SelectStmt", 0) where = check_edge(select, "where_clause") has_code(where, "id > 4", fixed=True)
def test_check_edge_index_none_fail(): state = prepare_state("SELECT a, b FROM b WHERE a < 10", "SELECT a FROM b") sel = check_node(state, "SelectStmt") with pytest.raises(TF): check_edge(sel, "where_clause")
def test_check_node_from_list(): state = prepare_state("SELECT a, b, c FROM x", "SELECT a, b, c FROM x") sel = check_node(state, "SelectStmt", 0) tl = check_edge(sel, "target_list", None) check_node(tl, "Identifier")
def test_check_edge_index_fail(): state = prepare_state("SELECT id, name FROM Trips", "SELECT id FROM Trips") select = check_node(state, "SelectStmt", 0) with pytest.raises(TF): check_edge(select, "target_list", 1)
def test_check_edge_index_pass(): state = prepare_state("SELECT id, name FROM Trips", "SELECT id, name FROM Trips") select = check_node(state, "SelectStmt", 0) check_edge(select, "target_list", 1)
def test_check_edge_fail(): state = prepare_state("SELECT id FROM Trips WHERE id > 3", "SELECT id FROM Trips WHERE id>4") select = check_node(state, "SelectStmt", 0) check_edge(select, "where_clause")