Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
526d4c94
Commit
526d4c94
authored
Sep 27, 2013
by
Justin Spahr-Summers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Test that submodules don't affect stashing
parent
4fe0b0b3
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
117 additions
and
43 deletions
+117
-43
tests-clar/stash/save.c
+25
-43
tests-clar/stash/stash_helpers.c
+19
-0
tests-clar/stash/stash_helpers.h
+5
-0
tests-clar/stash/submodules.c
+68
-0
No files found.
tests-clar/stash/save.c
View file @
526d4c94
...
...
@@ -113,33 +113,15 @@ $ git status --short
cl_assert_equal_i
(
GIT_STATUS_WT_NEW
,
status
);
}
static
void
assert_status
(
const
char
*
path
,
int
status_flags
)
{
unsigned
int
status
;
int
error
;
error
=
git_status_file
(
&
status
,
repo
,
path
);
if
(
status_flags
<
0
)
{
cl_assert_equal_i
(
status_flags
,
error
);
return
;
}
cl_assert_equal_i
(
0
,
error
);
cl_assert_equal_i
((
unsigned
int
)
status_flags
,
status
);
}
void
test_stash_save__can_keep_index
(
void
)
{
cl_git_pass
(
git_stash_save
(
&
stash_tip_oid
,
repo
,
signature
,
NULL
,
GIT_STASH_KEEP_INDEX
));
assert_status
(
"what"
,
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
"how"
,
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
"who"
,
GIT_STATUS_CURRENT
);
assert_status
(
"when"
,
GIT_STATUS_WT_NEW
);
assert_status
(
"just.ignore"
,
GIT_STATUS_IGNORED
);
assert_status
(
repo
,
"what"
,
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
repo
,
"how"
,
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
repo
,
"who"
,
GIT_STATUS_CURRENT
);
assert_status
(
repo
,
"when"
,
GIT_STATUS_WT_NEW
);
assert_status
(
repo
,
"just.ignore"
,
GIT_STATUS_IGNORED
);
}
static
void
assert_commit_message_contains
(
const
char
*
revision
,
const
char
*
fragment
)
...
...
@@ -308,25 +290,25 @@ void test_stash_save__can_stage_normal_then_stage_untracked(void)
* 100644 blob b6ed15e81e2593d7bb6265eb4a991d29dc3e628b when
*/
assert_status
(
"what"
,
GIT_STATUS_WT_MODIFIED
|
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
"how"
,
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
"who"
,
GIT_STATUS_WT_MODIFIED
);
assert_status
(
"when"
,
GIT_STATUS_WT_NEW
);
assert_status
(
"just.ignore"
,
GIT_STATUS_IGNORED
);
assert_status
(
repo
,
"what"
,
GIT_STATUS_WT_MODIFIED
|
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
repo
,
"how"
,
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
repo
,
"who"
,
GIT_STATUS_WT_MODIFIED
);
assert_status
(
repo
,
"when"
,
GIT_STATUS_WT_NEW
);
assert_status
(
repo
,
"just.ignore"
,
GIT_STATUS_IGNORED
);
cl_git_pass
(
git_stash_save
(
&
stash_tip_oid
,
repo
,
signature
,
NULL
,
GIT_STASH_DEFAULT
));
assert_status
(
"what"
,
GIT_STATUS_CURRENT
);
assert_status
(
"how"
,
GIT_STATUS_CURRENT
);
assert_status
(
"who"
,
GIT_STATUS_CURRENT
);
assert_status
(
"when"
,
GIT_STATUS_WT_NEW
);
assert_status
(
"just.ignore"
,
GIT_STATUS_IGNORED
);
assert_status
(
repo
,
"what"
,
GIT_STATUS_CURRENT
);
assert_status
(
repo
,
"how"
,
GIT_STATUS_CURRENT
);
assert_status
(
repo
,
"who"
,
GIT_STATUS_CURRENT
);
assert_status
(
repo
,
"when"
,
GIT_STATUS_WT_NEW
);
assert_status
(
repo
,
"just.ignore"
,
GIT_STATUS_IGNORED
);
cl_git_pass
(
git_stash_save
(
&
stash_tip_oid
,
repo
,
signature
,
NULL
,
GIT_STASH_INCLUDE_UNTRACKED
));
assert_status
(
"what"
,
GIT_STATUS_CURRENT
);
assert_status
(
"how"
,
GIT_STATUS_CURRENT
);
assert_status
(
"who"
,
GIT_STATUS_CURRENT
);
assert_status
(
"when"
,
GIT_ENOTFOUND
);
assert_status
(
"just.ignore"
,
GIT_STATUS_IGNORED
);
assert_status
(
repo
,
"what"
,
GIT_STATUS_CURRENT
);
assert_status
(
repo
,
"how"
,
GIT_STATUS_CURRENT
);
assert_status
(
repo
,
"who"
,
GIT_STATUS_CURRENT
);
assert_status
(
repo
,
"when"
,
GIT_ENOTFOUND
);
assert_status
(
repo
,
"just.ignore"
,
GIT_STATUS_IGNORED
);
assert_blob_oid
(
"stash@{1}^0:what"
,
"bc99dc98b3eba0e9157e94769cd4d49cb49de449"
);
/* see you later */
...
...
@@ -360,11 +342,11 @@ void test_stash_save__including_untracked_without_any_untracked_file_creates_an_
{
cl_git_pass
(
p_unlink
(
"stash/when"
));
assert_status
(
"what"
,
GIT_STATUS_WT_MODIFIED
|
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
"how"
,
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
"who"
,
GIT_STATUS_WT_MODIFIED
);
assert_status
(
"when"
,
GIT_ENOTFOUND
);
assert_status
(
"just.ignore"
,
GIT_STATUS_IGNORED
);
assert_status
(
repo
,
"what"
,
GIT_STATUS_WT_MODIFIED
|
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
repo
,
"how"
,
GIT_STATUS_INDEX_MODIFIED
);
assert_status
(
repo
,
"who"
,
GIT_STATUS_WT_MODIFIED
);
assert_status
(
repo
,
"when"
,
GIT_ENOTFOUND
);
assert_status
(
repo
,
"just.ignore"
,
GIT_STATUS_IGNORED
);
cl_git_pass
(
git_stash_save
(
&
stash_tip_oid
,
repo
,
signature
,
NULL
,
GIT_STASH_INCLUDE_UNTRACKED
));
...
...
tests-clar/stash/stash_helpers.c
View file @
526d4c94
...
...
@@ -35,3 +35,22 @@ void setup_stash(git_repository *repo, git_signature *signature)
git_index_free
(
index
);
}
void
assert_status
(
git_repository
*
repo
,
const
char
*
path
,
int
status_flags
)
{
unsigned
int
status
;
int
error
;
error
=
git_status_file
(
&
status
,
repo
,
path
);
if
(
status_flags
<
0
)
{
cl_assert_equal_i
(
status_flags
,
error
);
return
;
}
cl_assert_equal_i
(
0
,
error
);
cl_assert_equal_i
((
unsigned
int
)
status_flags
,
status
);
}
tests-clar/stash/stash_helpers.h
View file @
526d4c94
void
setup_stash
(
git_repository
*
repo
,
git_signature
*
signature
);
void
assert_status
(
git_repository
*
repo
,
const
char
*
path
,
int
status_flags
);
tests-clar/stash/submodules.c
0 → 100644
View file @
526d4c94
#include "clar_libgit2.h"
#include "stash_helpers.h"
#include "../submodule/submodule_helpers.h"
static
git_repository
*
repo
;
static
git_signature
*
signature
;
static
git_oid
stash_tip_oid
;
static
git_index
*
smindex
;
static
git_submodule
*
sm
;
static
git_repository
*
smrepo
;
void
test_stash_submodules__initialize
(
void
)
{
cl_git_pass
(
git_signature_new
(
&
signature
,
"nulltoken"
,
"emeric.fermas@gmail.com"
,
1323847743
,
60
));
/* Wed Dec 14 08:29:03 2011 +0100 */
repo
=
setup_fixture_submodules
();
cl_git_pass
(
git_submodule_lookup
(
&
sm
,
repo
,
"testrepo"
));
cl_git_pass
(
git_submodule_open
(
&
smrepo
,
sm
));
cl_git_pass
(
git_repository_index
(
&
smindex
,
smrepo
));
}
void
test_stash_submodules__cleanup
(
void
)
{
git_signature_free
(
signature
);
signature
=
NULL
;
}
void
test_stash_submodules__does_not_stash_modified_submodules
(
void
)
{
assert_status
(
repo
,
"modified"
,
GIT_STATUS_WT_MODIFIED
);
/* modify file in submodule */
cl_git_rewritefile
(
"submodules/testrepo/README"
,
"heyheyhey"
);
assert_status
(
repo
,
"testrepo"
,
GIT_STATUS_WT_MODIFIED
);
/* add file to index in submodule */
cl_git_pass
(
git_index_add_bypath
(
smindex
,
"README"
));
/* commit changed index of submodule */
cl_repo_commit_from_index
(
NULL
,
smrepo
,
NULL
,
1372350000
,
"Modify it"
);
assert_status
(
repo
,
"testrepo"
,
GIT_STATUS_WT_MODIFIED
);
cl_git_pass
(
git_stash_save
(
&
stash_tip_oid
,
repo
,
signature
,
NULL
,
GIT_STASH_DEFAULT
));
assert_status
(
repo
,
"testrepo"
,
GIT_STATUS_WT_MODIFIED
);
assert_status
(
repo
,
"modified"
,
GIT_STATUS_CURRENT
);
}
void
test_stash_submodules__stash_is_empty_with_modified_submodules
(
void
)
{
cl_git_pass
(
git_stash_save
(
&
stash_tip_oid
,
repo
,
signature
,
NULL
,
GIT_STASH_DEFAULT
));
assert_status
(
repo
,
"modified"
,
GIT_STATUS_CURRENT
);
/* modify file in submodule */
cl_git_rewritefile
(
"submodules/testrepo/README"
,
"heyheyhey"
);
assert_status
(
repo
,
"testrepo"
,
GIT_STATUS_WT_MODIFIED
);
/* add file to index in submodule */
cl_git_pass
(
git_index_add_bypath
(
smindex
,
"README"
));
/* commit changed index of submodule */
cl_repo_commit_from_index
(
NULL
,
smrepo
,
NULL
,
1372350000
,
"Modify it"
);
assert_status
(
repo
,
"testrepo"
,
GIT_STATUS_WT_MODIFIED
);
cl_git_fail_with
(
git_stash_save
(
&
stash_tip_oid
,
repo
,
signature
,
NULL
,
GIT_STASH_DEFAULT
),
GIT_ENOTFOUND
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment