version_sync/
contains_substring.rs1use crate::helpers::{read_file, Result};
2
3pub fn check_contains_substring(
18 path: &str,
19 template: &str,
20 pkg_name: &str,
21 pkg_version: &str,
22) -> Result<()> {
23 let pattern = template
30 .replace("{name}", pkg_name)
31 .replace("{version}", pkg_version);
32
33 let text = read_file(path).map_err(|err| format!("could not read {}: {}", path, err))?;
34
35 println!("Searching for \"{pattern}\" in {path}...");
36 match text.find(&pattern) {
37 Some(idx) => {
38 let line_no = text[..idx].lines().count();
39 println!("{} (line {}) ... ok", path, line_no + 1);
40 Ok(())
41 }
42 None => Err(format!("could not find \"{pattern}\" in {path}")),
43 }
44}
45
46#[cfg(test)]
47mod tests {
48 use super::*;
49
50 #[test]
51 fn pattern_not_found() {
52 assert_eq!(
53 check_contains_substring("README.md", "should not be found", "foobar", "1.2.3"),
54 Err(String::from(
55 "could not find \"should not be found\" in README.md"
56 ))
57 )
58 }
59
60 #[test]
61 fn pattern_found() {
62 assert_eq!(
63 check_contains_substring("README.md", "{name}", "version-sync", "1.2.3"),
64 Ok(())
65 )
66 }
67}