forked from Rust-related/RustPython
refactor tests
This commit is contained in:
@@ -33,7 +33,7 @@ pattern_pattern = re.compile(r"^((\s*)\/\/\s*pattern\s+(\w+)\s+=\s+(.+?))$(?:.+?
|
||||
def replace_compiled(m):
|
||||
line, indent, varname, pattern = m.groups()
|
||||
pattern = eval(pattern, {"re": CompiledPattern})
|
||||
pattern = f"Pattern {{ code: &{json.dumps(pattern.code)}, flags: SreFlag::from_bits_truncate({int(pattern.flags)}) }}"
|
||||
pattern = f"Pattern {{ code: &{json.dumps(pattern.code)} }}"
|
||||
return f'''{line}
|
||||
{indent}// START GENERATED by generate_tests.py
|
||||
{indent}#[rustfmt::skip] let {varname} = {pattern};
|
||||
|
||||
@@ -81,7 +81,7 @@ pub struct State<'a, S: StrDrive> {
|
||||
pub string_position: usize,
|
||||
next_context: Option<MatchContext<'a, S>>,
|
||||
popped_has_matched: bool,
|
||||
has_matched: bool,
|
||||
pub has_matched: bool,
|
||||
}
|
||||
|
||||
impl<'a, S: StrDrive> State<'a, S> {
|
||||
@@ -696,7 +696,7 @@ fn op_repeat<'a, S: StrDrive>(
|
||||
|
||||
state.string_position = ctx.string_position;
|
||||
|
||||
let repeat_ctx_id = state.repeat_stack.len();
|
||||
let repeat_ctx_id = state.repeat_stack.len() - 1;
|
||||
|
||||
// let next_ctx = next_ctx!(from 1, state, ctx, |state, ctx| {
|
||||
let next_ctx = ctx.next_from(1, req, state, |req, state, ctx| {
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
use sre_engine::constants::SreFlag;
|
||||
use sre_engine::engine;
|
||||
|
||||
struct Pattern {
|
||||
code: &'static [u32],
|
||||
flags: SreFlag,
|
||||
}
|
||||
|
||||
impl Pattern {
|
||||
fn state<'a, S: engine::StrDrive>(
|
||||
&self,
|
||||
string: S,
|
||||
range: std::ops::Range<usize>,
|
||||
) -> engine::State<'a, S> {
|
||||
engine::State::new(string, range.start, range.end, self.flags, self.code)
|
||||
) -> (engine::Request<'a, S>, engine::State<'a, S>) {
|
||||
let req = engine::Request::new(string, 0, usize::MAX, self.code, false);
|
||||
let state = engine::State::new(0);
|
||||
(req, state)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,10 +19,10 @@ impl Pattern {
|
||||
fn test_2427() {
|
||||
// pattern lookbehind = re.compile(r'(?<!\.)x\b')
|
||||
// START GENERATED by generate_tests.py
|
||||
#[rustfmt::skip] let lookbehind = Pattern { code: &[15, 4, 0, 1, 1, 5, 5, 1, 17, 46, 1, 17, 120, 6, 10, 1], flags: SreFlag::from_bits_truncate(32) };
|
||||
#[rustfmt::skip] let lookbehind = Pattern { code: &[15, 4, 0, 1, 1, 5, 5, 1, 17, 46, 1, 17, 120, 6, 10, 1] };
|
||||
// END GENERATED
|
||||
let mut state = lookbehind.state("x", 0..usize::MAX);
|
||||
state.pymatch();
|
||||
let (mut req, mut state) = lookbehind.state("x");
|
||||
state.pymatch(&mut req);
|
||||
assert!(state.has_matched);
|
||||
}
|
||||
|
||||
@@ -31,10 +30,10 @@ fn test_2427() {
|
||||
fn test_assert() {
|
||||
// pattern positive_lookbehind = re.compile(r'(?<=abc)def')
|
||||
// START GENERATED by generate_tests.py
|
||||
#[rustfmt::skip] let positive_lookbehind = Pattern { code: &[15, 4, 0, 3, 3, 4, 9, 3, 17, 97, 17, 98, 17, 99, 1, 17, 100, 17, 101, 17, 102, 1], flags: SreFlag::from_bits_truncate(32) };
|
||||
#[rustfmt::skip] let positive_lookbehind = Pattern { code: &[15, 4, 0, 3, 3, 4, 9, 3, 17, 97, 17, 98, 17, 99, 1, 17, 100, 17, 101, 17, 102, 1] };
|
||||
// END GENERATED
|
||||
let mut state = positive_lookbehind.state("abcdef", 0..usize::MAX);
|
||||
state.search();
|
||||
let (mut req, mut state) = positive_lookbehind.state("abcdef");
|
||||
state.search(&mut req);
|
||||
assert!(state.has_matched);
|
||||
}
|
||||
|
||||
@@ -42,10 +41,10 @@ fn test_assert() {
|
||||
fn test_string_boundaries() {
|
||||
// pattern big_b = re.compile(r'\B')
|
||||
// START GENERATED by generate_tests.py
|
||||
#[rustfmt::skip] let big_b = Pattern { code: &[15, 4, 0, 0, 0, 6, 11, 1], flags: SreFlag::from_bits_truncate(32) };
|
||||
#[rustfmt::skip] let big_b = Pattern { code: &[15, 4, 0, 0, 0, 6, 11, 1] };
|
||||
// END GENERATED
|
||||
let mut state = big_b.state("", 0..usize::MAX);
|
||||
state.search();
|
||||
let (mut req, mut state) = big_b.state("");
|
||||
state.search(&mut req);
|
||||
assert!(!state.has_matched);
|
||||
}
|
||||
|
||||
@@ -53,11 +52,11 @@ fn test_string_boundaries() {
|
||||
fn test_zerowidth() {
|
||||
// pattern p = re.compile(r'\b|:+')
|
||||
// START GENERATED by generate_tests.py
|
||||
#[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 7, 5, 6, 10, 16, 12, 10, 25, 6, 1, 4294967295, 17, 58, 1, 16, 2, 0, 1], flags: SreFlag::from_bits_truncate(32) };
|
||||
#[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 7, 5, 6, 10, 16, 12, 10, 25, 6, 1, 4294967295, 17, 58, 1, 16, 2, 0, 1] };
|
||||
// END GENERATED
|
||||
let mut state = p.state("a:", 0..usize::MAX);
|
||||
state.must_advance = true;
|
||||
state.search();
|
||||
let (mut req, mut state) = p.state("a:");
|
||||
req.must_advance = true;
|
||||
state.search(&mut req);
|
||||
assert!(state.string_position == 1);
|
||||
}
|
||||
|
||||
@@ -65,10 +64,10 @@ fn test_zerowidth() {
|
||||
fn test_repeat_context_panic() {
|
||||
// pattern p = re.compile(r'(?:a*?(xx)??z)*')
|
||||
// START GENERATED by generate_tests.py
|
||||
#[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 24, 25, 0, 4294967295, 27, 6, 0, 4294967295, 17, 97, 1, 24, 11, 0, 1, 18, 0, 17, 120, 17, 120, 18, 1, 20, 17, 122, 19, 1], flags: SreFlag::from_bits_truncate(32) };
|
||||
#[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 24, 25, 0, 4294967295, 27, 6, 0, 4294967295, 17, 97, 1, 24, 11, 0, 1, 18, 0, 17, 120, 17, 120, 18, 1, 20, 17, 122, 19, 1] };
|
||||
// END GENERATED
|
||||
let mut state = p.state("axxzaz", 0..usize::MAX);
|
||||
state.pymatch();
|
||||
let (mut req, mut state) = p.state("axxzaz");
|
||||
state.pymatch(&mut req);
|
||||
assert!(state.marks == vec![Some(1), Some(3)]);
|
||||
}
|
||||
|
||||
@@ -76,9 +75,9 @@ fn test_repeat_context_panic() {
|
||||
fn test_double_max_until() {
|
||||
// pattern p = re.compile(r'((1)?)*')
|
||||
// START GENERATED by generate_tests.py
|
||||
#[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 24, 18, 0, 4294967295, 18, 0, 24, 9, 0, 1, 18, 2, 17, 49, 18, 3, 19, 18, 1, 19, 1], flags: SreFlag::from_bits_truncate(32) };
|
||||
#[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 24, 18, 0, 4294967295, 18, 0, 24, 9, 0, 1, 18, 2, 17, 49, 18, 3, 19, 18, 1, 19, 1] };
|
||||
// END GENERATED
|
||||
let mut state = p.state("1111", 0..usize::MAX);
|
||||
state.pymatch();
|
||||
let (mut req, mut state) = p.state("1111");
|
||||
state.pymatch(&mut req);
|
||||
assert!(state.string_position == 4);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user