@@ -29,11 +29,9 @@ use itertools::Itertools as _;
2929use jj_lib:: backend:: BackendError ;
3030use jj_lib:: backend:: ChangeId ;
3131use jj_lib:: backend:: CommitId ;
32- use jj_lib:: backend:: MergedTreeId ;
3332use jj_lib:: backend:: MillisSinceEpoch ;
3433use jj_lib:: backend:: Signature ;
3534use jj_lib:: backend:: Timestamp ;
36- use jj_lib:: backend:: TreeValue ;
3735use jj_lib:: commit:: Commit ;
3836use jj_lib:: commit_builder:: CommitBuilder ;
3937use jj_lib:: config:: ConfigLayer ;
@@ -68,7 +66,6 @@ use jj_lib::settings::GitSettings;
6866use jj_lib:: settings:: UserSettings ;
6967use jj_lib:: signing:: Signer ;
7068use jj_lib:: str_util:: StringPattern ;
71- use jj_lib:: tree_builder:: TreeBuilder ;
7269use jj_lib:: workspace:: Workspace ;
7370use maplit:: btreemap;
7471use maplit:: hashset;
@@ -78,7 +75,6 @@ use testutils::base_user_config;
7875use testutils:: commit_transactions;
7976use testutils:: create_random_commit;
8077use testutils:: repo_path;
81- use testutils:: repo_path_buf;
8278use testutils:: write_random_commit;
8379use testutils:: CommitGraphBuilder ;
8480use testutils:: TestRepo ;
@@ -2559,30 +2555,20 @@ fn test_reset_head_with_index_no_conflict() {
25592555 let mut_repo = tx. repo_mut ( ) ;
25602556
25612557 // Build tree containing every mode of file
2562- let tree_id = {
2563- let mut tree_builder =
2564- TreeBuilder :: new ( repo. store ( ) . clone ( ) , repo. store ( ) . empty_tree_id ( ) . clone ( ) ) ;
2565- testutils:: write_normal_file (
2566- & mut tree_builder,
2567- repo_path ( "some/dir/normal-file" ) ,
2568- "file\n " ,
2558+ let tree_id = testutils:: create_tree_with ( & repo, |builder| {
2559+ builder
2560+ . file ( repo_path ( "some/dir/normal-file" ) , "file\n " )
2561+ . executable ( false ) ;
2562+ builder
2563+ . file ( repo_path ( "some/dir/executable-file" ) , "file\n " )
2564+ . executable ( true ) ;
2565+ builder. symlink ( repo_path ( "some/dir/symlink" ) , "./normal-file" ) ;
2566+ builder. submodule (
2567+ repo_path ( "some/dir/commit" ) ,
2568+ testutils:: write_random_commit ( mut_repo) . id ( ) . clone ( ) ,
25692569 ) ;
2570- testutils:: write_executable_file (
2571- & mut tree_builder,
2572- repo_path ( "some/dir/executable-file" ) ,
2573- "file\n " ,
2574- ) ;
2575- testutils:: write_symlink (
2576- & mut tree_builder,
2577- repo_path ( "some/dir/symlink" ) ,
2578- "./normal-file" ,
2579- ) ;
2580- tree_builder. set (
2581- repo_path_buf ( "some/dir/commit" ) ,
2582- TreeValue :: GitSubmodule ( testutils:: write_random_commit ( mut_repo) . id ( ) . clone ( ) ) ,
2583- ) ;
2584- MergedTreeId :: resolved ( tree_builder. write_tree ( ) . unwrap ( ) )
2585- } ;
2570+ } )
2571+ . id ( ) ;
25862572
25872573 let parent_commit = mut_repo
25882574 . new_commit ( vec ! [ repo. store( ) . root_commit_id( ) . clone( ) ] , tree_id. clone ( ) )
@@ -2622,76 +2608,50 @@ fn test_reset_head_with_index_merge_conflict() {
26222608 let mut_repo = tx. repo_mut ( ) ;
26232609
26242610 // Build conflict trees containing every mode of file
2625- let base_tree_id = {
2626- let mut tree_builder =
2627- TreeBuilder :: new ( repo. store ( ) . clone ( ) , repo. store ( ) . empty_tree_id ( ) . clone ( ) ) ;
2628- testutils:: write_normal_file (
2629- & mut tree_builder,
2630- repo_path ( "some/dir/normal-file" ) ,
2631- "base\n " ,
2632- ) ;
2633- testutils:: write_executable_file (
2634- & mut tree_builder,
2635- repo_path ( "some/dir/executable-file" ) ,
2636- "base\n " ,
2637- ) ;
2638- testutils:: write_symlink (
2639- & mut tree_builder,
2640- repo_path ( "some/dir/symlink" ) ,
2641- "./normal-file" ,
2642- ) ;
2643- tree_builder. set (
2644- repo_path_buf ( "some/dir/commit" ) ,
2645- TreeValue :: GitSubmodule ( testutils:: write_random_commit ( mut_repo) . id ( ) . clone ( ) ) ,
2646- ) ;
2647- MergedTreeId :: resolved ( tree_builder. write_tree ( ) . unwrap ( ) )
2648- } ;
2649-
2650- let left_tree_id = {
2651- let mut tree_builder =
2652- TreeBuilder :: new ( repo. store ( ) . clone ( ) , repo. store ( ) . empty_tree_id ( ) . clone ( ) ) ;
2653- testutils:: write_normal_file (
2654- & mut tree_builder,
2655- repo_path ( "some/dir/normal-file" ) ,
2656- "left\n " ,
2657- ) ;
2658- testutils:: write_executable_file (
2659- & mut tree_builder,
2660- repo_path ( "some/dir/executable-file" ) ,
2661- "left\n " ,
2662- ) ;
2663- testutils:: write_symlink (
2664- & mut tree_builder,
2665- repo_path ( "some/dir/symlink" ) ,
2666- "./executable-file" ,
2611+ let base_tree_id = testutils:: create_tree_with ( & repo, |builder| {
2612+ builder
2613+ . file ( repo_path ( "some/dir/normal-file" ) , "base\n " )
2614+ . executable ( false ) ;
2615+ builder
2616+ . file ( repo_path ( "some/dir/executable-file" ) , "base\n " )
2617+ . executable ( true ) ;
2618+ builder. symlink ( repo_path ( "some/dir/symlink" ) , "./normal-file" ) ;
2619+ builder. submodule (
2620+ repo_path ( "some/dir/commit" ) ,
2621+ testutils:: write_random_commit ( mut_repo) . id ( ) . clone ( ) ,
26672622 ) ;
2668- tree_builder. set (
2669- repo_path_buf ( "some/dir/commit" ) ,
2670- TreeValue :: GitSubmodule ( testutils:: write_random_commit ( mut_repo) . id ( ) . clone ( ) ) ,
2671- ) ;
2672- MergedTreeId :: resolved ( tree_builder. write_tree ( ) . unwrap ( ) )
2673- } ;
2674-
2675- let right_tree_id = {
2676- let mut tree_builder =
2677- TreeBuilder :: new ( repo. store ( ) . clone ( ) , repo. store ( ) . empty_tree_id ( ) . clone ( ) ) ;
2678- testutils:: write_normal_file (
2679- & mut tree_builder,
2680- repo_path ( "some/dir/normal-file" ) ,
2681- "right\n " ,
2682- ) ;
2683- testutils:: write_executable_file (
2684- & mut tree_builder,
2685- repo_path ( "some/dir/executable-file" ) ,
2686- "right\n " ,
2623+ } )
2624+ . id ( ) ;
2625+
2626+ let left_tree_id = testutils:: create_tree_with ( & repo, |builder| {
2627+ builder
2628+ . file ( repo_path ( "some/dir/normal-file" ) , "left\n " )
2629+ . executable ( false ) ;
2630+ builder
2631+ . file ( repo_path ( "some/dir/executable-file" ) , "left\n " )
2632+ . executable ( true ) ;
2633+ builder. symlink ( repo_path ( "some/dir/symlink" ) , "./executable-file" ) ;
2634+ builder. submodule (
2635+ repo_path ( "some/dir/commit" ) ,
2636+ testutils:: write_random_commit ( mut_repo) . id ( ) . clone ( ) ,
26872637 ) ;
2688- testutils:: write_symlink ( & mut tree_builder, repo_path ( "some/dir/symlink" ) , "./commit" ) ;
2689- tree_builder. set (
2690- repo_path_buf ( "some/dir/commit" ) ,
2691- TreeValue :: GitSubmodule ( testutils:: write_random_commit ( mut_repo) . id ( ) . clone ( ) ) ,
2638+ } )
2639+ . id ( ) ;
2640+
2641+ let right_tree_id = testutils:: create_tree_with ( & repo, |builder| {
2642+ builder
2643+ . file ( repo_path ( "some/dir/normal-file" ) , "right\n " )
2644+ . executable ( false ) ;
2645+ builder
2646+ . file ( repo_path ( "some/dir/executable-file" ) , "right\n " )
2647+ . executable ( true ) ;
2648+ builder. symlink ( repo_path ( "some/dir/symlink" ) , "./commit" ) ;
2649+ builder. submodule (
2650+ repo_path ( "some/dir/commit" ) ,
2651+ testutils:: write_random_commit ( mut_repo) . id ( ) . clone ( ) ,
26922652 ) ;
2693- MergedTreeId :: resolved ( tree_builder . write_tree ( ) . unwrap ( ) )
2694- } ;
2653+ } )
2654+ . id ( ) ;
26952655
26962656 let base_commit = mut_repo
26972657 . new_commit (
@@ -2756,19 +2716,14 @@ fn test_reset_head_with_index_file_directory_conflict() {
27562716 let mut_repo = tx. repo_mut ( ) ;
27572717
27582718 // Build conflict trees containing file-directory conflict
2759- let left_tree_id = {
2760- let mut tree_builder =
2761- TreeBuilder :: new ( repo. store ( ) . clone ( ) , repo. store ( ) . empty_tree_id ( ) . clone ( ) ) ;
2762- testutils:: write_normal_file ( & mut tree_builder, repo_path ( "test/dir/file" ) , "dir\n " ) ;
2763- MergedTreeId :: resolved ( tree_builder. write_tree ( ) . unwrap ( ) )
2764- } ;
2765-
2766- let right_tree_id = {
2767- let mut tree_builder =
2768- TreeBuilder :: new ( repo. store ( ) . clone ( ) , repo. store ( ) . empty_tree_id ( ) . clone ( ) ) ;
2769- testutils:: write_normal_file ( & mut tree_builder, repo_path ( "test" ) , "file\n " ) ;
2770- MergedTreeId :: resolved ( tree_builder. write_tree ( ) . unwrap ( ) )
2771- } ;
2719+ let left_tree_id = testutils:: create_tree_with ( & repo, |builder| {
2720+ builder. file ( repo_path ( "test/dir/file" ) , "dir\n " ) ;
2721+ } )
2722+ . id ( ) ;
2723+ let right_tree_id = testutils:: create_tree_with ( & repo, |builder| {
2724+ builder. file ( repo_path ( "test" ) , "file\n " ) ;
2725+ } )
2726+ . id ( ) ;
27722727
27732728 let left_commit = mut_repo
27742729 . new_commit (
0 commit comments