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
a140c138
Commit
a140c138
authored
Apr 08, 2018
by
Nika Layzell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mailmap: Updates tests for new API and features
parent
8ff0504d
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
154 additions
and
33 deletions
+154
-33
tests/mailmap/basic.c
+13
-15
tests/mailmap/blame.c
+1
-1
tests/mailmap/mailmap_helpers.h
+1
-9
tests/mailmap/parsing.c
+133
-7
tests/resources/mailmap/.gitted/index
+0
-0
tests/resources/mailmap/.gitted/objects/69/b9768d022706dab26e2af4dd5a13f42039e36f
+0
-0
tests/resources/mailmap/.gitted/objects/6a/0fc44893d4867166f9d321f78c269b3e42b08b
+0
-0
tests/resources/mailmap/.gitted/objects/f6/3578091d884c3066a003c50eb6c85ae7542269
+3
-0
tests/resources/mailmap/.gitted/refs/heads/master
+1
-1
tests/resources/mailmap/file_override
+2
-0
No files found.
tests/mailmap/basic.c
View file @
a140c138
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
#include "clar_libgit2.h"
#include "clar_libgit2.h"
#include "common.h"
#include "common.h"
#include "
git2/
mailmap.h"
#include "mailmap.h"
static
git_mailmap
*
mailmap
=
NULL
;
static
git_mailmap
*
mailmap
=
NULL
;
...
@@ -41,27 +41,25 @@ void test_mailmap_basic__cleanup(void)
...
@@ -41,27 +41,25 @@ void test_mailmap_basic__cleanup(void)
void
test_mailmap_basic__entry
(
void
)
void
test_mailmap_basic__entry
(
void
)
{
{
size_t
idx
;
const
git_mailmap_entry
*
entry
;
const
git_mailmap_entry
*
entry
;
cl_assert_equal_sz
(
ARRAY_SIZE
(
expected
),
git_mailmap_entry_count
(
mailmap
));
/* Check that we have the expected # of entries */
cl_assert_equal_sz
(
ARRAY_SIZE
(
expected
),
git_vector_length
(
&
mailmap
->
entries
));
for
(
idx
=
0
;
idx
<
ARRAY_SIZE
(
expected
);
++
idx
)
{
/* Try to look up each entry and make sure they match */
entry
=
git_mailmap_entry_lookup
(
mailmap
,
expected
[
idx
].
replace_name
,
expected
[
idx
].
replace_email
);
for
(
size_t
i
=
0
;
i
<
ARRAY_SIZE
(
expected
);
++
i
)
{
entry
=
git_mailmap_entry_byindex
(
mailmap
,
i
);
cl_assert
(
entry
);
cl_assert
(
entry
);
cl_assert_equal_s
(
entry
->
real_name
,
expected
[
i
].
real_name
);
cl_assert_equal_s
(
entry
->
real_name
,
expected
[
i
dx
].
real_name
);
cl_assert_equal_s
(
entry
->
real_email
,
expected
[
i
].
real_email
);
cl_assert_equal_s
(
entry
->
real_email
,
expected
[
i
dx
].
real_email
);
cl_assert_equal_s
(
entry
->
replace_name
,
expected
[
i
].
replace_name
);
cl_assert_equal_s
(
entry
->
replace_name
,
expected
[
i
dx
].
replace_name
);
cl_assert_equal_s
(
entry
->
replace_email
,
expected
[
i
].
replace_email
);
cl_assert_equal_s
(
entry
->
replace_email
,
expected
[
i
dx
].
replace_email
);
}
}
}
}
void
test_mailmap_basic__entry_large_index
(
void
)
{
const
git_mailmap_entry
*
entry
=
git_mailmap_entry_byindex
(
mailmap
,
10000
);
cl_assert
(
!
entry
);
}
void
test_mailmap_basic__lookup_not_found
(
void
)
void
test_mailmap_basic__lookup_not_found
(
void
)
{
{
const
git_mailmap_entry
*
entry
=
git_mailmap_entry_lookup
(
const
git_mailmap_entry
*
entry
=
git_mailmap_entry_lookup
(
...
...
tests/mailmap/blame.c
View file @
a140c138
#include "clar_libgit2.h"
#include "clar_libgit2.h"
#include "git2/repository.h"
#include "git2/repository.h"
#include "git2/blame.h"
#include "git2/blame.h"
#include "
git2/
mailmap.h"
#include "mailmap.h"
#include "mailmap_helpers.h"
#include "mailmap_helpers.h"
static
git_repository
*
g_repo
;
static
git_repository
*
g_repo
;
...
...
tests/mailmap/mailmap_helpers.h
View file @
a140c138
#include "
git2/
mailmap.h"
#include "mailmap.h"
typedef
struct
mailmap_entry
{
typedef
struct
mailmap_entry
{
const
char
*
real_name
;
const
char
*
real_name
;
...
@@ -42,11 +42,3 @@ static const mailmap_entry resolved[] = {
...
@@ -42,11 +42,3 @@ static const mailmap_entry resolved[] = {
{
"Santa Claus"
,
"santa.claus@northpole.xx"
,
"Clause"
,
"me@company.xx"
},
{
"Santa Claus"
,
"santa.claus@northpole.xx"
,
"Clause"
,
"me@company.xx"
},
{
"Charles"
,
"charles@charles.xx"
,
"Charles"
,
"charles@charles.xx"
}
{
"Charles"
,
"charles@charles.xx"
,
"Charles"
,
"charles@charles.xx"
}
};
};
static
const
mailmap_entry
resolved_bare
[]
=
{
{
"xx"
,
"untracked@company.xx"
,
"xx"
,
"untracked@company.xx"
}
};
static
const
mailmap_entry
resolved_untracked
[]
=
{
{
"Untracked"
,
"untracked@company.xx"
,
"xx"
,
"untracked@company.xx"
}
};
tests/mailmap/parsing.c
View file @
a140c138
...
@@ -2,32 +2,41 @@
...
@@ -2,32 +2,41 @@
#include "repository.h"
#include "repository.h"
#include "git2/sys/repository.h"
#include "git2/sys/repository.h"
#include "mailmap_helpers.h"
#include "mailmap_helpers.h"
#include "buf_text.h"
static
git_repository
*
g_repo
;
static
git_repository
*
g_repo
;
static
git_mailmap
*
g_mailmap
;
static
git_mailmap
*
g_mailmap
;
static
git_config
*
g_config
;
void
test_mailmap_parsing__initialize
(
void
)
void
test_mailmap_parsing__initialize
(
void
)
{
{
g_repo
=
NULL
;
g_repo
=
NULL
;
g_mailmap
=
NULL
;
g_mailmap
=
NULL
;
g_config
=
NULL
;
}
}
void
test_mailmap_parsing__cleanup
(
void
)
void
test_mailmap_parsing__cleanup
(
void
)
{
{
git_mailmap_free
(
g_mailmap
);
git_mailmap_free
(
g_mailmap
);
git_config_free
(
g_config
);
cl_git_sandbox_cleanup
();
cl_git_sandbox_cleanup
();
}
}
static
void
check_mailmap_entries
(
static
void
check_mailmap_entries
(
const
git_mailmap
*
mailmap
,
const
mailmap_entry
*
entries
,
size_t
entries_size
)
const
git_mailmap
*
mailmap
,
const
mailmap_entry
*
entries
,
size_t
entries_size
)
{
{
const
git_mailmap_entry
*
parsed
=
NULL
;
const
git_mailmap_entry
*
parsed
;
size_t
idx
;
size_t
idx
;
/* Check that the parsed entries match */
/* Check the correct # of entries were parsed */
cl_assert_equal_sz
(
entries_size
,
git_mailmap_entry_count
(
mailmap
));
cl_assert_equal_sz
(
entries_size
,
git_vector_length
(
&
mailmap
->
entries
));
/* Make sure looking up each entry succeeds */
for
(
idx
=
0
;
idx
<
entries_size
;
++
idx
)
{
for
(
idx
=
0
;
idx
<
entries_size
;
++
idx
)
{
parsed
=
git_mailmap_entry_byindex
(
mailmap
,
idx
);
parsed
=
git_mailmap_entry_lookup
(
mailmap
,
entries
[
idx
].
replace_name
,
entries
[
idx
].
replace_email
);
cl_assert
(
parsed
);
cl_assert_equal_s
(
parsed
->
real_name
,
entries
[
idx
].
real_name
);
cl_assert_equal_s
(
parsed
->
real_name
,
entries
[
idx
].
real_name
);
cl_assert_equal_s
(
parsed
->
real_email
,
entries
[
idx
].
real_email
);
cl_assert_equal_s
(
parsed
->
real_email
,
entries
[
idx
].
real_email
);
cl_assert_equal_s
(
parsed
->
replace_name
,
entries
[
idx
].
replace_name
);
cl_assert_equal_s
(
parsed
->
replace_name
,
entries
[
idx
].
replace_name
);
...
@@ -52,6 +61,10 @@ static void check_mailmap_resolve(
...
@@ -52,6 +61,10 @@ static void check_mailmap_resolve(
}
}
}
}
static
const
mailmap_entry
resolved_untracked
[]
=
{
{
"Untracked"
,
"untracked@company.xx"
,
"xx"
,
"untracked@company.xx"
}
};
void
test_mailmap_parsing__string
(
void
)
void
test_mailmap_parsing__string
(
void
)
{
{
git_buf
buf
=
GIT_BUF_INIT
;
git_buf
buf
=
GIT_BUF_INIT
;
...
@@ -77,7 +90,7 @@ void test_mailmap_parsing__windows_string(void)
...
@@ -77,7 +90,7 @@ void test_mailmap_parsing__windows_string(void)
git_buf_text_lf_to_crlf
(
&
winbuf
,
&
unixbuf
);
git_buf_text_lf_to_crlf
(
&
winbuf
,
&
unixbuf
);
cl_git_pass
(
git_mailmap_from_buffer
(
&
g_mailmap
,
&
winbuf
));
cl_git_pass
(
git_mailmap_from_buffer
(
&
g_mailmap
,
&
winbuf
));
git_buf_free
(
winbuf
);
git_buf_free
(
&
winbuf
);
/* We should have parsed all of the entries */
/* We should have parsed all of the entries */
check_mailmap_entries
(
g_mailmap
,
entries
,
ARRAY_SIZE
(
entries
));
check_mailmap_entries
(
g_mailmap
,
entries
,
ARRAY_SIZE
(
entries
));
...
@@ -93,7 +106,7 @@ void test_mailmap_parsing__fromrepo(void)
...
@@ -93,7 +106,7 @@ void test_mailmap_parsing__fromrepo(void)
g_repo
=
cl_git_sandbox_init
(
"mailmap"
);
g_repo
=
cl_git_sandbox_init
(
"mailmap"
);
cl_check
(
!
git_repository_is_bare
(
g_repo
));
cl_check
(
!
git_repository_is_bare
(
g_repo
));
cl_git_pass
(
git_mailmap_from_repo
(
&
g_mailmap
,
g_repo
));
cl_git_pass
(
git_mailmap_from_repo
sitory
(
&
g_mailmap
,
g_repo
));
/* We should have parsed all of the entries */
/* We should have parsed all of the entries */
check_mailmap_entries
(
g_mailmap
,
entries
,
ARRAY_SIZE
(
entries
));
check_mailmap_entries
(
g_mailmap
,
entries
,
ARRAY_SIZE
(
entries
));
...
@@ -104,13 +117,17 @@ void test_mailmap_parsing__fromrepo(void)
...
@@ -104,13 +117,17 @@ void test_mailmap_parsing__fromrepo(void)
g_mailmap
,
resolved_untracked
,
ARRAY_SIZE
(
resolved_untracked
));
g_mailmap
,
resolved_untracked
,
ARRAY_SIZE
(
resolved_untracked
));
}
}
static
const
mailmap_entry
resolved_bare
[]
=
{
{
"xx"
,
"untracked@company.xx"
,
"xx"
,
"untracked@company.xx"
}
};
void
test_mailmap_parsing__frombare
(
void
)
void
test_mailmap_parsing__frombare
(
void
)
{
{
g_repo
=
cl_git_sandbox_init
(
"mailmap/.gitted"
);
g_repo
=
cl_git_sandbox_init
(
"mailmap/.gitted"
);
cl_git_pass
(
git_repository_set_bare
(
g_repo
));
cl_git_pass
(
git_repository_set_bare
(
g_repo
));
cl_check
(
git_repository_is_bare
(
g_repo
));
cl_check
(
git_repository_is_bare
(
g_repo
));
cl_git_pass
(
git_mailmap_from_repo
(
&
g_mailmap
,
g_repo
));
cl_git_pass
(
git_mailmap_from_repo
sitory
(
&
g_mailmap
,
g_repo
));
/* We should have parsed all of the entries, except for the untracked one */
/* We should have parsed all of the entries, except for the untracked one */
check_mailmap_entries
(
g_mailmap
,
entries
,
ARRAY_SIZE
(
entries
)
-
1
);
check_mailmap_entries
(
g_mailmap
,
entries
,
ARRAY_SIZE
(
entries
)
-
1
);
...
@@ -120,3 +137,112 @@ void test_mailmap_parsing__frombare(void)
...
@@ -120,3 +137,112 @@ void test_mailmap_parsing__frombare(void)
check_mailmap_resolve
(
check_mailmap_resolve
(
g_mailmap
,
resolved_bare
,
ARRAY_SIZE
(
resolved_bare
));
g_mailmap
,
resolved_bare
,
ARRAY_SIZE
(
resolved_bare
));
}
}
static
const
mailmap_entry
resolved_with_file_override
[]
=
{
{
"Brad"
,
"cto@company.xx"
,
"Brad"
,
"cto@coompany.xx"
},
{
"Brad L"
,
"cto@company.xx"
,
"Brad L"
,
"cto@coompany.xx"
},
{
"Some Dude"
,
"some@dude.xx"
,
"nick1"
,
"bugs@company.xx"
},
{
"Other Author"
,
"other@author.xx"
,
"nick2"
,
"bugs@company.xx"
},
{
"nick3"
,
"bugs@company.xx"
,
"nick3"
,
"bugs@company.xx"
},
{
"Other Author"
,
"other@author.xx"
,
"Some Garbage"
,
"nick2@company.xx"
},
{
"Joseph"
,
"joseph@company.xx"
,
"Joseph"
,
"bugs@company.xx"
},
{
"Santa Claus"
,
"santa.claus@northpole.xx"
,
"Clause"
,
"me@company.xx"
},
{
"Charles"
,
"charles@charles.xx"
,
"Charles"
,
"charles@charles.xx"
},
/* This name is overridden by file_override */
{
"File Override"
,
"phil@company.xx"
,
"unknown"
,
"phil@company.xx"
},
{
"Other Name"
,
"fileoverridename@company.xx"
,
"override"
,
"fileoverridename@company.xx"
}
};
void
test_mailmap_parsing__file_config
(
void
)
{
g_repo
=
cl_git_sandbox_init
(
"mailmap"
);
cl_git_pass
(
git_repository_config
(
&
g_config
,
g_repo
));
cl_git_pass
(
git_config_set_string
(
g_config
,
"mailmap.file"
,
cl_fixture
(
"mailmap/file_override"
)));
cl_git_pass
(
git_mailmap_from_repository
(
&
g_mailmap
,
g_repo
));
/* Check we don't have duplicate entries */
cl_assert_equal_sz
(
git_vector_length
(
&
g_mailmap
->
entries
),
9
);
/* Check that resolving the entries works */
check_mailmap_resolve
(
g_mailmap
,
resolved_with_file_override
,
ARRAY_SIZE
(
resolved_with_file_override
));
}
static
const
mailmap_entry
resolved_with_blob_override
[]
=
{
{
"Brad"
,
"cto@company.xx"
,
"Brad"
,
"cto@coompany.xx"
},
{
"Brad L"
,
"cto@company.xx"
,
"Brad L"
,
"cto@coompany.xx"
},
{
"Some Dude"
,
"some@dude.xx"
,
"nick1"
,
"bugs@company.xx"
},
{
"Other Author"
,
"other@author.xx"
,
"nick2"
,
"bugs@company.xx"
},
{
"nick3"
,
"bugs@company.xx"
,
"nick3"
,
"bugs@company.xx"
},
{
"Other Author"
,
"other@author.xx"
,
"Some Garbage"
,
"nick2@company.xx"
},
{
"Joseph"
,
"joseph@company.xx"
,
"Joseph"
,
"bugs@company.xx"
},
{
"Santa Claus"
,
"santa.claus@northpole.xx"
,
"Clause"
,
"me@company.xx"
},
{
"Charles"
,
"charles@charles.xx"
,
"Charles"
,
"charles@charles.xx"
},
/* This name is overridden by blob_override */
{
"Blob Override"
,
"phil@company.xx"
,
"unknown"
,
"phil@company.xx"
},
{
"Other Name"
,
"bloboverridename@company.xx"
,
"override"
,
"bloboverridename@company.xx"
}
};
void
test_mailmap_parsing__blob_config
(
void
)
{
g_repo
=
cl_git_sandbox_init
(
"mailmap"
);
cl_git_pass
(
git_repository_config
(
&
g_config
,
g_repo
));
cl_git_pass
(
git_config_set_string
(
g_config
,
"mailmap.blob"
,
"HEAD:blob_override"
));
cl_git_pass
(
git_mailmap_from_repository
(
&
g_mailmap
,
g_repo
));
/* Check we don't have duplicate entries */
cl_assert_equal_sz
(
git_vector_length
(
&
g_mailmap
->
entries
),
9
);
/* Check that resolving the entries works */
check_mailmap_resolve
(
g_mailmap
,
resolved_with_blob_override
,
ARRAY_SIZE
(
resolved_with_blob_override
));
}
static
const
mailmap_entry
bare_resolved_with_blob_override
[]
=
{
/* As mailmap.blob is set, we won't load HEAD:.mailmap */
{
"Brad"
,
"cto@coompany.xx"
,
"Brad"
,
"cto@coompany.xx"
},
{
"Brad L"
,
"cto@coompany.xx"
,
"Brad L"
,
"cto@coompany.xx"
},
{
"nick1"
,
"bugs@company.xx"
,
"nick1"
,
"bugs@company.xx"
},
{
"nick2"
,
"bugs@company.xx"
,
"nick2"
,
"bugs@company.xx"
},
{
"nick3"
,
"bugs@company.xx"
,
"nick3"
,
"bugs@company.xx"
},
{
"Some Garbage"
,
"nick2@company.xx"
,
"Some Garbage"
,
"nick2@company.xx"
},
{
"Joseph"
,
"bugs@company.xx"
,
"Joseph"
,
"bugs@company.xx"
},
{
"Clause"
,
"me@company.xx"
,
"Clause"
,
"me@company.xx"
},
{
"Charles"
,
"charles@charles.xx"
,
"Charles"
,
"charles@charles.xx"
},
/* This name is overridden by blob_override */
{
"Blob Override"
,
"phil@company.xx"
,
"unknown"
,
"phil@company.xx"
},
{
"Other Name"
,
"bloboverridename@company.xx"
,
"override"
,
"bloboverridename@company.xx"
}
};
void
test_mailmap_parsing__bare_blob_config
(
void
)
{
g_repo
=
cl_git_sandbox_init
(
"mailmap/.gitted"
);
cl_git_pass
(
git_repository_set_bare
(
g_repo
));
cl_check
(
git_repository_is_bare
(
g_repo
));
cl_git_pass
(
git_repository_config
(
&
g_config
,
g_repo
));
cl_git_pass
(
git_config_set_string
(
g_config
,
"mailmap.blob"
,
"HEAD:blob_override"
));
cl_git_pass
(
git_mailmap_from_repository
(
&
g_mailmap
,
g_repo
));
/* Check that we only have the 2 entries */
cl_assert_equal_sz
(
git_vector_length
(
&
g_mailmap
->
entries
),
2
);
/* Check that resolving the entries works */
check_mailmap_resolve
(
g_mailmap
,
bare_resolved_with_blob_override
,
ARRAY_SIZE
(
bare_resolved_with_blob_override
));
}
tests/resources/mailmap/.gitted/index
View file @
a140c138
No preview for this file type
tests/resources/mailmap/.gitted/objects/69/b9768d022706dab26e2af4dd5a13f42039e36f
0 → 100644
View file @
a140c138
File added
tests/resources/mailmap/.gitted/objects/6a/0fc44893d4867166f9d321f78c269b3e42b08b
0 → 100644
View file @
a140c138
File added
tests/resources/mailmap/.gitted/objects/f6/3578091d884c3066a003c50eb6c85ae7542269
0 → 100644
View file @
a140c138
File added
tests/resources/mailmap/.gitted/refs/heads/master
View file @
a140c138
7100e631fb4d5deba31fdc8acc98f4fb5c1573fd
f63578091d884c3066a003c50eb6c85ae7542269
tests/resources/mailmap/file_override
0 → 100644
View file @
a140c138
File Override <phil@company.xx>
Other Name <fileoverridename@company.xx>
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