@@ -1041,3 +1041,78 @@ def test_status(
1041
1041
assert staged ["modify" ] == ["foo" ]
1042
1042
assert unstaged == ["bar" ]
1043
1043
assert untracked == expected_untracked
1044
+
1045
+
1046
+ @pytest .mark .skip_git_backend ("pygit2" , "gitpython" )
1047
+ @pytest .mark .parametrize ("untracked_files" , [False , True ])
1048
+ def test_is_dirty_dulwich (
1049
+ tmp_dir : TmpDir ,
1050
+ scm : Git ,
1051
+ git : Git ,
1052
+ tmp_dir_factory : TempDirFactory ,
1053
+ mocker ,
1054
+ untracked_files : str ,
1055
+ ):
1056
+ tmp_dir .gen (
1057
+ {
1058
+ "foo" : "foo" ,
1059
+ }
1060
+ )
1061
+ scm .add_commit (["foo" ], message = "init" )
1062
+
1063
+ assert not git .is_dirty ()
1064
+
1065
+ with (tmp_dir / "foo" ).open ("a" ) as fobj :
1066
+ fobj .write ("modified" )
1067
+
1068
+ assert git .is_dirty (untracked_files )
1069
+ scm .add_commit (["foo" ], message = "commit" )
1070
+
1071
+ with (tmp_dir / "untracked" ).open ("w" ) as fobj :
1072
+ fobj .write ("untracked" )
1073
+
1074
+ spy = mocker .spy (git .dulwich , "status" )
1075
+
1076
+ assert git .is_dirty (untracked_files ) == untracked_files
1077
+ assert spy .called
1078
+ _ , kwargs = spy .call_args
1079
+ if untracked_files :
1080
+ assert not kwargs
1081
+ else :
1082
+ assert kwargs ["untracked_files" ] == "no"
1083
+
1084
+
1085
+ @pytest .mark .skip_git_backend ("pygit2" , "dulwich" )
1086
+ @pytest .mark .parametrize ("untracked_files" , [False , True ])
1087
+ def test_is_dirty_gitpython (
1088
+ tmp_dir : TmpDir ,
1089
+ scm : Git ,
1090
+ git : Git ,
1091
+ tmp_dir_factory : TempDirFactory ,
1092
+ mocker ,
1093
+ untracked_files : str ,
1094
+ ):
1095
+ tmp_dir .gen (
1096
+ {
1097
+ "foo" : "foo" ,
1098
+ }
1099
+ )
1100
+ scm .add_commit (["foo" ], message = "init" )
1101
+
1102
+ assert not git .is_dirty ()
1103
+
1104
+ with (tmp_dir / "foo" ).open ("a" ) as fobj :
1105
+ fobj .write ("modified" )
1106
+
1107
+ assert git .is_dirty (untracked_files )
1108
+ scm .add_commit (["foo" ], message = "commit" )
1109
+
1110
+ with (tmp_dir / "untracked" ).open ("w" ) as fobj :
1111
+ fobj .write ("untracked" )
1112
+
1113
+ spy = mocker .spy (git .gitpython .repo , "is_dirty" )
1114
+
1115
+ assert git .is_dirty (untracked_files ) == untracked_files
1116
+ assert spy .called
1117
+ _ , kwargs = spy .call_args
1118
+ assert kwargs ["untracked_files" ] == untracked_files
0 commit comments