From 58a4fcc792b9e5401c9461e51561e95714c1d2e7 Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Wed, 21 Feb 2024 03:33:29 -0500 Subject: [PATCH] chore: get rid of `github_issue_test` file --- cli/src/tests/github_issue_test.rs | 42 ------------------------------ cli/src/tests/mod.rs | 1 - cli/src/tests/query_test.rs | 32 +++++++++++++++++++++++ 3 files changed, 32 insertions(+), 43 deletions(-) delete mode 100644 cli/src/tests/github_issue_test.rs diff --git a/cli/src/tests/github_issue_test.rs b/cli/src/tests/github_issue_test.rs deleted file mode 100644 index b88007eb..00000000 --- a/cli/src/tests/github_issue_test.rs +++ /dev/null @@ -1,42 +0,0 @@ -// Tests in this mod need be executed with enabled UBSAN library: -// ``` -// UBSAN_OPTIONS="halt_on_error=1" \ -// CFLAGS="-fsanitize=undefined" \ -// RUSTFLAGS="-lubsan" \ -// cargo test --target $(rustc -vV | sed -nr 's/^host: //p') -- --test-threads 1 -// ``` - -use super::helpers::query_helpers::assert_query_matches; -use crate::tests::helpers::fixtures::get_language; -use indoc::indoc; -use tree_sitter::Query; - -#[test] -fn issue_2162_out_of_bound() { - let language = get_language("java"); - assert!(Query::new(&language, "(package_declaration _ (_) @name _)").is_ok()); -} - -#[test] -fn issue_2107_first_child_group_anchor_had_no_effect() { - let language = get_language("c"); - let source_code = indoc! {r" - void fun(int a, char b, int c) { }; - "}; - let query = indoc! {r#" - (parameter_list - . - ( - (parameter_declaration) @constant - (#match? @constant "^int") - ) - ) - "#}; - let query = Query::new(&language, query).unwrap(); - assert_query_matches( - &language, - &query, - source_code, - &[(0, vec![("constant", "int a")])], - ); -} diff --git a/cli/src/tests/mod.rs b/cli/src/tests/mod.rs index 8630c950..596bc8d1 100644 --- a/cli/src/tests/mod.rs +++ b/cli/src/tests/mod.rs @@ -1,7 +1,6 @@ mod async_context_test; mod corpus_test; mod detect_language; -mod github_issue_test; mod helpers; mod highlight_test; mod language_test; diff --git a/cli/src/tests/query_test.rs b/cli/src/tests/query_test.rs index c8aacd03..e2c3fd82 100644 --- a/cli/src/tests/query_test.rs +++ b/cli/src/tests/query_test.rs @@ -5072,3 +5072,35 @@ fn test_grammar_with_aliased_literal_query() { assert!(query.is_ok()); } + +#[test] +fn test_query_with_first_child_in_group_is_anchor() { + let language = get_language("c"); + let source_code = r"void fun(int a, char b, int c) { };"; + let query = r#" + (parameter_list + . + ((parameter_declaration) @constant + (#match? @constant "^int")))"#; + let query = Query::new(&language, query).unwrap(); + assert_query_matches( + &language, + &query, + source_code, + &[(0, vec![("constant", "int a")])], + ); +} + +// This test needs be executed with UBSAN enabled to check for regressions: +// ``` +// UBSAN_OPTIONS="halt_on_error=1" \ +// CFLAGS="-fsanitize=undefined" \ +// RUSTFLAGS="-lubsan" \ +// cargo test --target $(rustc -vV | sed -nr 's/^host: //p') -- --test-threads 1 +// ``` +#[test] +fn test_query_compiler_oob_access() { + let language = get_language("java"); + // UBSAN should not report any OOB access + assert!(Query::new(&language, "(package_declaration _ (_) @name _)").is_ok()); +}