MCPcopy
hub / github.com/go-git/go-git / TestTreeDecodeClearsPathCache

Function TestTreeDecodeClearsPathCache

plumbing/object/tree_test.go:1822–1871  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1820}
1821
1822func TestTreeDecodeClearsPathCache(t *testing.T) {
1823 t.Parallel()
1824
1825 store := memory.NewStorage()
1826 oldFileHash := bytes.Repeat([]byte{0xAA}, 20)
1827 newFileHash := bytes.Repeat([]byte{0xBB}, 20)
1828
1829 oldSubtree := newRawTreeObject(t, encodeRawTreeEntries(
1830 rawTreeEntry{"100644", "old", oldFileHash},
1831 ))
1832 oldSubtreeHash, err := store.SetEncodedObject(oldSubtree)
1833 require.NoError(t, err)
1834
1835 oldDir := newRawTreeObject(t, encodeRawTreeEntries(
1836 rawTreeEntry{"40000", "sub", oldSubtreeHash[:]},
1837 ))
1838 oldDirHash, err := store.SetEncodedObject(oldDir)
1839 require.NoError(t, err)
1840
1841 oldRoot := newRawTreeObject(t, encodeRawTreeEntries(
1842 rawTreeEntry{"40000", "dir", oldDirHash[:]},
1843 ))
1844
1845 newSubtree := newRawTreeObject(t, encodeRawTreeEntries(
1846 rawTreeEntry{"100644", "new", newFileHash},
1847 ))
1848 newSubtreeHash, err := store.SetEncodedObject(newSubtree)
1849 require.NoError(t, err)
1850
1851 newDir := newRawTreeObject(t, encodeRawTreeEntries(
1852 rawTreeEntry{"40000", "sub", newSubtreeHash[:]},
1853 ))
1854 newDirHash, err := store.SetEncodedObject(newDir)
1855 require.NoError(t, err)
1856
1857 newRoot := newRawTreeObject(t, encodeRawTreeEntries(
1858 rawTreeEntry{"40000", "dir", newDirHash[:]},
1859 ))
1860
1861 tree := &Tree{s: store}
1862 require.NoError(t, tree.Decode(oldRoot))
1863 got, err := tree.FindEntry("dir/sub/old")
1864 require.NoError(t, err)
1865 assert.Equal(t, 0, bytes.Compare(oldFileHash, got.Hash[:]))
1866
1867 require.NoError(t, tree.Decode(newRoot))
1868 got, err = tree.FindEntry("dir/sub/new")
1869 require.NoError(t, err)
1870 assert.Equal(t, 0, bytes.Compare(newFileHash, got.Hash[:]))
1871}
1872
1873func TestTreeFindEntryDuplicates(t *testing.T) {
1874 t.Parallel()

Callers

nothing calls this directly

Calls 7

DecodeMethod · 0.95
FindEntryMethod · 0.95
NewStorageFunction · 0.92
newRawTreeObjectFunction · 0.85
encodeRawTreeEntriesFunction · 0.85
CompareMethod · 0.80
SetEncodedObjectMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…