Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]>
---
read-cache.c | 8 ++++
t/t3011-ls-files-json.sh | 13 ++++++
t/t3011/eoie (new) | 96 ++++++++++++++++++++++++++++++++++++++++
t/test-lib.sh | 4 ++
4 files changed, 121 insertions(+)
diff --git a/read-cache.c b/read-cache.c
index e5183636fc..37491dd03d 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1731,6 +1731,14 @@ static int read_index_extension(struct index_state
*istate,
read_fsmonitor_extension(istate, data, sz);
break;
case CACHE_EXT_ENDOFINDEXENTRIES:
+ if (istate->jw) {
+ /* must be synchronized with read_eoie_extension() */
+ jw_object_intmax(istate->jw, "offset", get_be32(data));
+ jw_object_string(istate->jw, "oid",
+ hash_to_hex((const unsigned char*)data
+ sizeof(uint32_t)));
+ }
+ /* already handled in do_read_index() */
+ break;
case CACHE_EXT_INDEXENTRYOFFSETTABLE:
/* already handled in do_read_index() */
break;
diff --git a/t/t3011-ls-files-json.sh b/t/t3011-ls-files-json.sh
index dc57138f5b..9f4ad4c9cf 100755
--- a/t/t3011-ls-files-json.sh
+++ b/t/t3011-ls-files-json.sh
@@ -90,4 +90,17 @@ test_expect_success 'ls-files --json, rerere extension' '
)
'
+test_expect_success !SINGLE_CPU 'ls-files --json and multicore extensions' '
+ git init eoie &&
+ (
+ cd eoie &&
+ git config index.threads 2 &&
+ touch one two three four &&
+ git add . &&
+ cp ../filter.sed . &&
+ strip_number offset &&
+ compare_json eoie
+ )
+'
+
test_done
diff --git a/t/t3011/eoie b/t/t3011/eoie
new file mode 100644
index 0000000000..85ec61517b
--- /dev/null
+++ b/t/t3011/eoie
@@ -0,0 +1,96 @@
+{
+ "version": 2,
+ "oid": <string>,
+ "mtime_sec": <number>,
+ "mtime_nsec": <number>,
+ "entries": [
+ {
+ "id": 0,
+ "name": "four",
+ "mode": "100644",
+ "flags": 0,
+ "oid": <string>,
+ "stat": {
+ "ctime_sec": <number>,
+ "ctime_nsec": <number>,
+ "mtime_sec": <number>,
+ "mtime_nsec": <number>,
+ "device": <number>,
+ "inode": <number>,
+ "uid": <number>,
+ "gid": <number>,
+ "size": 0
+ },
+ "file_offset": <number>
+ },
+ {
+ "id": 1,
+ "name": "one",
+ "mode": "100644",
+ "flags": 0,
+ "oid": <string>,
+ "stat": {
+ "ctime_sec": <number>,
+ "ctime_nsec": <number>,
+ "mtime_sec": <number>,
+ "mtime_nsec": <number>,
+ "device": <number>,
+ "inode": <number>,
+ "uid": <number>,
+ "gid": <number>,
+ "size": 0
+ },
+ "file_offset": <number>
+ },
+ {
+ "id": 2,
+ "name": "three",
+ "mode": "100644",
+ "flags": 0,
+ "oid": <string>,
+ "stat": {
+ "ctime_sec": <number>,
+ "ctime_nsec": <number>,
+ "mtime_sec": <number>,
+ "mtime_nsec": <number>,
+ "device": <number>,
+ "inode": <number>,
+ "uid": <number>,
+ "gid": <number>,
+ "size": 0
+ },
+ "file_offset": <number>
+ },
+ {
+ "id": 3,
+ "name": "two",
+ "mode": "100644",
+ "flags": 0,
+ "oid": <string>,
+ "stat": {
+ "ctime_sec": <number>,
+ "ctime_nsec": <number>,
+ "mtime_sec": <number>,
+ "mtime_nsec": <number>,
+ "device": <number>,
+ "inode": <number>,
+ "uid": <number>,
+ "gid": <number>,
+ "size": 0
+ },
+ "file_offset": <number>
+ }
+ ],
+ "extensions": {
+ "IEOT": {
+ "file_offset": <number>,
+ "ext_size": <number>
+ },
+ "EOIE": {
+ "file_offset": <number>,
+ "ext_size": <number>,
+ "offset": <number>,
+ "oid": <string>
+ }
+ }
+}
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 4b346467df..9d5b273b40 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1611,3 +1611,7 @@ test_lazy_prereq REBASE_P '
test_lazy_prereq FAIL_PREREQS '
test -n "$GIT_TEST_FAIL_PREREQS"
'
+
+test_lazy_prereq SINGLE_CPU '
+ test "$(test-tool online-cpus)" -eq 1
+'
--
2.22.0.rc0.322.g2b0371e29a