Other: Fix race condition in bridge mock updater

We need to protect the latest version info by a lock.
This commit is contained in:
James Houlahan
2022-10-24 16:48:49 +02:00
parent 350544e801
commit 7df2d70dbf

View File

@ -4,6 +4,7 @@ import (
"net/http"
"net/url"
"os"
"sync"
"testing"
"github.com/Masterminds/semver/v3"
@ -92,6 +93,7 @@ func (provider *TestLocationsProvider) UserCache() string {
type TestUpdater struct {
latest updater.VersionInfo
lock sync.RWMutex
}
func NewTestUpdater(version, minAuto *semver.Version) *TestUpdater {
@ -106,6 +108,9 @@ func NewTestUpdater(version, minAuto *semver.Version) *TestUpdater {
}
func (testUpdater *TestUpdater) SetLatestVersion(version, minAuto *semver.Version) {
testUpdater.lock.Lock()
defer testUpdater.lock.Unlock()
testUpdater.latest = updater.VersionInfo{
Version: version,
MinAuto: minAuto,
@ -115,6 +120,9 @@ func (testUpdater *TestUpdater) SetLatestVersion(version, minAuto *semver.Versio
}
func (testUpdater *TestUpdater) GetVersionInfo(downloader updater.Downloader, channel updater.Channel) (updater.VersionInfo, error) {
testUpdater.lock.RLock()
defer testUpdater.lock.RUnlock()
return testUpdater.latest, nil
}