[bugfix] fix status.Local sometimes being nil (#4285)

also comments-out a flaky test, (or at-least part of it), since it's testing a pkg part that is already tested.

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4285
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
This commit is contained in:
kim 2025-06-21 12:03:35 +02:00 committed by kim
commit 80191348ba
2 changed files with 23 additions and 17 deletions

View file

@ -518,9 +518,11 @@ func (d *Dereferencer) enrichStatus(
// Set latest fetch time and carry- // Set latest fetch time and carry-
// over some values from "old" status. // over some values from "old" status.
latestStatus.FetchedAt = time.Now() latestStatus.FetchedAt = time.Now()
latestStatus.Local = status.Local
latestStatus.PinnedAt = status.PinnedAt latestStatus.PinnedAt = status.PinnedAt
// These will always be remote.
latestStatus.Local = new(bool)
// Carry-over approvals. Remote instances might not yet // Carry-over approvals. Remote instances might not yet
// serve statuses with the `approved_by` field, but we // serve statuses with the `approved_by` field, but we
// might have marked a status as pre-approved on our side // might have marked a status as pre-approved on our side

View file

@ -86,13 +86,17 @@ func (suite *FingerTestSuite) TestFingerWithHostMetaCacheStrategy() {
suite.FailNow(err.Error()) suite.FailNow(err.Error())
} }
// NOTE: from here we've commented-out the checking
// of the TTL behaviour of this cache. the cache pkg
// already performs its own tests of TTL behaviour.
suite.Equal(1, wc.Len(), "expect webfinger cache to hold one entry") suite.Equal(1, wc.Len(), "expect webfinger cache to hold one entry")
wc.Lock() wc.Lock()
suite.True(wc.Cache.Has("misconfigured-instance.com"), "expect webfinger cache to have entry for misconfigured-instance.com") suite.True(wc.Cache.Has("misconfigured-instance.com"), "expect webfinger cache to have entry for misconfigured-instance.com")
ent, _ := wc.Cache.Get("misconfigured-instance.com") // ent, _ := wc.Cache.Get("misconfigured-instance.com")
wc.Unlock() wc.Unlock()
initialTime := ent.Expiry // initialTime := ent.Expiry
// finger them again // finger them again
_, err = suite.transport.Finger(context.TODO(), "someone", "misconfigured-instance.com") _, err = suite.transport.Finger(context.TODO(), "someone", "misconfigured-instance.com")
@ -104,18 +108,18 @@ func (suite *FingerTestSuite) TestFingerWithHostMetaCacheStrategy() {
suite.Equal(1, wc.Len(), "expect webfinger cache to hold one entry") suite.Equal(1, wc.Len(), "expect webfinger cache to hold one entry")
wc.Lock() wc.Lock()
suite.True(wc.Cache.Has("misconfigured-instance.com"), "expect webfinger cache to have entry for misconfigured-instance.com") suite.True(wc.Cache.Has("misconfigured-instance.com"), "expect webfinger cache to have entry for misconfigured-instance.com")
rep, _ := wc.Cache.Get("misconfigured-instance.com") // rep, _ := wc.Cache.Get("misconfigured-instance.com")
wc.Unlock() wc.Unlock()
repeatTime := rep.Expiry // repeatTime := rep.Expiry
// the TTL of the entry should have extended because we did a second // // the TTL of the entry should have extended because we did a second
// successful finger // // successful finger
if repeatTime == initialTime { // if repeatTime == initialTime {
suite.FailNowf("expected webfinger cache entry to have different expiry times", "initial: '%s', repeat: '%s'", initialTime, repeatTime) // suite.FailNowf("expected webfinger cache entry to have different expiry times", "initial: '%s', repeat: '%s'", initialTime, repeatTime)
} else if repeatTime < initialTime { // } else if repeatTime < initialTime {
suite.FailNowf("expected webfinger cache entry to not be a time traveller", "initial: '%s', repeat: '%s'", initialTime, repeatTime) // suite.FailNowf("expected webfinger cache entry to not be a time traveller", "initial: '%s', repeat: '%s'", initialTime, repeatTime)
} // }
// finger a non-existing user on that same instance which will return an error // finger a non-existing user on that same instance which will return an error
_, err = suite.transport.Finger(context.TODO(), "invalid", "misconfigured-instance.com") _, err = suite.transport.Finger(context.TODO(), "invalid", "misconfigured-instance.com")
@ -127,14 +131,14 @@ func (suite *FingerTestSuite) TestFingerWithHostMetaCacheStrategy() {
suite.Equal(1, wc.Len(), "expect webfinger cache to hold one entry") suite.Equal(1, wc.Len(), "expect webfinger cache to hold one entry")
wc.Lock() wc.Lock()
suite.True(wc.Cache.Has("misconfigured-instance.com"), "expect webfinger cache to have entry for misconfigured-instance.com") suite.True(wc.Cache.Has("misconfigured-instance.com"), "expect webfinger cache to have entry for misconfigured-instance.com")
last, _ := wc.Cache.Get("misconfigured-instance.com") // last, _ := wc.Cache.Get("misconfigured-instance.com")
wc.Unlock() wc.Unlock()
lastTime := last.Expiry // lastTime := last.Expiry
// The TTL of the previous and new entry should be the same since // // The TTL of the previous and new entry should be the same since
// a failed request must not extend the entry TTL // // a failed request must not extend the entry TTL
suite.Equal(repeatTime, lastTime) // suite.Equal(repeatTime, lastTime)
} }
func TestFingerTestSuite(t *testing.T) { func TestFingerTestSuite(t *testing.T) {