// Copyright 2022 The Jujutsu Authors // // 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. use regex::Regex; use crate::common::TestEnvironment; #[test] fn test_show() { let test_env = TestEnvironment::default(); test_env.run_jj_in(".", ["git", "init", "repo"]).success(); let work_dir = test_env.work_dir("repo"); let output = work_dir.run_jj(["show"]); let output = output.normalize_stdout_with(|s| s.split_inclusive('\n').skip(2).collect()); insta::assert_snapshot!(output, @r" Author : Test User (2001-02-03 08:05:07) Committer: Test User (2001-02-03 08:05:07) (no description set) [EOF] "); } #[test] fn test_show_basic() { let test_env = TestEnvironment::default(); test_env.run_jj_in(".", ["git", "init", "repo"]).success(); let work_dir = test_env.work_dir("repo"); work_dir.write_file("file1", "foo\n"); work_dir.write_file("file2", "foo\nbaz qux\n"); work_dir.run_jj(["new"]).success(); work_dir.remove_file("file1"); work_dir.write_file("file2", "foo\nbar\nbaz quux\n"); work_dir.write_file("file3", "foo\n"); let output = work_dir.run_jj(["show"]); insta::assert_snapshot!(output, @r" Commit ID: 92e687faa4e5b681937f5a9c47feaa33e6b4892c Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:09) Committer: Test User (2001-02-03 08:05:09) (no description set) Modified regular file file2: 1 1: foo 2: bar 2 3: baz quxquux Modified regular file file3 (file1 => file3): [EOF] "); let output = work_dir.run_jj(["show", "--context=0"]); insta::assert_snapshot!(output, @r" Commit ID: 92e687faa4e5b681937f5a9c47feaa33e6b4892c Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:09) Committer: Test User (2001-02-03 08:05:09) (no description set) Modified regular file file2: 1 1: foo 2: bar 2 3: baz quxquux Modified regular file file3 (file1 => file3): [EOF] "); let output = work_dir.run_jj(["show", "--color=debug"]); insta::assert_snapshot!(output, @r" Commit ID: <> Change ID: <> Author : <> <<><><>> (<>) Committer: <> <<><><>> (<>) <> <> <><><><> <><><><> <><><><><><><> < file3):>> [EOF] "); let output = work_dir.run_jj(["show", "-s"]); insta::assert_snapshot!(output, @r" Commit ID: 92e687faa4e5b681937f5a9c47feaa33e6b4892c Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:09) Committer: Test User (2001-02-03 08:05:09) (no description set) M file2 R {file1 => file3} [EOF] "); let output = work_dir.run_jj(["show", "--types"]); insta::assert_snapshot!(output, @r" Commit ID: 92e687faa4e5b681937f5a9c47feaa33e6b4892c Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:09) Committer: Test User (2001-02-03 08:05:09) (no description set) FF file2 FF {file1 => file3} [EOF] "); let output = work_dir.run_jj(["show", "--git"]); insta::assert_snapshot!(output, @r" Commit ID: 92e687faa4e5b681937f5a9c47feaa33e6b4892c Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:09) Committer: Test User (2001-02-03 08:05:09) (no description set) diff --git a/file2 b/file2 index 523a4a9de8..485b56a572 100644 --- a/file2 +++ b/file2 @@ -1,2 +1,3 @@ foo -baz qux +bar +baz quux diff --git a/file1 b/file3 rename from file1 rename to file3 [EOF] "); let output = work_dir.run_jj(["show", "--git", "--context=0"]); insta::assert_snapshot!(output, @r" Commit ID: 92e687faa4e5b681937f5a9c47feaa33e6b4892c Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:09) Committer: Test User (2001-02-03 08:05:09) (no description set) diff --git a/file2 b/file2 index 523a4a9de8..485b56a572 100644 --- a/file2 +++ b/file2 @@ -2,1 +2,2 @@ -baz qux +bar +baz quux diff --git a/file1 b/file3 rename from file1 rename to file3 [EOF] "); let output = work_dir.run_jj(["show", "--git", "--color=debug"]); insta::assert_snapshot!(output, @r" Commit ID: <> Change ID: <> Author : <> <<><><>> (<>) Committer: <> <<><><>> (<>) <> <> <> <> <> <> <> <><><> <><> <><><> <> <> <> [EOF] "); let output = work_dir.run_jj(["show", "-s", "--git"]); insta::assert_snapshot!(output, @r" Commit ID: 92e687faa4e5b681937f5a9c47feaa33e6b4892c Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:09) Committer: Test User (2001-02-03 08:05:09) (no description set) M file2 R {file1 => file3} diff --git a/file2 b/file2 index 523a4a9de8..485b56a572 100644 --- a/file2 +++ b/file2 @@ -1,2 +1,3 @@ foo -baz qux +bar +baz quux diff --git a/file1 b/file3 rename from file1 rename to file3 [EOF] "); let output = work_dir.run_jj(["show", "--stat"]); insta::assert_snapshot!(output, @r" Commit ID: 92e687faa4e5b681937f5a9c47feaa33e6b4892c Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:09) Committer: Test User (2001-02-03 08:05:09) (no description set) file2 | 3 ++- {file1 => file3} | 0 2 files changed, 2 insertions(+), 1 deletion(-) [EOF] "); } #[test] fn test_show_with_template() { let test_env = TestEnvironment::default(); test_env.run_jj_in(".", ["git", "init", "repo"]).success(); let work_dir = test_env.work_dir("repo"); work_dir.run_jj(["new", "-m", "a new commit"]).success(); let output = work_dir.run_jj(["show", "-T", "description"]); insta::assert_snapshot!(output, @r" a new commit [EOF] "); } #[test] fn test_show_with_template_no_patch() { let test_env = TestEnvironment::default(); test_env.run_jj_in(".", ["git", "init", "repo"]).success(); let work_dir = test_env.work_dir("repo"); work_dir.run_jj(["new", "-m", "a new commit"]).success(); work_dir.write_file("file1", "foo\n"); let output = work_dir.run_jj(["show", "--no-patch", "-T", "description"]); insta::assert_snapshot!(output, @r" a new commit [EOF] "); } #[test] fn test_show_with_no_patch() { let test_env = TestEnvironment::default(); test_env.run_jj_in(".", ["git", "init", "repo"]).success(); let work_dir = test_env.work_dir("repo"); work_dir.run_jj(["new", "-m", "a new commit"]).success(); work_dir.write_file("file1", "foo\n"); let output = work_dir.run_jj(["show", "--no-patch"]); insta::assert_snapshot!(output, @r" Commit ID: 86d5fa72f4ecc6d51478941ee9160db9c52b842e Change ID: rlvkpnrzqnoowoytxnquwvuryrwnrmlp Author : Test User (2001-02-03 08:05:08) Committer: Test User (2001-02-03 08:05:09) a new commit [EOF] "); } #[test] fn test_show_with_no_template() { let test_env = TestEnvironment::default(); test_env.run_jj_in(".", ["git", "init", "repo"]).success(); let work_dir = test_env.work_dir("repo"); let output = work_dir.run_jj(["show", "-T"]); insta::assert_snapshot!(output, @r" ------- stderr ------- error: a value is required for '--template