1mod authorship;
6mod source;
7mod update;
8mod update_summary;
9
10#[cfg(test)]
11mod test_support;
12
13pub use update::update;
14pub use update_summary::UpdateSummary;
15pub use update_summary::UpdateSummary as Update;
17
18#[bake::task(name = "license:update")]
20pub fn refresh(context: &mut bake::Context) -> bake::Result<String> {
21 let summary = update(context.root())?;
22 Ok(format!(
23 "Changed {} file(s); refreshed {} tracked Rust source file(s)",
24 summary.files_changed, summary.source_files,
25 ))
26}
27
28#[cfg(test)]
29mod task_tests {
30 use crate::test_support::GitRepository;
31 use bake::Registry;
32 use tempfile::tempdir;
33
34 #[test]
35 fn reports_updated_license_and_source_file_counts() {
36 let repository = GitRepository::new();
37 repository.write("src/lib.rs", "pub fn example() {}\n");
38 repository.commit(
39 "Alice",
40 "alice@example.com",
41 "2024-01-02T03:04:05+00:00",
42 "Add source",
43 );
44
45 let mut context = Registry::new().context(repository.root());
46 let result = crate::refresh(&mut context).unwrap();
47
48 assert_eq!(
49 result,
50 "Changed 2 file(s); refreshed 1 tracked Rust source file(s)"
51 );
52 }
53
54 #[test]
55 fn propagates_update_errors_from_the_license_task() {
56 let directory = tempdir().unwrap();
57 let mut context = Registry::new().context(directory.path());
58
59 assert!(crate::refresh(&mut context).is_err());
60 }
61}