Skip to content

Commit 890741a

Browse files
Move test_utils out of library
Previously the test_utils were part of the public API (albeit their documentation was hidden), so that they could be used by a single unit test. Since the unit test only used public APIs, we can just move it to the integration tests, allowing us to outsource the test_utils.
1 parent ea0eb1b commit 890741a

File tree

6 files changed

+40
-78
lines changed

6 files changed

+40
-78
lines changed

src/lib.rs

-6
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,3 @@ pub mod dialect;
4545
pub mod keywords;
4646
pub mod parser;
4747
pub mod tokenizer;
48-
49-
#[doc(hidden)]
50-
// This is required to make utilities accessible by both the crate-internal
51-
// unit-tests and by the integration tests <https://stackoverflow.com/a/44541071/1026>
52-
// External users are not supposed to rely on this module.
53-
pub mod test_utils;

src/parser.rs

-27
Original file line numberDiff line numberDiff line change
@@ -3629,30 +3629,3 @@ impl Word {
36293629
}
36303630
}
36313631
}
3632-
3633-
#[cfg(test)]
3634-
mod tests {
3635-
use super::*;
3636-
use crate::test_utils::all_dialects;
3637-
3638-
#[test]
3639-
fn test_prev_index() {
3640-
let sql = "SELECT version";
3641-
all_dialects().run_parser_method(sql, |parser| {
3642-
assert_eq!(parser.peek_token(), Token::make_keyword("SELECT"));
3643-
assert_eq!(parser.next_token(), Token::make_keyword("SELECT"));
3644-
parser.prev_token();
3645-
assert_eq!(parser.next_token(), Token::make_keyword("SELECT"));
3646-
assert_eq!(parser.next_token(), Token::make_word("version", None));
3647-
parser.prev_token();
3648-
assert_eq!(parser.peek_token(), Token::make_word("version", None));
3649-
assert_eq!(parser.next_token(), Token::make_word("version", None));
3650-
assert_eq!(parser.peek_token(), Token::EOF);
3651-
parser.prev_token();
3652-
assert_eq!(parser.next_token(), Token::make_word("version", None));
3653-
assert_eq!(parser.next_token(), Token::EOF);
3654-
assert_eq!(parser.next_token(), Token::EOF);
3655-
parser.prev_token();
3656-
});
3657-
}
3658-
}

tests/sqlparser_common.rs

+22
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,32 @@ use sqlparser::ast::*;
2525
use sqlparser::dialect::{GenericDialect, PostgreSqlDialect, SQLiteDialect};
2626
use sqlparser::keywords::ALL_KEYWORDS;
2727
use sqlparser::parser::{Parser, ParserError};
28+
use sqlparser::tokenizer::Token;
2829
use test_utils::{
2930
all_dialects, expr_from_projection, join, number, only, table, table_alias, TestedDialects,
3031
};
3132

33+
#[test]
34+
fn test_prev_index() {
35+
let sql = "SELECT version";
36+
all_dialects().run_parser_method(sql, |parser| {
37+
assert_eq!(parser.peek_token(), Token::make_keyword("SELECT"));
38+
assert_eq!(parser.next_token(), Token::make_keyword("SELECT"));
39+
parser.prev_token();
40+
assert_eq!(parser.next_token(), Token::make_keyword("SELECT"));
41+
assert_eq!(parser.next_token(), Token::make_word("version", None));
42+
parser.prev_token();
43+
assert_eq!(parser.peek_token(), Token::make_word("version", None));
44+
assert_eq!(parser.next_token(), Token::make_word("version", None));
45+
assert_eq!(parser.peek_token(), Token::EOF);
46+
parser.prev_token();
47+
assert_eq!(parser.next_token(), Token::make_word("version", None));
48+
assert_eq!(parser.next_token(), Token::EOF);
49+
assert_eq!(parser.next_token(), Token::EOF);
50+
parser.prev_token();
51+
});
52+
}
53+
3254
#[test]
3355
fn parse_insert_values() {
3456
let row = vec![

tests/sqlparser_hive.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
//! Test SQL syntax specific to Hive. The parser based on the generic dialect
1616
//! is also tested (on the inputs it can handle).
1717
18+
mod test_utils;
19+
1820
use sqlparser::dialect::HiveDialect;
19-
use sqlparser::test_utils::*;
21+
use test_utils::*;
2022

2123
#[test]
2224
fn parse_table_create() {

src/test_utils.rs renamed to tests/test_utils.rs

+15-10
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,7 @@
1010
// See the License for the specific language governing permissions and
1111
// limitations under the License.
1212

13-
/// This module contains internal utilities used for testing the library.
14-
/// While technically public, the library's users are not supposed to rely
15-
/// on this module, as it will change without notice.
16-
//
17-
// Integration tests (i.e. everything under `tests/`) import this
18-
// via `tests/test_utils/mod.rs`.
13+
#![allow(dead_code)]
1914

2015
#[cfg(not(feature = "std"))]
2116
use alloc::{
@@ -26,10 +21,20 @@ use alloc::{
2621
};
2722
use core::fmt::Debug;
2823

29-
use crate::ast::*;
30-
use crate::dialect::*;
31-
use crate::parser::{Parser, ParserError};
32-
use crate::tokenizer::Tokenizer;
24+
use sqlparser::ast::*;
25+
use sqlparser::dialect::*;
26+
use sqlparser::parser::{Parser, ParserError};
27+
use sqlparser::tokenizer::Tokenizer;
28+
29+
#[macro_export]
30+
macro_rules! nest {
31+
($base:expr $(, $join:expr)*) => {
32+
TableFactor::NestedJoin(Box::new(TableWithJoins {
33+
relation: $base,
34+
joins: vec![$(join($join)),*]
35+
}))
36+
};
37+
}
3338

3439
/// Tests use the methods on this struct to invoke the parser on one or
3540
/// multiple dialects.

tests/test_utils/mod.rs

-34
This file was deleted.

0 commit comments

Comments
 (0)