diff options
author | Stephan Dilly <dilly.stephan@gmail.com> | 2021-08-17 14:24:25 +0200 |
---|---|---|
committer | Stephan Dilly <dilly.stephan@gmail.com> | 2021-08-17 14:24:25 +0200 |
commit | dad8e8d43de79a3c39a37f118e529dc88fab5495 (patch) | |
tree | 32329a450106142d35374c88b776c74a679bd9a0 /asyncgit/src/sync/staging/discard_tracked.rs | |
parent | 25a49e22f267f467fb7436c799e1d01294e0a914 (diff) |
cargo fmt: use hardtabs
since it does not support hard-whitespaces its the only way to make whitespaces consisitent and checked
Diffstat (limited to 'asyncgit/src/sync/staging/discard_tracked.rs')
-rw-r--r-- | asyncgit/src/sync/staging/discard_tracked.rs | 442 |
1 files changed, 221 insertions, 221 deletions
diff --git a/asyncgit/src/sync/staging/discard_tracked.rs b/asyncgit/src/sync/staging/discard_tracked.rs index 4adda5b5..bc10bfd1 100644 --- a/asyncgit/src/sync/staging/discard_tracked.rs +++ b/asyncgit/src/sync/staging/discard_tracked.rs @@ -1,344 +1,344 @@ use super::{apply_selection, load_file}; use crate::error::Result; use crate::sync::{ - diff::DiffLinePosition, - patches::get_file_diff_patch_and_hunklines, - utils::{repo, repo_write_file}, + diff::DiffLinePosition, + patches::get_file_diff_patch_and_hunklines, + utils::{repo, repo_write_file}, }; use scopetime::scope_time; /// discards specific lines in an unstaged hunk of a diff pub fn discard_lines( - repo_path: &str, - file_path: &str, - lines: &[DiffLinePosition], + repo_path: &str, + file_path: &str, + lines: &[DiffLinePosition], ) -> Result<()> { - scope_time!("discard_lines"); + scope_time!("discard_lines"); - if lines.is_empty() { - return Ok(()); - } + if lines.is_empty() { + return Ok(()); + } - let repo = repo(repo_path)?; - repo.index()?.read(true)?; + let repo = repo(repo_path)?; + repo.index()?.read(true)?; - //TODO: check that file is not new (status modified) + //TODO: check that file is not new (status modified) - let new_content = { - let (_patch, hunks) = get_file_diff_patch_and_hunklines( - &repo, file_path, false, false, - )?; + let new_content = { + let (_patch, hunks) = get_file_diff_patch_and_hunklines( + &repo, file_path, false, false, + )?; - let working_content = load_file(&repo, file_path)?; - let old_lines = working_content.lines().collect::<Vec<_>>(); + let working_content = load_file(&repo, file_path)?; + let old_lines = working_content.lines().collect::<Vec<_>>(); - apply_selection(lines, &hunks, &old_lines, false, true)? - }; + apply_selection(lines, &hunks, &old_lines, false, true)? + }; - repo_write_file(&repo, file_path, new_content.as_str())?; + repo_write_file(&repo, file_path, new_content.as_str())?; - Ok(()) + Ok(()) } #[cfg(test)] mod test { - use super::*; - use crate::sync::tests::{repo_init, write_commit_file}; + use super::*; + use crate::sync::tests::{repo_init, write_commit_file}; - #[test] - fn test_discard() { - static FILE_1: &str = r"0 + #[test] + fn test_discard() { + static FILE_1: &str = r"0 1 2 3 4 "; - static FILE_2: &str = r"0 + static FILE_2: &str = r"0 3 4 "; - static FILE_3: &str = r"0 + static FILE_3: &str = r"0 2 3 4 "; - let (path, repo) = repo_init().unwrap(); - let path = path.path().to_str().unwrap(); - - write_commit_file(&repo, "test.txt", FILE_1, "c1"); - - repo_write_file(&repo, "test.txt", FILE_2).unwrap(); - - discard_lines( - path, - "test.txt", - &[ - DiffLinePosition { - old_lineno: Some(3), - new_lineno: None, - }, - DiffLinePosition { - old_lineno: None, - new_lineno: Some(2), - }, - ], - ) - .unwrap(); - - let result_file = load_file(&repo, "test.txt").unwrap(); - - assert_eq!(result_file.as_str(), FILE_3); - } - - #[test] - fn test_discard2() { - static FILE_1: &str = r"start + let (path, repo) = repo_init().unwrap(); + let path = path.path().to_str().unwrap(); + + write_commit_file(&repo, "test.txt", FILE_1, "c1"); + + repo_write_file(&repo, "test.txt", FILE_2).unwrap(); + + discard_lines( + path, + "test.txt", + &[ + DiffLinePosition { + old_lineno: Some(3), + new_lineno: None, + }, + DiffLinePosition { + old_lineno: None, + new_lineno: Some(2), + }, + ], + ) + .unwrap(); + + let result_file = load_file(&repo, "test.txt").unwrap(); + + assert_eq!(result_file.as_str(), FILE_3); + } + + #[test] + fn test_discard2() { + static FILE_1: &str = r"start end "; - static FILE_2: &str = r"start + static FILE_2: &str = r"start 1 2 end "; - static FILE_3: &str = r"start + static FILE_3: &str = r"start 1 end "; - let (path, repo) = repo_init().unwrap(); - let path = path.path().to_str().unwrap(); + let (path, repo) = repo_init().unwrap(); + let path = path.path().to_str().unwrap(); - write_commit_file(&repo, "test.txt", FILE_1, "c1"); + write_commit_file(&repo, "test.txt", FILE_1, "c1"); - repo_write_file(&repo, "test.txt", FILE_2).unwrap(); + repo_write_file(&repo, "test.txt", FILE_2).unwrap(); - discard_lines( - path, - "test.txt", - &[DiffLinePosition { - old_lineno: None, - new_lineno: Some(3), - }], - ) - .unwrap(); + discard_lines( + path, + "test.txt", + &[DiffLinePosition { + old_lineno: None, + new_lineno: Some(3), + }], + ) + .unwrap(); - let result_file = load_file(&repo, "test.txt").unwrap(); + let result_file = load_file(&repo, "test.txt").unwrap(); - assert_eq!(result_file.as_str(), FILE_3); - } + assert_eq!(result_file.as_str(), FILE_3); + } - #[test] - fn test_discard3() { - static FILE_1: &str = r"start + #[test] + fn test_discard3() { + static FILE_1: &str = r"start 1 end "; - static FILE_2: &str = r"start + static FILE_2: &str = r"start 2 end "; - static FILE_3: &str = r"start + static FILE_3: &str = r"start 1 end "; - let (path, repo) = repo_init().unwrap(); - let path = path.path().to_str().unwrap(); - - write_commit_file(&repo, "test.txt", FILE_1, "c1"); - - repo_write_file(&repo, "test.txt", FILE_2).unwrap(); - - discard_lines( - path, - "test.txt", - &[ - DiffLinePosition { - old_lineno: Some(2), - new_lineno: None, - }, - DiffLinePosition { - old_lineno: None, - new_lineno: Some(2), - }, - ], - ) - .unwrap(); - - let result_file = load_file(&repo, "test.txt").unwrap(); - - assert_eq!(result_file.as_str(), FILE_3); - } - - #[test] - fn test_discard4() { - static FILE_1: &str = r"start + let (path, repo) = repo_init().unwrap(); + let path = path.path().to_str().unwrap(); + + write_commit_file(&repo, "test.txt", FILE_1, "c1"); + + repo_write_file(&repo, "test.txt", FILE_2).unwrap(); + + discard_lines( + path, + "test.txt", + &[ + DiffLinePosition { + old_lineno: Some(2), + new_lineno: None, + }, + DiffLinePosition { + old_lineno: None, + new_lineno: Some(2), + }, + ], + ) + .unwrap(); + + let result_file = load_file(&repo, "test.txt").unwrap(); + + assert_eq!(result_file.as_str(), FILE_3); + } + + #[test] + fn test_discard4() { + static FILE_1: &str = r"start mid end "; - static FILE_2: &str = r"start + static FILE_2: &str = r"start 1 mid 2 end "; - static FILE_3: &str = r"start + static FILE_3: &str = r"start mid end "; - let (path, repo) = repo_init().unwrap(); - let path = path.path().to_str().unwrap(); - - write_commit_file(&repo, "test.txt", FILE_1, "c1"); - - repo_write_file(&repo, "test.txt", FILE_2).unwrap(); - - discard_lines( - path, - "test.txt", - &[ - DiffLinePosition { - old_lineno: None, - new_lineno: Some(2), - }, - DiffLinePosition { - old_lineno: None, - new_lineno: Some(4), - }, - ], - ) - .unwrap(); - - let result_file = load_file(&repo, "test.txt").unwrap(); - - assert_eq!(result_file.as_str(), FILE_3); - } - - #[test] - fn test_discard_if_first_selected_line_is_not_in_any_hunk() { - static FILE_1: &str = r"start + let (path, repo) = repo_init().unwrap(); + let path = path.path().to_str().unwrap(); + + write_commit_file(&repo, "test.txt", FILE_1, "c1"); + + repo_write_file(&repo, "test.txt", FILE_2).unwrap(); + + discard_lines( + path, + "test.txt", + &[ + DiffLinePosition { + old_lineno: None, + new_lineno: Some(2), + }, + DiffLinePosition { + old_lineno: None, + new_lineno: Some(4), + }, + ], + ) + .unwrap(); + + let result_file = load_file(&repo, "test.txt").unwrap(); + + assert_eq!(result_file.as_str(), FILE_3); + } + + #[test] + fn test_discard_if_first_selected_line_is_not_in_any_hunk() { + static FILE_1: &str = r"start end "; - static FILE_2: &str = r"start + static FILE_2: &str = r"start 1 end "; - static FILE_3: &str = r"start + static FILE_3: &str = r"start end "; - let (path, repo) = repo_init().unwrap(); - let path = path.path().to_str().unwrap(); - - write_commit_file(&repo, "test.txt", FILE_1, "c1"); - - repo_write_file(&repo, "test.txt", FILE_2).unwrap(); - - discard_lines( - path, - "test.txt", - &[ - DiffLinePosition { - old_lineno: None, - new_lineno: Some(1), - }, - DiffLinePosition { - old_lineno: None, - new_lineno: Some(2), - }, - ], - ) - .unwrap(); - - let result_file = load_file(&repo, "test.txt").unwrap(); - - assert_eq!(result_file.as_str(), FILE_3); - } - - //this test shows that we require at least a diff context around add/removes of 1 - #[test] - fn test_discard_deletions_filestart_breaking_with_zero_context() { - static FILE_1: &str = r"start + let (path, repo) = repo_init().unwrap(); + let path = path.path().to_str().unwrap(); + + write_commit_file(&repo, "test.txt", FILE_1, "c1"); + + repo_write_file(&repo, "test.txt", FILE_2).unwrap(); + + discard_lines( + path, + "test.txt", + &[ + DiffLinePosition { + old_lineno: None, + new_lineno: Some(1), + }, + DiffLinePosition { + old_lineno: None, + new_lineno: Some(2), + }, + ], + ) + .unwrap(); + + let result_file = load_file(&repo, "test.txt").unwrap(); + + assert_eq!(result_file.as_str(), FILE_3); + } + + //this test shows that we require at least a diff context around add/removes of 1 + #[test] + fn test_discard_deletions_filestart_breaking_with_zero_context() { + static FILE_1: &str = r"start mid end "; - static FILE_2: &str = r"start + static FILE_2: &str = r"start end "; - static FILE_3: &str = r"start + static FILE_3: &str = r"start mid end "; - let (path, repo) = repo_init().unwrap(); - let path = path.path().to_str().unwrap(); + let (path, repo) = repo_init().unwrap(); + let path = path.path().to_str().unwrap(); - write_commit_file(&repo, "test.txt", FILE_1, "c1"); + write_commit_file(&repo, "test.txt", FILE_1, "c1"); - repo_write_file(&repo, "test.txt", FILE_2).unwrap(); + repo_write_file(&repo, "test.txt", FILE_2).unwrap(); - discard_lines( - path, - "test.txt", - &[DiffLinePosition { - old_lineno: Some(2), - new_lineno: None, - }], - ) - .unwrap(); + discard_lines( + path, + "test.txt", + &[DiffLinePosition { + old_lineno: Some(2), + new_lineno: None, + }], + ) + .unwrap(); - let result_file = load_file(&repo, "test.txt").unwrap(); + let result_file = load_file(&repo, "test.txt").unwrap(); - assert_eq!(result_file.as_str(), FILE_3); - } + assert_eq!(result_file.as_str(), FILE_3); + } - #[test] - fn test_discard5() { - static FILE_1: &str = r"start + #[test] + fn test_discard5() { + static FILE_1: &str = r"start "; - static FILE_2: &str = r"start + static FILE_2: &str = r"start 1"; - static FILE_3: &str = r"start + static FILE_3: &str = r"start "; - let (path, repo) = repo_init().unwrap(); - let path = path.path().to_str().unwrap(); + let (path, repo) = repo_init().unwrap(); + let path = path.path().to_str().unwrap(); - write_commit_file(&repo, "test.txt", FILE_1, "c1"); + write_commit_file(&repo, "test.txt", FILE_1, "c1"); - repo_write_file(&repo, "test.txt", FILE_2).unwrap(); + repo_write_file(&repo, "test.txt", FILE_2).unwrap(); - discard_lines( - path, - "test.txt", - &[DiffLinePosition { - old_lineno: None, - new_lineno: Some(2), - }], - ) - .unwrap(); + discard_lines( + path, + "test.txt", + &[DiffLinePosition { + old_lineno: None, + new_lineno: Some(2), + }], + ) + .unwrap(); - let result_file = load_file(&repo, "test.txt").unwrap(); + let result_file = load_file(&repo, "test.txt").unwrap(); - assert_eq!(result_file.as_str(), FILE_3); - } + assert_eq!(result_file.as_str(), FILE_3); + } } |