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
d4760a42
Commit
d4760a42
authored
Jul 12, 2011
by
nulltoken
Committed by
Vicent Marti
Jul 12, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
status: refactor the tests to remove some code duplication
parent
467545d0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
33 additions
and
63 deletions
+33
-63
tests/t12-repo.c
+5
-9
tests/t18-status.c
+27
-54
tests/test_helpers.h
+1
-0
No files found.
tests/t12-repo.c
View file @
d4760a42
...
...
@@ -196,8 +196,7 @@ BEGIN_TEST(init2, "Initialize and open a bare repo with a relative path escaping
must_pass
(
git_futils_rmdir_r
(
TEMP_REPO_FOLDER
,
1
));
END_TEST
#define EMPTY_BARE_REPOSITORY_NAME "empty_bare.git"
#define EMPTY_BARE_REPOSITORY_FOLDER TEST_RESOURCES "/" EMPTY_BARE_REPOSITORY_NAME "/"
#define EMPTY_BARE_REPOSITORY_FOLDER TEST_RESOURCES "/empty_bare.git/"
BEGIN_TEST
(
open0
,
"Open a bare repository that has just been initialized by git"
)
git_repository
*
repo
;
...
...
@@ -213,18 +212,15 @@ BEGIN_TEST(open0, "Open a bare repository that has just been initialized by git"
must_pass
(
git_futils_rmdir_r
(
TEMP_REPO_FOLDER
,
1
));
END_TEST
#define SOURCE_EMPTY_REPOSITORY_NAME "empty_standard_repo/.gitted"
#define EMPTY_REPOSITORY_NAME "empty_standard_repo/.git"
#define EMPTY_REPOSITORY_FOLDER TEST_RESOURCES "/" SOURCE_EMPTY_REPOSITORY_NAME "/"
#define DEST_REPOSITORY_FOLDER TEMP_REPO_FOLDER DOT_GIT "/"
#define EMPTY_REPOSITORY_FOLDER TEST_RESOURCES "/empty_standard_repo/.gitted/"
BEGIN_TEST
(
open1
,
"Open a standard repository that has just been initialized by git"
)
git_repository
*
repo
;
must_pass
(
copydir_recurs
(
EMPTY_REPOSITORY_FOLDER
,
DEST_REPOSITORY
_FOLDER
));
must_pass
(
remove_placeholders
(
DEST_REPOSITORY
_FOLDER
,
"dummy-marker.txt"
));
must_pass
(
copydir_recurs
(
EMPTY_REPOSITORY_FOLDER
,
TEST_STD_REPO
_FOLDER
));
must_pass
(
remove_placeholders
(
TEST_STD_REPO
_FOLDER
,
"dummy-marker.txt"
));
must_pass
(
git_repository_open
(
&
repo
,
DEST_REPOSITORY
_FOLDER
));
must_pass
(
git_repository_open
(
&
repo
,
TEST_STD_REPO
_FOLDER
));
must_be_true
(
git_repository_path
(
repo
,
GIT_REPO_PATH
)
!=
NULL
);
must_be_true
(
git_repository_path
(
repo
,
GIT_REPO_PATH_WORKDIR
)
!=
NULL
);
...
...
tests/t18-status.c
View file @
d4760a42
...
...
@@ -22,57 +22,33 @@
* the Free Software Foundation, 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "test_lib.h"
#include "test_helpers.h"
#include "fileops.h"
#include "git2/status.h"
#define STATUS_FOLDER TEST_RESOURCES "/status"
#define TEMP_STATUS_FOLDER TEMP_FOLDER "status"
static
const
char
*
test_blob_oid
=
"d4fa8600b4f37d7516bef4816ae2c64dbf029e3a"
;
static
int
copy_status_repo
(
char
*
path_statusfiles
,
char
*
temp_path
)
{
char
current_workdir
[
GIT_PATH_MAX
];
char
gitted
[
GIT_PATH_MAX
];
int
error
;
error
=
p_getcwd
(
current_workdir
,
sizeof
(
current_workdir
));
if
(
error
<
0
)
return
error
;
strcpy
(
path_statusfiles
,
current_workdir
);
git_path_join
(
path_statusfiles
,
path_statusfiles
,
TEMP_STATUS_FOLDER
);
error
=
copydir_recurs
(
STATUS_FOLDER
,
path_statusfiles
);
if
(
error
<
0
)
return
error
;
git_path_join
(
gitted
,
path_statusfiles
,
".gitted"
);
git_path_join
(
temp_path
,
path_statusfiles
,
".git"
);
copydir_recurs
(
gitted
,
temp_path
);
git_futils_rmdir_r
(
gitted
,
1
);
return
GIT_SUCCESS
;
}
#define STATUS_WORKDIR_FOLDER TEST_RESOURCES "/status/"
#define STATUS_REPOSITORY_TEMP_FOLDER TEMP_REPO_FOLDER ".gitted/"
BEGIN_TEST
(
file0
,
"test retrieving OID from a file apart from the ODB"
)
char
path_statusfiles
[
GIT_PATH_MAX
];
char
temp_path
[
GIT_PATH_MAX
];
git_oid
expected_id
,
actual_id
;
char
filename
[]
=
"new_file"
;
int
fd
;
must_pass
(
copy_status_repo
(
path_statusfiles
,
temp_path
));
git_path_join
(
temp_path
,
path_statusfiles
,
"new_file"
);
fd
=
p_creat
(
filename
,
0644
);
must_pass
(
fd
);
must_pass
(
p_write
(
fd
,
"new_file
\n
"
,
9
));
must_pass
(
p_close
(
fd
));
must_pass
(
git_futils_exists
(
temp_path
));
git_oid_fromstr
(
&
expected_id
,
test_blob_oid
);
must_pass
(
git_odb_hashfile
(
&
actual_id
,
temp_path
,
GIT_OBJ_BLOB
));
must_pass
(
git_odb_hashfile
(
&
actual_id
,
filename
,
GIT_OBJ_BLOB
));
must_pass
(
git_oid_fromstr
(
&
expected_id
,
test_blob_oid
));
must_be_true
(
git_oid_cmp
(
&
expected_id
,
&
actual_id
)
==
0
);
git_futils_rmdir_r
(
TEMP_STATUS_FOLDER
,
1
);
must_pass
(
p_unlink
(
filename
)
);
END_TEST
static
const
char
*
entry_paths
[]
=
{
...
...
@@ -144,14 +120,12 @@ static int status_cb(const char *path, unsigned int status_flags, void *payload)
}
BEGIN_TEST
(
statuscb0
,
"test retrieving status for worktree of repository"
)
char
path_statusfiles
[
GIT_PATH_MAX
];
char
temp_path
[
GIT_PATH_MAX
];
git_repository
*
repo
;
struct
status_entry_counts
counts
;
must_pass
(
copy
_status_repo
(
path_statusfiles
,
temp_path
));
must_pass
(
git_repository_open
(
&
repo
,
temp_path
));
must_pass
(
copy
dir_recurs
(
STATUS_WORKDIR_FOLDER
,
TEMP_REPO_FOLDER
));
must_pass
(
git_futils_mv_atomic
(
STATUS_REPOSITORY_TEMP_FOLDER
,
TEST_STD_REPO_FOLDER
));
must_pass
(
git_repository_open
(
&
repo
,
TEST_STD_REPO_FOLDER
));
memset
(
&
counts
,
0x0
,
sizeof
(
struct
status_entry_counts
));
git_status_foreach
(
repo
,
status_cb
,
&
counts
);
...
...
@@ -160,19 +134,17 @@ BEGIN_TEST(statuscb0, "test retrieving status for worktree of repository")
git_repository_free
(
repo
);
git_futils_rmdir_r
(
TEMP_
STATUS
_FOLDER
,
1
);
git_futils_rmdir_r
(
TEMP_
REPO
_FOLDER
,
1
);
END_TEST
BEGIN_TEST
(
singlestatus0
,
"test retrieving status for single file"
)
char
path_statusfiles
[
GIT_PATH_MAX
];
char
temp_path
[
GIT_PATH_MAX
];
git_repository
*
repo
;
unsigned
int
status_flags
;
int
i
;
must_pass
(
copy
_status_repo
(
path_statusfiles
,
temp_path
));
must_pass
(
git_repository_open
(
&
repo
,
temp_path
));
must_pass
(
copy
dir_recurs
(
STATUS_WORKDIR_FOLDER
,
TEMP_REPO_FOLDER
));
must_pass
(
git_futils_mv_atomic
(
STATUS_REPOSITORY_TEMP_FOLDER
,
TEST_STD_REPO_FOLDER
));
must_pass
(
git_repository_open
(
&
repo
,
TEST_STD_REPO_FOLDER
));
for
(
i
=
0
;
i
<
ENTRY_COUNT
;
++
i
)
{
must_pass
(
git_status_file
(
&
status_flags
,
repo
,
entry_paths
[
i
]));
...
...
@@ -181,19 +153,17 @@ BEGIN_TEST(singlestatus0, "test retrieving status for single file")
git_repository_free
(
repo
);
git_futils_rmdir_r
(
TEMP_
STATUS
_FOLDER
,
1
);
git_futils_rmdir_r
(
TEMP_
REPO
_FOLDER
,
1
);
END_TEST
BEGIN_TEST
(
singlestatus1
,
"test retrieving status for nonexistent file"
)
char
path_statusfiles
[
GIT_PATH_MAX
];
char
temp_path
[
GIT_PATH_MAX
];
git_repository
*
repo
;
unsigned
int
status_flags
;
int
error
;
must_pass
(
copy
_status_repo
(
path_statusfiles
,
temp_path
));
must_pass
(
git_repository_open
(
&
repo
,
temp_path
));
must_pass
(
copy
dir_recurs
(
STATUS_WORKDIR_FOLDER
,
TEMP_REPO_FOLDER
));
must_pass
(
git_futils_mv_atomic
(
STATUS_REPOSITORY_TEMP_FOLDER
,
TEST_STD_REPO_FOLDER
));
must_pass
(
git_repository_open
(
&
repo
,
TEST_STD_REPO_FOLDER
));
// "nonexistent" does not exist in HEAD, Index or the worktree
error
=
git_status_file
(
&
status_flags
,
repo
,
"nonexistent"
);
...
...
@@ -201,12 +171,14 @@ BEGIN_TEST(singlestatus1, "test retrieving status for nonexistent file")
git_repository_free
(
repo
);
git_futils_rmdir_r
(
TEMP_
STATUS
_FOLDER
,
1
);
git_futils_rmdir_r
(
TEMP_
REPO
_FOLDER
,
1
);
END_TEST
BEGIN_SUITE
(
status
)
ADD_TEST
(
file0
);
ADD_TEST
(
statuscb0
);
ADD_TEST
(
singlestatus0
);
ADD_TEST
(
singlestatus1
);
END_SUITE
\ No newline at end of file
tests/test_helpers.h
View file @
d4760a42
...
...
@@ -41,6 +41,7 @@
#define TEMP_FOLDER ""
#define TEMP_REPO_FOLDER TEMP_FOLDER TEST_REPOSITORY_NAME "/"
#define TEMP_REPO_FOLDER_NS TEMP_FOLDER TEST_REPOSITORY_NAME
#define TEST_STD_REPO_FOLDER TEMP_REPO_FOLDER ".git/"
typedef
struct
object_data
{
unsigned
char
*
bytes
;
/* (compressed) bytes stored in object store */
...
...
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