sysmaster/backport-test-devmaster-add-UT-for-rules-module.patch

148 lines
3.7 KiB
Diff
Raw Normal View History

2023-12-07 00:19:38 +08:00
From 124af0af5a9e28d70a362463a69a5daab3b70712 Mon Sep 17 00:00:00 2001
From: chenjiayi <chenjiayi22@huawei.com>
Date: Fri, 24 Nov 2023 15:08:07 +0800
Subject: [PATCH 085/103] test(devmaster): add UT for rules module
---
exts/devmaster/src/lib/rules/mod.rs | 105 ++++++++++++++++++++++++----
1 file changed, 90 insertions(+), 15 deletions(-)
diff --git a/exts/devmaster/src/lib/rules/mod.rs b/exts/devmaster/src/lib/rules/mod.rs
index a88a5f99..b5ee3c7d 100644
--- a/exts/devmaster/src/lib/rules/mod.rs
+++ b/exts/devmaster/src/lib/rules/mod.rs
@@ -218,9 +218,12 @@ impl RuleToken {
#[inline]
pub(crate) fn get_token_content(&self) -> String {
if let Some(attribute) = self.get_token_attribute() {
- format!("{}{{{}}}{}{}", self.r#type, attribute, self.op, self.value)
+ format!(
+ "{}{{{}}}{}\"{}\"",
+ self.r#type, attribute, self.op, self.value
+ )
} else {
- format!("{}{}{}", self.r#type, self.op, self.value)
+ format!("{}{}\"{}\"", self.r#type, self.op, self.value)
}
}
}
@@ -316,7 +319,7 @@ impl Display for TokenType {
Self::MatchParentsDriver => "DRIVERS",
Self::MatchParentsAttr => "ATTRS",
Self::MatchParentsTag => "TAGS",
- Self::MatchResult => "RESULTS",
+ Self::MatchResult => "RESULT",
Self::MatchTest => "TEST",
Self::MatchProgram => "PROGRAM",
Self::MatchImportFile
@@ -567,18 +570,6 @@ bitflags! {
}
}
-// bitflags! {
-// /// value matching type
-// pub(crate) struct MatchType: u8 {
-// /// match empty string
-// const EMPTY = 1<<0;
-// /// use shell glob parttern to match
-// const PATTERN = 1<<1;
-// /// match "subsystem", "bus", or "class"
-// const SUBSYSTEM = 1<<2;
-// }
-// }
-
/// match type
#[derive(Debug, Clone, Copy)]
#[allow(dead_code)]
@@ -744,3 +735,87 @@ pub(crate) enum EscapeType {
None,
Replace,
}
+
+#[cfg(test)]
+mod test {
+ use log::{init_log, Level};
+
+ use super::*;
+ use crate::rules::rules_load::tests::create_tmp_file;
+
+ #[test]
+ fn test_rules_display() {
+ init_log(
+ "test_rules_display",
+ Level::Debug,
+ vec!["console"],
+ "",
+ 0,
+ 0,
+ false,
+ );
+
+ create_tmp_file(
+ "/tmp/test_rules_display/rules.d",
+ "00-test.rules",
+ "
+ACTION==\"change\"
+DEVPATH==\"xxx\"
+KERNEL==\"xxx\"
+SYMLINK==\"xxx\"
+SYMLINK+=\"xxx\"
+NAME==\"xxx\"
+NAME=\"x\"
+ENV{x}=\"x\"
+ENV{x}==\"x\"
+CONST{virt}==\"x\"
+TAG+=\"x\"
+TAG==\"x\"
+SUBSYSTEM==\"x\"
+DRIVER==\"x\"
+ATTR{x}==\"x\"
+ATTR{x}=\"x\"
+SYSCTL{x}==\"x\"
+SYSCTL{x}=\"x\"
+KERNELS==\"x\"
+SUBSYSTEMS==\"x\"
+DRIVERS==\"x\"
+ATTRS{x}==\"x\"
+TAGS==\"x\"
+RESULT==\"x\"
+TEST==\"x\"
+PROGRAM==\"x\"
+IMPORT{file}==\"x\"
+IMPORT{program}==\"echo hello\"
+IMPORT{builtin}==\"path_id\"
+IMPORT{db}==\"x\"
+IMPORT{cmdline}==\"x\"
+IMPORT{parent}==\"x\"
+OPTIONS+=\"string_escape=none\"
+OPTIONS+=\"string_escape=replace\"
+OPTIONS+=\"db_persist\"
+OPTIONS+=\"watch\"
+OPTIONS+=\"link_priority=10\"
+OPTIONS+=\"log_level=1\"
+OPTIONS+=\"static_node=/dev/sda\"
+SECLABEL{x}+=\"x\"
+RUN{builtin}+=\"path_id\"
+RUN{program}+=\"x\"
+GOTO=\"x\"
+LABEL=\"x\"
+",
+ true,
+ );
+
+ let rule = Arc::new(RwLock::new(Rules::new(
+ vec!["/tmp/test_rules_display/rules.d".to_string()],
+ ResolveNameTime::Late,
+ )));
+
+ Rules::parse_rules(rule.clone());
+
+ println!("{}", rule.read().unwrap());
+
+ std::fs::remove_dir_all("/tmp/test_rules_display").unwrap();
+ }
+}
--
2.33.0