2022-11-26 23:57:50 +00:00
// Copyright 2022 The Jujutsu Authors
2022-03-28 09:12:08 +00:00
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
2022-11-18 23:41:35 +00:00
use common ::{ get_stderr_string , get_stdout_string , TestEnvironment } ;
2022-03-30 17:47:11 +00:00
pub mod common ;
2022-03-28 09:12:08 +00:00
2022-11-28 14:32:44 +00:00
#[ test ]
fn test_log_with_empty_revision ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
let stderr = test_env . jj_cmd_cli_error ( & repo_path , & [ " log " , " -r= " ] ) ;
insta ::assert_snapshot! ( stderr , @ r ###"
error : The argument ' - - revisions < REVISIONS > ' requires a value but none was supplied
For more information try ' - - help '
" ###);
}
2022-03-28 09:12:08 +00:00
#[ test ]
fn test_log_with_or_without_diff ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
std ::fs ::write ( repo_path . join ( " file1 " ) , " foo \n " ) . unwrap ( ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " add a file " ] ) ;
test_env . jj_cmd_success ( & repo_path , & [ " new " , " -m " , " a new commit " ] ) ;
std ::fs ::write ( repo_path . join ( " file1 " ) , " foo \n bar \n " ) . unwrap ( ) ;
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
o add a file
2023-01-31 09:17:46 +00:00
o
2022-03-28 09:12:08 +00:00
" ###);
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " -p " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
| Modified regular file file1 :
| 1 1 : foo
| 2 : bar
o add a file
| Added regular file file1 :
| 1 : foo
2023-01-31 09:17:46 +00:00
o
2022-03-28 09:12:08 +00:00
" ###);
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " --no-graph " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
a new commit
add a file
" ###);
2022-12-13 12:24:24 +00:00
// `-p` for default diff output, `-s` for summary
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " -p " , " -s " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
| M file1
| Modified regular file file1 :
| 1 1 : foo
| 2 : bar
o add a file
| A file1
| Added regular file file1 :
| 1 : foo
2023-01-31 09:17:46 +00:00
o
2022-12-13 12:24:24 +00:00
" ###);
// `-s` for summary, `--git` for git diff (which implies `-p`)
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " -s " , " --git " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
| M file1
| diff - - git a / file1 b / file1
| index 257 cc5642c .. . 3 bd1f0e297 100644
| - - - a / file1
| + + + b / file1
| @ @ - 1 , 1 + 1 , 2 @ @
| foo
| + bar
o add a file
| A file1
| diff - - git a / file1 b / file1
| new file mode 100644
| index 0000000000 .. 257 cc5642c
| - - - / dev / null
| + + + b / file1
| @ @ - 1 , 0 + 1 , 1 @ @
| + foo
2023-01-31 09:17:46 +00:00
o
2022-12-13 12:24:24 +00:00
" ###);
// `-p` enables default "summary" output, so `-s` is noop
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" log " ,
" -T " ,
" description " ,
" -p " ,
" -s " ,
2023-02-06 06:42:27 +00:00
" --config-toml=ui.diff.format='summary' " ,
2022-12-13 12:24:24 +00:00
] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
| M file1
o add a file
| A file1
2023-01-31 09:17:46 +00:00
o
2022-12-13 12:24:24 +00:00
" ###);
// `-p` enables default "color-words" diff output, so `--color-words` is noop
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [ " log " , " -T " , " description " , " -p " , " --color-words " ] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
| Modified regular file file1 :
| 1 1 : foo
| 2 : bar
o add a file
| Added regular file file1 :
| 1 : foo
2023-01-31 09:17:46 +00:00
o
2022-12-13 12:24:24 +00:00
" ###);
// `--git` enables git diff, so `-p` is noop
2022-03-28 09:12:08 +00:00
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [ " log " , " -T " , " description " , " --no-graph " , " -p " , " --git " ] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
a new commit
diff - - git a / file1 b / file1
index 257 cc5642c .. . 3 bd1f0e297 100644
- - - a / file1
+ + + b / file1
@ @ - 1 , 1 + 1 , 2 @ @
foo
+ bar
add a file
diff - - git a / file1 b / file1
new file mode 100644
index 0000000000 .. 257 cc5642c
- - - / dev / null
+ + + b / file1
@ @ - 1 , 0 + 1 , 1 @ @
+ foo
" ###);
2022-05-13 05:20:10 +00:00
2022-12-13 12:24:24 +00:00
// Both formats enabled if `--git` and `--color-words` are explicitly specified
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" log " ,
" -T " ,
" description " ,
" --no-graph " ,
" -p " ,
" --git " ,
" --color-words " ,
] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
a new commit
diff - - git a / file1 b / file1
index 257 cc5642c .. . 3 bd1f0e297 100644
- - - a / file1
+ + + b / file1
@ @ - 1 , 1 + 1 , 2 @ @
foo
+ bar
Modified regular file file1 :
1 1 : foo
2 : bar
add a file
diff - - git a / file1 b / file1
new file mode 100644
index 0000000000 .. 257 cc5642c
- - - / dev / null
+ + + b / file1
@ @ - 1 , 0 + 1 , 1 @ @
+ foo
Added regular file file1 :
1 : foo
" ###);
// `-s` with or without graph
2022-05-13 05:20:10 +00:00
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " -s " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
| M file1
o add a file
| A file1
2023-01-31 09:17:46 +00:00
o
2022-05-13 05:20:10 +00:00
" ###);
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [ " log " , " -T " , " description " , " --no-graph " , " -s " ] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
a new commit
M file1
add a file
A file1
" ###);
// `--git` implies `-p`, with or without graph
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [ " log " , " -T " , " description " , " -r " , " @ " , " --git " ] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
~ diff - - git a / file1 b / file1
index 257 cc5642c .. . 3 bd1f0e297 100644
- - - a / file1
+ + + b / file1
@ @ - 1 , 1 + 1 , 2 @ @
foo
+ bar
" ###);
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [ " log " , " -T " , " description " , " -r " , " @ " , " --no-graph " , " --git " ] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
a new commit
diff - - git a / file1 b / file1
index 257 cc5642c .. . 3 bd1f0e297 100644
- - - a / file1
+ + + b / file1
@ @ - 1 , 1 + 1 , 2 @ @
foo
+ bar
" ###);
2022-12-14 10:48:53 +00:00
// `--color-words` implies `-p`, with or without graph
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [ " log " , " -T " , " description " , " -r " , " @ " , " --color-words " ] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ a new commit
~ Modified regular file file1 :
1 1 : foo
2 : bar
" ###);
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" log " ,
" -T " ,
" description " ,
" -r " ,
" @ " ,
" --no-graph " ,
" --color-words " ,
] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
a new commit
Modified regular file file1 :
1 1 : foo
2 : bar
" ###);
2022-03-28 09:12:08 +00:00
}
2022-05-09 17:38:23 +00:00
2023-01-03 00:24:00 +00:00
#[ test ]
2023-01-21 04:56:34 +00:00
fn test_log_prefix_highlight_brackets ( ) {
2023-01-03 00:24:00 +00:00
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
2023-01-21 04:56:34 +00:00
fn prefix_format ( len : Option < usize > ) -> String {
format! (
r #"
2023-02-06 06:43:24 +00:00
" Change " change_id . shortest ( { 0 } ) . with_brackets ( ) " " description . first_line ( )
" " commit_id . shortest ( { 0 } ) . with_brackets ( ) " " branches
2023-01-21 04:56:34 +00:00
" #,
len . map ( | l | l . to_string ( ) ) . unwrap_or ( String ::default ( ) )
)
}
2023-01-03 00:24:00 +00:00
std ::fs ::write ( repo_path . join ( " file " ) , " original file \n " ) . unwrap ( ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " initial " ] ) ;
test_env . jj_cmd_success ( & repo_path , & [ " branch " , " c " , " original " ] ) ;
insta ::assert_snapshot! (
2023-02-06 05:38:54 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " original " , " -T " , & prefix_format ( Some ( 12 ) ) ] ) ,
2023-01-03 00:24:00 +00:00
@ r ###"
2023-01-21 04:56:34 +00:00
@ Change 9 [ a45c67d3e96 ] initial b [ a1a30916d29 ] original
2023-01-03 00:24:00 +00:00
~
" ###
) ;
2023-02-06 07:06:44 +00:00
// Create a chain of 10 commits
for i in 1 .. 10 {
2023-01-03 00:24:00 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " new " , " -m " , & format! ( " commit {i} " ) ] ) ;
std ::fs ::write ( repo_path . join ( " file " ) , format! ( " file {i} \n " ) ) . unwrap ( ) ;
}
2023-02-06 07:06:44 +00:00
// Create 2^3 duplicates of the chain
for _ in 0 .. 3 {
test_env . jj_cmd_success ( & repo_path , & [ " duplicate " , " description(commit) " ] ) ;
}
2023-01-03 00:24:00 +00:00
insta ::assert_snapshot! (
2023-02-06 05:38:54 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " original " , " -T " , & prefix_format ( Some ( 12 ) ) ] ) ,
2023-01-21 04:56:34 +00:00
@ r ###"
o Change 9 a4 [ 5 c67d3e96 ] initial ba1 [ a30916d29 ] original
~
" ###
) ;
insta ::assert_snapshot! (
2023-02-06 07:06:44 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " :@ " , " -T " , & prefix_format ( Some ( 12 ) ) ] ) ,
2023-01-03 00:24:00 +00:00
@ r ###"
2023-02-06 07:06:44 +00:00
@ Change 39 c [ 3 fb0af576 ] commit9 03 f [ 51310 b83e ]
o Change fd [ f57e73a939 ] commit8 f7 [ 7 fb1909080 ]
o Change fa9 [ 213 bcf78e ] commit7 e7 [ 15 ad5db646 ]
o Change 0 cff [ a7997ffe ] commit6 38 [ 622e54 e2e5 ]
o Change 1 b [ 76972398e6 ] commit5 0 cf4 [ 2 f60199c ]
o Change 48 [ 523 d946ad2 ] commit4 9 e [ 6015e4 e622 ]
o Change 19 [ b790168e73 ] commit3 06 f [ 34 d9b1475 ]
o Change 8 b12 [ d1f268f8 ] commit2 1 f [ 99 a5e19891 ]
o Change d0 [ 43564 ef936 ] commit1 7 b [ 1 f7dee65b4 ]
o Change 9 a4 [ 5 c67d3e96 ] initial ba1 [ a30916d29 ] original
o Change 000 [ 000000000 ] 000 [ 000000000 ]
2023-01-03 00:24:00 +00:00
" ###
) ;
insta ::assert_snapshot! (
2023-02-06 07:06:44 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " :@ " , " -T " , & prefix_format ( Some ( 3 ) ) ] ) ,
2023-01-21 04:56:34 +00:00
@ r ###"
2023-02-06 07:06:44 +00:00
@ Change 39 c commit9 03 f
o Change fd [ f ] commit8 f7 [ 7 ]
o Change fa9 commit7 e7 [ 1 ]
o Change 0 cff commit6 38 [ 6 ]
o Change 1 b [ 7 ] commit5 0 cf4
o Change 48 [ 5 ] commit4 9 e [ 6 ]
o Change 19 [ b ] commit3 06 f
o Change 8 b12 commit2 1 f [ 9 ]
o Change d0 [ 4 ] commit1 7 b [ 1 ]
o Change 9 a4 initial ba1 original
o Change 000 000
2023-01-21 04:56:34 +00:00
" ###
) ;
insta ::assert_snapshot! (
2023-02-06 07:06:44 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " :@ " , " -T " , & prefix_format ( None ) ] ) ,
2023-01-21 04:56:34 +00:00
@ r ###"
2023-02-06 07:06:44 +00:00
@ Change 39 c commit9 03 f
o Change fd commit8 f7
o Change fa9 commit7 e7
o Change 0 cff commit6 38
o Change 1 b commit5 0 cf4
o Change 48 commit4 9 e
o Change 19 commit3 06 f
o Change 8 b12 commit2 1 f
o Change d0 commit1 7 b
o Change 9 a4 initial ba1 original
o Change 000 000
2023-01-21 04:56:34 +00:00
" ###
) ;
}
#[ test ]
fn test_log_prefix_highlight_styled ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
fn prefix_format ( len : Option < usize > ) -> String {
format! (
r #"
2023-02-06 06:37:32 +00:00
" Change " change_id . shortest ( { 0 } ) " " description . first_line ( )
" " commit_id . shortest ( { 0 } ) " " branches
2023-01-21 04:56:34 +00:00
" #,
len . map ( | l | l . to_string ( ) ) . unwrap_or ( String ::default ( ) )
)
}
std ::fs ::write ( repo_path . join ( " file " ) , " original file \n " ) . unwrap ( ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " initial " ] ) ;
test_env . jj_cmd_success ( & repo_path , & [ " branch " , " c " , " original " ] ) ;
insta ::assert_snapshot! (
2023-02-06 05:38:54 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " original " , " -T " , & prefix_format ( Some ( 12 ) ) ] ) ,
2023-01-21 04:56:34 +00:00
@ r ###"
@ Change 9 a45c67d3e96 initial ba1a30916d29 original
~
" ###
) ;
2023-02-06 07:06:44 +00:00
// Create a chain of 10 commits
for i in 1 .. 10 {
2023-01-21 04:56:34 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " new " , " -m " , & format! ( " commit {i} " ) ] ) ;
std ::fs ::write ( repo_path . join ( " file " ) , format! ( " file {i} \n " ) ) . unwrap ( ) ;
}
2023-02-06 07:06:44 +00:00
// Create 2^3 duplicates of the chain
for _ in 0 .. 3 {
test_env . jj_cmd_success ( & repo_path , & [ " duplicate " , " description(commit) " ] ) ;
}
2023-01-21 04:56:34 +00:00
insta ::assert_snapshot! (
2023-02-06 05:38:54 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " original " , " -T " , & prefix_format ( Some ( 12 ) ) ] ) ,
2023-01-21 04:56:34 +00:00
@ r ###"
o Change 9 a45c67d3e96 initial ba1a30916d29 original
~
" ###
) ;
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" --color=always " ,
" log " ,
" -r " ,
" @-----------..@ " ,
" -T " ,
2023-02-06 05:38:54 +00:00
& prefix_format ( Some ( 12 ) ) ,
2023-01-21 04:56:34 +00:00
] ,
) ;
insta ::assert_snapshot! ( stdout ,
@ r ###"
2023-02-06 07:06:44 +00:00
@ Change [ 1 m [ 38 ; 5 ; 5 m39c [ 0 m [ 38 ; 5 ; 8 m3fb0af576 [ 39 m commit9 [ 1 m [ 38 ; 5 ; 4 m03f [ 0 m [ 38 ; 5 ; 8 m51310b83e [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 mfd [ 0 m [ 38 ; 5 ; 8 mf57e73a939 [ 39 m commit8 [ 1 m [ 38 ; 5 ; 4 mf7 [ 0 m [ 38 ; 5 ; 8 m7fb1909080 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 mfa9 [ 0 m [ 38 ; 5 ; 8 m213bcf78e [ 39 m commit7 [ 1 m [ 38 ; 5 ; 4 me7 [ 0 m [ 38 ; 5 ; 8 m15ad5db646 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m0cff [ 0 m [ 38 ; 5 ; 8 ma7997ffe [ 39 m commit6 [ 1 m [ 38 ; 5 ; 4 m38 [ 0 m [ 38 ; 5 ; 8 m622e54e2e5 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m1b [ 0 m [ 38 ; 5 ; 8 m76972398e6 [ 39 m commit5 [ 1 m [ 38 ; 5 ; 4 m0cf4 [ 0 m [ 38 ; 5 ; 8 m2f60199c [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m48 [ 0 m [ 38 ; 5 ; 8 m523d946ad2 [ 39 m commit4 [ 1 m [ 38 ; 5 ; 4 m9e [ 0 m [ 38 ; 5 ; 8 m6015e4e622 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m19 [ 0 m [ 38 ; 5 ; 8 mb790168e73 [ 39 m commit3 [ 1 m [ 38 ; 5 ; 4 m06f [ 0 m [ 38 ; 5 ; 8 m34d9b1475 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m8b12 [ 0 m [ 38 ; 5 ; 8 md1f268f8 [ 39 m commit2 [ 1 m [ 38 ; 5 ; 4 m1f [ 0 m [ 38 ; 5 ; 8 m99a5e19891 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 md0 [ 0 m [ 38 ; 5 ; 8 m43564ef936 [ 39 m commit1 [ 1 m [ 38 ; 5 ; 4 m7b [ 0 m [ 38 ; 5 ; 8 m1f7dee65b4 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m9a4 [ 0 m [ 38 ; 5 ; 8 m5c67d3e96 [ 39 m initial [ 1 m [ 38 ; 5 ; 4 mba1 [ 0 m [ 38 ; 5 ; 8 ma30916d29 [ 39 m [ 38 ; 5 ; 5 moriginal [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m000 [ 0 m [ 38 ; 5 ; 8 m000000000 [ 39 m [ 1 m [ 38 ; 5 ; 4 m000 [ 0 m [ 38 ; 5 ; 8 m000000000 [ 39 m
2023-01-21 04:56:34 +00:00
" ###
) ;
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" --color=always " ,
" log " ,
" -r " ,
" @-----------..@ " ,
" -T " ,
& prefix_format ( Some ( 3 ) ) ,
] ,
) ;
insta ::assert_snapshot! ( stdout ,
@ r ###"
2023-02-06 07:06:44 +00:00
@ Change [ 1 m [ 38 ; 5 ; 5 m39c [ 0 m commit9 [ 1 m [ 38 ; 5 ; 4 m03f [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 mfd [ 0 m [ 38 ; 5 ; 8 mf [ 39 m commit8 [ 1 m [ 38 ; 5 ; 4 mf7 [ 0 m [ 38 ; 5 ; 8 m7 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 mfa9 [ 0 m commit7 [ 1 m [ 38 ; 5 ; 4 me7 [ 0 m [ 38 ; 5 ; 8 m1 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m0cff [ 0 m commit6 [ 1 m [ 38 ; 5 ; 4 m38 [ 0 m [ 38 ; 5 ; 8 m6 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m1b [ 0 m [ 38 ; 5 ; 8 m7 [ 39 m commit5 [ 1 m [ 38 ; 5 ; 4 m0cf4 [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 m48 [ 0 m [ 38 ; 5 ; 8 m5 [ 39 m commit4 [ 1 m [ 38 ; 5 ; 4 m9e [ 0 m [ 38 ; 5 ; 8 m6 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m19 [ 0 m [ 38 ; 5 ; 8 mb [ 39 m commit3 [ 1 m [ 38 ; 5 ; 4 m06f [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 m8b12 [ 0 m commit2 [ 1 m [ 38 ; 5 ; 4 m1f [ 0 m [ 38 ; 5 ; 8 m9 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 md0 [ 0 m [ 38 ; 5 ; 8 m4 [ 39 m commit1 [ 1 m [ 38 ; 5 ; 4 m7b [ 0 m [ 38 ; 5 ; 8 m1 [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m9a4 [ 0 m initial [ 1 m [ 38 ; 5 ; 4 mba1 [ 0 m [ 38 ; 5 ; 5 moriginal [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m000 [ 0 m [ 1 m [ 38 ; 5 ; 4 m000 [ 0 m
2023-01-21 04:56:34 +00:00
" ###
) ;
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" --color=always " ,
" log " ,
" -r " ,
" @-----------..@ " ,
" -T " ,
2023-02-06 05:38:54 +00:00
& prefix_format ( None ) ,
2023-01-21 04:56:34 +00:00
] ,
) ;
insta ::assert_snapshot! ( stdout ,
2023-01-03 00:24:00 +00:00
@ r ###"
2023-02-06 07:06:44 +00:00
@ Change [ 1 m [ 38 ; 5 ; 5 m39c [ 0 m commit9 [ 1 m [ 38 ; 5 ; 4 m03f [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 mfd [ 0 m commit8 [ 1 m [ 38 ; 5 ; 4 mf7 [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 mfa9 [ 0 m commit7 [ 1 m [ 38 ; 5 ; 4 me7 [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 m0cff [ 0 m commit6 [ 1 m [ 38 ; 5 ; 4 m38 [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 m1b [ 0 m commit5 [ 1 m [ 38 ; 5 ; 4 m0cf4 [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 m48 [ 0 m commit4 [ 1 m [ 38 ; 5 ; 4 m9e [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 m19 [ 0 m commit3 [ 1 m [ 38 ; 5 ; 4 m06f [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 m8b12 [ 0 m commit2 [ 1 m [ 38 ; 5 ; 4 m1f [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 md0 [ 0 m commit1 [ 1 m [ 38 ; 5 ; 4 m7b [ 0 m
o Change [ 1 m [ 38 ; 5 ; 5 m9a4 [ 0 m initial [ 1 m [ 38 ; 5 ; 4 mba1 [ 0 m [ 38 ; 5 ; 5 moriginal [ 39 m
o Change [ 1 m [ 38 ; 5 ; 5 m000 [ 0 m [ 1 m [ 38 ; 5 ; 4 m000 [ 0 m
2023-01-03 00:24:00 +00:00
" ###
) ;
}
#[ test ]
fn test_log_prefix_highlight_counts_hidden_commits ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
let prefix_format = r #"
2023-02-06 06:43:24 +00:00
" Change " change_id . shortest ( 12 ) . with_brackets ( ) " " description . first_line ( )
" " commit_id . shortest ( 12 ) . with_brackets ( ) " " branches
2023-01-03 00:24:00 +00:00
" #;
std ::fs ::write ( repo_path . join ( " file " ) , " original file \n " ) . unwrap ( ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " initial " ] ) ;
test_env . jj_cmd_success ( & repo_path , & [ " branch " , " c " , " original " ] ) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " all() " , " -T " , prefix_format ] ) ,
@ r ###"
2023-01-21 04:56:34 +00:00
@ Change 9 [ a45c67d3e96 ] initial b [ a1a30916d29 ] original
o Change 0 [ 00000000000 ] 0 [ 00000000000 ]
2023-01-03 00:24:00 +00:00
" ###
) ;
2023-02-06 07:06:44 +00:00
// Create 2^7 hidden commits
test_env . jj_cmd_success ( & repo_path , & [ " new " , " root " , " -m " , " extra " ] ) ;
for _ in 0 .. 7 {
test_env . jj_cmd_success ( & repo_path , & [ " duplicate " , " description(extra) " ] ) ;
2023-01-03 00:24:00 +00:00
}
2023-02-06 07:06:44 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " abandon " , " description(extra) " ] ) ;
// The first commit's unique prefix became longer.
2023-01-03 00:24:00 +00:00
insta ::assert_snapshot! (
2023-02-06 07:06:44 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , prefix_format ] ) ,
2023-01-03 00:24:00 +00:00
@ r ###"
2023-02-06 07:06:44 +00:00
@ Change 39 c3 [ fb0af576 ] 44 [ 4 c3c5066d3 ]
| o Change 9 a [ 45 c67d3e96 ] initial ba [ 1 a30916d29 ] original
| /
o Change 00 [ 0000000000 ] 00 [ 0000000000 ]
2023-01-03 00:24:00 +00:00
" ###
) ;
insta ::assert_snapshot! (
test_env . jj_cmd_failure ( & repo_path , & [ " log " , " -r " , " d " , " -T " , prefix_format ] ) ,
@ r ###"
Error : Commit or change id prefix " d " is ambiguous
" ###
) ;
insta ::assert_snapshot! (
2023-02-06 07:06:44 +00:00
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -r " , " d0 " , " -T " , prefix_format ] ) ,
2023-01-03 00:24:00 +00:00
@ r ###"
2023-02-06 07:06:44 +00:00
o Change a70 [ 78 fc7d293 ] extra d0 [ 947 f34cec4 ]
2023-01-03 00:24:00 +00:00
~
" ###
) ;
}
2023-02-06 06:52:16 +00:00
#[ test ]
fn test_log_shortest_length_parameter ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " commit_id.shortest(0) " ] ) , @ r ###"
@ 2
o 0
" ###);
insta ::assert_snapshot! (
test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " commit_id.shortest(100) " ] ) , @ r ###"
@ 230 dd059e1b059aefc0da06a2e5a7dbf22362f22
o 0000000000000000000000000000000000000000
" ###);
}
2023-02-11 11:07:58 +00:00
#[ test ]
fn test_log_author_format_in_default_template ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success ( & repo_path , & [ " log " , " --revisions=@ " ] ) ,
@ r ###"
@ 9 a45c67d3e96 test . user @ example . com 2001 - 02 - 03 04 :05 :07.000 + 07 :00 230 dd059e1b0
~ ( empty ) ( no description set )
" ###
) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success (
& repo_path ,
& [
" --config-toml=ui.log-author-format='' " ,
" log " ,
" --revisions=@ " ,
] ,
) ,
@ r ###"
@ 9 a45c67d3e96 test . user @ example . com 2001 - 02 - 03 04 :05 :07.000 + 07 :00 230 dd059e1b0
~ ( empty ) ( no description set )
" ###
) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success (
& repo_path ,
& [
" --config-toml=ui.log-author-format='gibberish' " ,
" log " ,
" --revisions=@ " ,
] ,
) ,
@ r ###"
@ 9 a45c67d3e96 test . user @ example . com 2001 - 02 - 03 04 :05 :07.000 + 07 :00 230 dd059e1b0
~ ( empty ) ( no description set )
" ###
) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success (
& repo_path ,
& [
" --config-toml=ui.log-author-format='email' " ,
" log " ,
" --revisions=@ " ,
] ,
) ,
@ r ###"
@ 9 a45c67d3e96 test . user @ example . com 2001 - 02 - 03 04 :05 :07.000 + 07 :00 230 dd059e1b0
~ ( empty ) ( no description set )
" ###
) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success (
& repo_path ,
& [
" --config-toml=ui.log-author-format='none' " ,
" log " ,
" --revisions=@ " ,
] ,
) ,
@ r ###"
@ 9 a45c67d3e96 2001 - 02 - 03 04 :05 :07.000 + 07 :00 230 dd059e1b0
~ ( empty ) ( no description set )
" ###
) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success (
& repo_path ,
& [
" --config-toml=ui.log-author-format='name' " ,
" log " ,
" --revisions=@ "
] ,
) ,
@ r ###"
@ 9 a45c67d3e96 Test User 2001 - 02 - 03 04 :05 :07.000 + 07 :00 230 dd059e1b0
~ ( empty ) ( no description set )
" ###
) ;
insta ::assert_snapshot! (
test_env . jj_cmd_success (
& repo_path ,
& [
" --config-toml=ui.log-author-format='username' " ,
" log " ,
" --revisions=@ "
] ,
) ,
@ r ###"
@ 9 a45c67d3e96 test . user 2001 - 02 - 03 04 :05 :07.000 + 07 :00 230 dd059e1b0
~ ( empty ) ( no description set )
" ###
) ;
}
2023-01-02 07:09:38 +00:00
#[ test ]
fn test_log_divergence ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
std ::fs ::write ( repo_path . join ( " file " ) , " foo \n " ) . unwrap ( ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " description 1 " ] ) ;
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" log " ,
" -T " ,
r # "description.first_line() if(divergent, " !divergence!")"# ,
] ,
) ;
// No divergence
insta ::assert_snapshot! ( stdout , @ r ###"
@ description 1
2023-01-31 09:17:46 +00:00
o
2023-01-02 07:09:38 +00:00
" ###);
// Create divergence
test_env . jj_cmd_success (
& repo_path ,
& [ " describe " , " -m " , " description 2 " , " --at-operation " , " @- " ] ,
) ;
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" log " ,
" -T " ,
r # "description.first_line() if(divergent, " !divergence!")"# ,
] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
Concurrent modification detected , resolving automatically .
o description 2 ! divergence !
| @ description 1 ! divergence !
| /
2023-01-31 09:17:46 +00:00
o
2023-01-02 07:09:38 +00:00
" ###);
}
2022-05-09 17:38:23 +00:00
#[ test ]
fn test_log_reversed ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " first " ] ) ;
test_env . jj_cmd_success ( & repo_path , & [ " new " , " -m " , " second " ] ) ;
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " --reversed " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
2023-01-31 09:17:46 +00:00
o
2022-05-09 17:38:23 +00:00
o first
@ second
" ###);
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [ " log " , " -T " , " description " , " --reversed " , " --no-graph " ] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
first
second
" ###);
}
2022-09-13 07:26:23 +00:00
#[ test ]
fn test_log_filtered_by_path ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
std ::fs ::write ( repo_path . join ( " file1 " ) , " foo \n " ) . unwrap ( ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " first " ] ) ;
test_env . jj_cmd_success ( & repo_path , & [ " new " , " -m " , " second " ] ) ;
std ::fs ::write ( repo_path . join ( " file1 " ) , " foo \n bar \n " ) . unwrap ( ) ;
std ::fs ::write ( repo_path . join ( " file2 " ) , " baz \n " ) . unwrap ( ) ;
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " file1 " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ second
o first
~
" ###);
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " file2 " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ second
~
" ###);
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , " description " , " -s " , " file1 " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ second
| M file1
o first
~ A file1
" ###);
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [ " log " , " -T " , " description " , " -s " , " file2 " , " --no-graph " ] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
second
A file2
" ###);
2022-10-23 04:14:00 +00:00
// file() revset doesn't filter the diff.
let stdout = test_env . jj_cmd_success (
& repo_path ,
& [
" log " ,
" -T " ,
" description " ,
" -s " ,
" -rfile(file2) " ,
" --no-graph " ,
] ,
) ;
insta ::assert_snapshot! ( stdout , @ r ###"
second
M file1
A file2
" ###);
2022-09-13 07:26:23 +00:00
}
2022-10-01 15:09:32 +00:00
2022-11-18 23:41:35 +00:00
#[ test ]
fn test_log_warn_path_might_be_revset ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
std ::fs ::write ( repo_path . join ( " file1 " ) , " foo \n " ) . unwrap ( ) ;
// Don't warn if the file actually exists.
let assert = test_env
. jj_cmd ( & repo_path , & [ " log " , " file1 " , " -T " , " description " ] )
. assert ( )
. success ( ) ;
insta ::assert_snapshot! ( get_stdout_string ( & assert ) , @ r ###"
2023-01-31 09:17:46 +00:00
@
2022-11-18 23:41:35 +00:00
~
" ###);
insta ::assert_snapshot! ( get_stderr_string ( & assert ) , @ " " ) ;
// Warn for `jj log .` specifically, for former Mercurial users.
let assert = test_env
. jj_cmd ( & repo_path , & [ " log " , " . " , " -T " , " description " ] )
. assert ( )
. success ( ) ;
insta ::assert_snapshot! ( get_stdout_string ( & assert ) , @ r ###"
2023-01-31 09:17:46 +00:00
@
2022-11-18 23:41:35 +00:00
~
" ###);
insta ::assert_snapshot! ( get_stderr_string ( & assert ) , @ r ### "warning: The argument "." is being interpreted as a path, but this is often not useful because all non-empty commits touch '.'. If you meant to show the working copy commit, pass -r '@' instead."### ) ;
// ...but checking `jj log .` makes sense in a subdirectory.
let subdir = repo_path . join ( " dir " ) ;
std ::fs ::create_dir_all ( & subdir ) . unwrap ( ) ;
let assert = test_env . jj_cmd ( & subdir , & [ " log " , " . " ] ) . assert ( ) . success ( ) ;
insta ::assert_snapshot! ( get_stdout_string ( & assert ) , @ " " ) ;
insta ::assert_snapshot! ( get_stderr_string ( & assert ) , @ " " ) ;
// Warn for `jj log @` instead of `jj log -r @`.
let assert = test_env
. jj_cmd ( & repo_path , & [ " log " , " @ " , " -T " , " description " ] )
. assert ( )
. success ( ) ;
insta ::assert_snapshot! ( get_stdout_string ( & assert ) , @ " " ) ;
insta ::assert_snapshot! ( get_stderr_string ( & assert ) , @ r ###"
warning : The argument " @ " is being interpreted as a path . To specify a revset , pass - r " @ " instead .
" ###);
// Warn when there's no path with the provided name.
let assert = test_env
. jj_cmd ( & repo_path , & [ " log " , " file2 " , " -T " , " description " ] )
. assert ( )
. success ( ) ;
insta ::assert_snapshot! ( get_stdout_string ( & assert ) , @ " " ) ;
insta ::assert_snapshot! ( get_stderr_string ( & assert ) , @ r ###"
warning : The argument " file2 " is being interpreted as a path . To specify a revset , pass - r " file2 " instead .
" ###);
// If an explicit revision is provided, then suppress the warning.
let assert = test_env
. jj_cmd ( & repo_path , & [ " log " , " @ " , " -r " , " @ " , " -T " , " description " ] )
. assert ( )
. success ( ) ;
insta ::assert_snapshot! ( get_stdout_string ( & assert ) , @ " " ) ;
insta ::assert_snapshot! ( get_stderr_string ( & assert ) , @ r ###"
" ###);
}
2022-10-01 15:09:32 +00:00
#[ test ]
fn test_default_revset ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
std ::fs ::write ( repo_path . join ( " file1 " ) , " foo \n " ) . unwrap ( ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " add a file " ] ) ;
// Set configuration to only show the root commit.
2023-01-26 19:26:18 +00:00
test_env . add_config ( r # "ui.default-revset = "root""# ) ;
2022-10-01 15:09:32 +00:00
// Log should only contain one line (for the root commit), and not show the
// commit created above.
assert_eq! (
1 ,
test_env
. jj_cmd_success ( & repo_path , & [ " log " , " -T " , " commit_id " ] )
. lines ( )
. count ( )
) ;
}
2022-11-26 01:33:24 +00:00
2023-01-02 05:18:38 +00:00
#[ test ]
fn test_default_revset_per_repo ( ) {
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
std ::fs ::write ( repo_path . join ( " file1 " ) , " foo \n " ) . unwrap ( ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " add a file " ] ) ;
// Set configuration to only show the root commit.
std ::fs ::write (
repo_path . join ( " .jj/repo/config.toml " ) ,
r # "ui.default-revset = "root""# ,
)
. unwrap ( ) ;
// Log should only contain one line (for the root commit), and not show the
// commit created above.
assert_eq! (
1 ,
test_env
. jj_cmd_success ( & repo_path , & [ " log " , " -T " , " commit_id " ] )
. lines ( )
. count ( )
) ;
}
2023-01-13 07:55:52 +00:00
#[ test ]
fn test_graph_template_color ( ) {
// Test that color codes from a multi-line template don't span the graph lines.
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
test_env . jj_cmd_success (
& repo_path ,
& [ " describe " , " -m " , " first line \n second line \n third line " ] ,
) ;
test_env . jj_cmd_success ( & repo_path , & [ " new " , " -m " , " single line " ] ) ;
test_env . add_config (
2023-01-26 19:26:18 +00:00
r #" [colors]
2023-01-13 07:55:52 +00:00
description = " red "
" working_copy description " = " green "
" #,
) ;
// First test without color for comparison
2023-02-03 03:49:40 +00:00
let template = r # "label(if(current_working_copy, "working_copy"), description)"# ;
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T " , template ] ) ;
2023-01-13 07:55:52 +00:00
insta ::assert_snapshot! ( stdout , @ r ###"
@ single line
o first line
| second line
| third line
2023-01-31 09:17:46 +00:00
o
2023-01-13 07:55:52 +00:00
" ###);
2023-02-03 03:49:40 +00:00
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " --color=always " , " log " , " -T " , template ] ) ;
2023-01-13 07:55:52 +00:00
insta ::assert_snapshot! ( stdout , @ r ###"
2023-01-13 18:09:09 +00:00
@ [ 1 m [ 38 ; 5 ; 2 msingle line [ 0 m
o [ 38 ; 5 ; 1 mfirst line [ 39 m
| [ 38 ; 5 ; 1 msecond line [ 39 m
| [ 38 ; 5 ; 1 mthird line [ 39 m
2023-01-31 09:17:46 +00:00
o
2023-01-13 07:55:52 +00:00
" ###);
}
2023-01-27 06:33:24 +00:00
#[ test ]
fn test_graph_styles ( ) {
// Test that different graph styles are available.
let test_env = TestEnvironment ::default ( ) ;
test_env . jj_cmd_success ( test_env . env_root ( ) , & [ " init " , " repo " , " --git " ] ) ;
let repo_path = test_env . env_root ( ) . join ( " repo " ) ;
test_env . jj_cmd_success ( & repo_path , & [ " commit " , " -m " , " initial " ] ) ;
test_env . jj_cmd_success ( & repo_path , & [ " commit " , " -m " , " main branch 1 " ] ) ;
test_env . jj_cmd_success ( & repo_path , & [ " describe " , " -m " , " main branch 2 " ] ) ;
test_env . jj_cmd_success (
& repo_path ,
& [ " new " , " -m " , " side branch \n with \n long \n description " ] ,
) ;
test_env . jj_cmd_success (
& repo_path ,
& [ " new " , " -m " , " merge " , r # "description("main branch 1")"# , " @ " ] ,
) ;
// Default (legacy) style
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T=description " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ merge
| \
o | side branch
| | with
| | long
| | description
o | main branch 2
| /
o main branch 1
o initial
2023-01-31 09:17:46 +00:00
o
2023-01-27 06:33:24 +00:00
" ###);
// ASCII style
2023-01-27 18:15:51 +00:00
test_env . add_config ( r # "ui.graph.style = "ascii""# ) ;
2023-01-27 06:33:24 +00:00
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T=description " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ merge
| \
o | side branch
| | with
| | long
| | description
o | main branch 2
| /
o main branch 1
o initial
2023-01-31 09:17:46 +00:00
o
2023-01-27 06:33:24 +00:00
" ###);
// Large ASCII style
2023-01-27 18:15:51 +00:00
test_env . add_config ( r # "ui.graph.style = "ascii-large""# ) ;
2023-01-27 06:33:24 +00:00
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T=description " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ merge
| \
| \
o | side branch
| | with
| | long
| | description
o | main branch 2
| /
| /
o main branch 1
o initial
2023-01-31 09:17:46 +00:00
o
2023-01-27 06:33:24 +00:00
" ###);
// Curved style
2023-01-27 18:15:51 +00:00
test_env . add_config ( r # "ui.graph.style = "curved""# ) ;
2023-01-27 06:33:24 +00:00
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T=description " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ merge
├ ─ ╮
o │ side branch
│ │ with
│ │ long
│ │ description
o │ main branch 2
├ ─ ╯
o main branch 1
o initial
2023-01-31 09:17:46 +00:00
o
2023-01-27 06:33:24 +00:00
" ###);
// Square style
2023-01-27 18:15:51 +00:00
test_env . add_config ( r # "ui.graph.style = "square""# ) ;
2023-01-27 06:33:24 +00:00
let stdout = test_env . jj_cmd_success ( & repo_path , & [ " log " , " -T=description " ] ) ;
insta ::assert_snapshot! ( stdout , @ r ###"
@ merge
├ ─ ┐
o │ side branch
│ │ with
│ │ long
│ │ description
o │ main branch 2
├ ─ ┘
o main branch 1
o initial
2023-01-31 09:17:46 +00:00
o
2023-01-27 06:33:24 +00:00
" ###);
}