forked from Silverfish/proton-bridge
Other: Fix race condition in bridge mock updater
We need to protect the latest version info by a lock.
This commit is contained in:
@ -4,6 +4,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/Masterminds/semver/v3"
|
"github.com/Masterminds/semver/v3"
|
||||||
@ -92,6 +93,7 @@ func (provider *TestLocationsProvider) UserCache() string {
|
|||||||
|
|
||||||
type TestUpdater struct {
|
type TestUpdater struct {
|
||||||
latest updater.VersionInfo
|
latest updater.VersionInfo
|
||||||
|
lock sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTestUpdater(version, minAuto *semver.Version) *TestUpdater {
|
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) {
|
func (testUpdater *TestUpdater) SetLatestVersion(version, minAuto *semver.Version) {
|
||||||
|
testUpdater.lock.Lock()
|
||||||
|
defer testUpdater.lock.Unlock()
|
||||||
|
|
||||||
testUpdater.latest = updater.VersionInfo{
|
testUpdater.latest = updater.VersionInfo{
|
||||||
Version: version,
|
Version: version,
|
||||||
MinAuto: minAuto,
|
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) {
|
func (testUpdater *TestUpdater) GetVersionInfo(downloader updater.Downloader, channel updater.Channel) (updater.VersionInfo, error) {
|
||||||
|
testUpdater.lock.RLock()
|
||||||
|
defer testUpdater.lock.RUnlock()
|
||||||
|
|
||||||
return testUpdater.latest, nil
|
return testUpdater.latest, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user