internal/pkg: populate substitute status
All checks were successful
Test / Create distribution (push) Successful in 1m5s
Test / Sandbox (push) Successful in 3m8s
Test / Hakurei (push) Successful in 5m36s
Test / ShareFS (push) Successful in 5m37s
Test / Sandbox (race detector) (push) Successful in 6m58s
Test / Hakurei (race detector) (push) Successful in 9m44s
Test / Flake checks (push) Successful in 1m28s
All checks were successful
Test / Create distribution (push) Successful in 1m5s
Test / Sandbox (push) Successful in 3m8s
Test / Hakurei (push) Successful in 5m36s
Test / ShareFS (push) Successful in 5m37s
Test / Sandbox (race detector) (push) Successful in 6m58s
Test / Hakurei (race detector) (push) Successful in 9m44s
Test / Flake checks (push) Successful in 1m28s
These are not created when taking the fast path, but should be inherited from the alternative. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -1995,10 +1995,11 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
|
|||||||
buf := c.getIdentBuf()
|
buf := c.getIdentBuf()
|
||||||
sh.Sum(buf[wordSize:wordSize])
|
sh.Sum(buf[wordSize:wordSize])
|
||||||
substitute = unique.Make(ID(buf[wordSize:]))
|
substitute = unique.Make(ID(buf[wordSize:]))
|
||||||
|
substitutes := Encode(substitute.Value())
|
||||||
c.putIdentBuf(buf)
|
c.putIdentBuf(buf)
|
||||||
alternative = c.base.Append(
|
alternative = c.base.Append(
|
||||||
dirSubstitute,
|
dirSubstitute,
|
||||||
Encode(substitute.Value()),
|
substitutes,
|
||||||
)
|
)
|
||||||
|
|
||||||
if c.flags&CIgnoreSubstitutes == 0 {
|
if c.flags&CIgnoreSubstitutes == 0 {
|
||||||
@@ -2014,6 +2015,17 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
|
|||||||
dirChecksum,
|
dirChecksum,
|
||||||
checksums,
|
checksums,
|
||||||
)
|
)
|
||||||
|
if _, err = os.Lstat(c.base.Append(
|
||||||
|
dirStatus,
|
||||||
|
substitutes,
|
||||||
|
).String()); err == nil {
|
||||||
|
err = os.Symlink(substitutes, c.base.Append(
|
||||||
|
dirStatus,
|
||||||
|
ids,
|
||||||
|
).String())
|
||||||
|
} else if errors.Is(err, os.ErrNotExist) {
|
||||||
|
err = nil
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2023,6 +2035,15 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = ca.Cure(&f)
|
err = ca.Cure(&f)
|
||||||
|
if err == nil && f.status != nil {
|
||||||
|
err = os.Link(c.base.Append(
|
||||||
|
dirStatus,
|
||||||
|
ids,
|
||||||
|
).String(), c.base.Append(
|
||||||
|
dirStatus,
|
||||||
|
substitutes,
|
||||||
|
).String())
|
||||||
|
}
|
||||||
c.exitCure(a, curesExempt)
|
c.exitCure(a, curesExempt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1059,8 +1059,14 @@ func TestCache(t *testing.T) {
|
|||||||
"_EmV5nsYZ2UWHgRmLDMU8i-rJWDx-kv5_1pFrzQI7vMMCM5mAXivO8UZtVfOqMR_",
|
"_EmV5nsYZ2UWHgRmLDMU8i-rJWDx-kv5_1pFrzQI7vMMCM5mAXivO8UZtVfOqMR_",
|
||||||
), want, nil},
|
), want, nil},
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if dents, err := os.ReadDir(base.Append("status").String()); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
} else if len(dents) > 0 {
|
||||||
|
t.Errorf("ReadDir: %v", dents)
|
||||||
|
}
|
||||||
|
|
||||||
}, expectsFS{
|
}, expectsFS{
|
||||||
".": {Mode: fs.ModeDir | 0700},
|
".": {Mode: fs.ModeDir | 0700},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user