diff --git a/__tests__/__fixtures__/test-GitIndex-timestamp.git/HEAD b/__tests__/__fixtures__/test-GitIndex-timestamp.git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/__tests__/__fixtures__/test-GitIndex-timestamp.git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/__tests__/__fixtures__/test-GitIndex-timestamp.git/index b/__tests__/__fixtures__/test-GitIndex-timestamp.git/index new file mode 100644 index 000000000..87d898f67 Binary files /dev/null and b/__tests__/__fixtures__/test-GitIndex-timestamp.git/index differ diff --git a/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/00/a1ba6b231e31f71e9bfd2289c9c43a561941a6 b/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/00/a1ba6b231e31f71e9bfd2289c9c43a561941a6 new file mode 100644 index 000000000..d4cbb2143 Binary files /dev/null and b/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/00/a1ba6b231e31f71e9bfd2289c9c43a561941a6 differ diff --git a/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/3f/c971f7905cacaba1c1dc2b9359c51b6e53f2f6 b/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/3f/c971f7905cacaba1c1dc2b9359c51b6e53f2f6 new file mode 100644 index 000000000..b093327e1 Binary files /dev/null and b/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/3f/c971f7905cacaba1c1dc2b9359c51b6e53f2f6 differ diff --git a/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/86/6e7d65b24e0cdb9d0630c0fb4c43f69f8dc420 b/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/86/6e7d65b24e0cdb9d0630c0fb4c43f69f8dc420 new file mode 100644 index 000000000..dc1a04c1b Binary files /dev/null and b/__tests__/__fixtures__/test-GitIndex-timestamp.git/objects/86/6e7d65b24e0cdb9d0630c0fb4c43f69f8dc420 differ diff --git a/__tests__/__fixtures__/test-GitIndex-timestamp.git/refs/heads/main b/__tests__/__fixtures__/test-GitIndex-timestamp.git/refs/heads/main new file mode 100644 index 000000000..2d4f23c3f --- /dev/null +++ b/__tests__/__fixtures__/test-GitIndex-timestamp.git/refs/heads/main @@ -0,0 +1 @@ +866e7d65b24e0cdb9d0630c0fb4c43f69f8dc420 diff --git a/__tests__/__fixtures__/test-GitIndex-timestamp/nano.txt b/__tests__/__fixtures__/test-GitIndex-timestamp/nano.txt new file mode 100644 index 000000000..00a1ba6b2 --- /dev/null +++ b/__tests__/__fixtures__/test-GitIndex-timestamp/nano.txt @@ -0,0 +1 @@ +validate nanoseconds \ No newline at end of file diff --git a/__tests__/test-GitIndex.js b/__tests__/test-GitIndex.js index 3520d2cf1..e4aa0491f 100644 --- a/__tests__/test-GitIndex.js +++ b/__tests__/test-GitIndex.js @@ -4,6 +4,8 @@ const path = require('path') const { GitIndex, GitIndexManager } = require('isomorphic-git/internal-apis') +const { normalizeStats } = require('../src/utils/normalizeStats.js') + const { makeFixture } = require('./__helpers__/FixtureFS.js') describe('GitIndex', () => { @@ -128,4 +130,27 @@ describe('GitIndex', () => { expect(ctimeSeconds).not.toBeNull() expect(ctimeNanoseconds).not.toBeNull() }) + + it('ensure nanoseconds of files are equal with index', async () => { + const { fs, gitdir } = await makeFixture('test-GitIndex-timestamp') + const buffer = await fs.read(path.join(gitdir, 'index')) + const index = await GitIndex.from(buffer) + + const stats = normalizeStats( + await fs.lstat('__tests__/__fixtures__/test-GitIndex-timestamp/nano.txt') + ) + + expect(index.entriesMap.get('nano.txt').ctimeSeconds).toEqual( + stats.ctimeSeconds + ) + expect(index.entriesMap.get('nano.txt').ctimeNanoseconds).toEqual( + stats.ctimeNanoseconds + ) + expect(index.entriesMap.get('nano.txt').mtimeSeconds).toEqual( + stats.mtimeSeconds + ) + expect(index.entriesMap.get('nano.txt').mtimeNanoseconds).toEqual( + stats.mtimeNanoseconds + ) + }) })