22//
33// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
44
5- use std:: path:: { Path , PathBuf } ;
5+ use std:: collections:: HashMap ;
6+ use std:: path:: PathBuf ;
7+ use std:: sync:: Arc ;
68
79use commitbee:: domain:: { ChangeStatus , FileCategory , FileChange , SymbolKind } ;
810use commitbee:: services:: analyzer:: { AnalyzerService , DiffHunk } ;
@@ -13,7 +15,7 @@ fn make_file_change(path: &str, diff: &str, additions: usize, deletions: usize)
1315 FileChange {
1416 path : PathBuf :: from ( path) ,
1517 status : ChangeStatus :: Added ,
16- diff : diff. to_string ( ) ,
18+ diff : Arc :: new ( diff. to_string ( ) ) ,
1719 additions,
1820 deletions,
1921 category : FileCategory :: from_path ( & PathBuf :: from ( path) ) ,
@@ -159,11 +161,11 @@ fn extract_symbols_rust_function() {
159161
160162 let staged = "pub fn my_function() {\n println!(\" hello\" );\n }\n " ;
161163
162- let staged_content = |_ : & Path | -> Option < String > { Some ( staged. to_string ( ) ) } ;
163- let head_content = |_ : & Path | -> Option < String > { None } ;
164+ let staged_map = HashMap :: from ( [ ( PathBuf :: from ( "src/new_module.rs" ) , staged. to_string ( ) ) ] ) ;
165+ let head_map = HashMap :: new ( ) ;
164166
165- let mut analyzer = AnalyzerService :: new ( ) . expect ( "AnalyzerService::new() should succeed" ) ;
166- let symbols = analyzer. extract_symbols ( & [ change] , & staged_content , & head_content ) ;
167+ let analyzer = AnalyzerService :: new ( ) . expect ( "AnalyzerService::new() should succeed" ) ;
168+ let symbols = analyzer. extract_symbols ( & [ change] , & staged_map , & head_map ) ;
167169
168170 assert ! (
169171 !symbols. is_empty( ) ,
@@ -187,11 +189,11 @@ fn extract_symbols_rust_struct() {
187189
188190 let staged = "pub struct MyConfig {\n pub name: String,\n pub value: i32,\n }\n " ;
189191
190- let staged_content = |_ : & Path | -> Option < String > { Some ( staged. to_string ( ) ) } ;
191- let head_content = |_ : & Path | -> Option < String > { None } ;
192+ let staged_map = HashMap :: from ( [ ( PathBuf :: from ( "src/config_types.rs" ) , staged. to_string ( ) ) ] ) ;
193+ let head_map = HashMap :: new ( ) ;
192194
193- let mut analyzer = AnalyzerService :: new ( ) . expect ( "AnalyzerService::new() should succeed" ) ;
194- let symbols = analyzer. extract_symbols ( & [ change] , & staged_content , & head_content ) ;
195+ let analyzer = AnalyzerService :: new ( ) . expect ( "AnalyzerService::new() should succeed" ) ;
196+ let symbols = analyzer. extract_symbols ( & [ change] , & staged_map , & head_map ) ;
195197
196198 assert ! (
197199 !symbols. is_empty( ) ,
@@ -213,12 +215,14 @@ fn extract_symbols_no_grammar() {
213215 let diff = "@@ -0,0 +1,2 @@\n +some data\n +more data\n " ;
214216 let change = make_file_change ( "data/file.xyz" , diff, 2 , 0 ) ;
215217
216- let staged_content =
217- |_: & Path | -> Option < String > { Some ( "some data\n more data\n " . to_string ( ) ) } ;
218- let head_content = |_: & Path | -> Option < String > { None } ;
218+ let staged_map = HashMap :: from ( [ (
219+ PathBuf :: from ( "data/file.xyz" ) ,
220+ "some data\n more data\n " . to_string ( ) ,
221+ ) ] ) ;
222+ let head_map = HashMap :: new ( ) ;
219223
220- let mut analyzer = AnalyzerService :: new ( ) . expect ( "AnalyzerService::new() should succeed" ) ;
221- let symbols = analyzer. extract_symbols ( & [ change] , & staged_content , & head_content ) ;
224+ let analyzer = AnalyzerService :: new ( ) . expect ( "AnalyzerService::new() should succeed" ) ;
225+ let symbols = analyzer. extract_symbols ( & [ change] , & staged_map , & head_map ) ;
222226
223227 assert ! (
224228 symbols. is_empty( ) ,
@@ -233,11 +237,14 @@ fn extract_symbols_binary_skipped() {
233237 let mut change = make_file_change ( "src/binary_mod.rs" , diff, 1 , 0 ) ;
234238 change. is_binary = true ;
235239
236- let staged_content = |_: & Path | -> Option < String > { Some ( "pub fn hidden() {}\n " . to_string ( ) ) } ;
237- let head_content = |_: & Path | -> Option < String > { None } ;
240+ let staged_map = HashMap :: from ( [ (
241+ PathBuf :: from ( "src/binary_mod.rs" ) ,
242+ "pub fn hidden() {}\n " . to_string ( ) ,
243+ ) ] ) ;
244+ let head_map = HashMap :: new ( ) ;
238245
239- let mut analyzer = AnalyzerService :: new ( ) . expect ( "AnalyzerService::new() should succeed" ) ;
240- let symbols = analyzer. extract_symbols ( & [ change] , & staged_content , & head_content ) ;
246+ let analyzer = AnalyzerService :: new ( ) . expect ( "AnalyzerService::new() should succeed" ) ;
247+ let symbols = analyzer. extract_symbols ( & [ change] , & staged_map , & head_map ) ;
241248
242249 assert ! (
243250 symbols. is_empty( ) ,
0 commit comments