sysmaster/backport-test-devmaster-test-exception-scenarios-on-parsing-r.patch

72 lines
2.0 KiB
Diff
Raw Normal View History

2023-12-07 00:19:38 +08:00
From d661f601e4bb2b3ffcbb1db5bd11a51c6cf8abc1 Mon Sep 17 00:00:00 2001
From: chenjiayi <chenjiayi22@huawei.com>
Date: Fri, 17 Nov 2023 01:15:00 +0800
Subject: [PATCH 068/103] test(devmaster): test exception scenarios on parsing
rules
---
exts/devmaster/src/lib/rules/rules_load.rs | 38 ++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/exts/devmaster/src/lib/rules/rules_load.rs b/exts/devmaster/src/lib/rules/rules_load.rs
index cd90c271..19b7aaa4 100644
--- a/exts/devmaster/src/lib/rules/rules_load.rs
+++ b/exts/devmaster/src/lib/rules/rules_load.rs
@@ -1725,10 +1725,13 @@ impl RuleToken {
#[cfg(test)]
mod tests {
use crate::config::*;
+ use basic::fs_util::touch_file;
use log::init_log;
use log::Level;
use super::*;
+ use std::fs::create_dir_all;
+ use std::fs::remove_dir_all;
use std::{fs, path::Path, thread::JoinHandle};
fn create_test_rules_dir(dir: &'static str) {
@@ -2099,4 +2102,39 @@ SYMLINK += \"test111111\"",
);
assert_eq!(token.read().unwrap().as_ref().unwrap().value, "0");
}
+
+ #[test]
+ fn test_parse_rules() {
+ create_dir_all("/tmp/devmaster/rules").unwrap();
+
+ /* Normal rule file. */
+ touch_file(
+ "/tmp/devmaster/rules/00-a.rules",
+ false,
+ Some(0o777),
+ None,
+ None,
+ )
+ .unwrap();
+ /* Skip parsing the file with invalid suffix. */
+ touch_file("/tmp/devmaster/rules/01-b", false, Some(0o777), None, None).unwrap();
+ /* Failed to parse the file as it is not readable. */
+ touch_file(
+ "/tmp/devmaster/rules/02-c.rules",
+ false,
+ Some(0o222),
+ None,
+ None,
+ )
+ .unwrap();
+
+ let rules = Rules::new(
+ vec!["/tmp/devmaster/rules".to_string()],
+ ResolveNameTime::Never,
+ );
+
+ Rules::parse_rules(Arc::new(RwLock::new(rules)));
+
+ remove_dir_all("/tmp/devmaster").unwrap();
+ }
}
--
2.33.0