Fixing tests.

Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
This commit is contained in:
Christoph Fiehe
2024-10-10 08:23:58 +02:00
committed by André Roth
parent 73cdf5417b
commit 14c29ff912
25 changed files with 78 additions and 91 deletions

View File

@@ -429,6 +429,17 @@ func apiPublishUpdateSwitch(c *gin.Context) {
published.MultiDist = *b.MultiDist published.MultiDist = *b.MultiDist
} }
revision := published.ObtainRevision()
sources := revision.Sources
if published.SourceKind == deb.SourceSnapshot {
for _, snapshotInfo := range b.Snapshots {
component := snapshotInfo.Component
name := snapshotInfo.Name
sources[component] = name
}
}
resources := []string{string(published.Key())} resources := []string{string(published.Key())}
taskName := fmt.Sprintf("Update published %s repository %s/%s", published.SourceKind, published.StoragePrefix(), published.Distribution) taskName := fmt.Sprintf("Update published %s repository %s/%s", published.SourceKind, published.StoragePrefix(), published.Distribution)
maybeRunTaskInBackground(c, taskName, resources, func(out aptly.Progress, _ *task.Detail) (*task.ProcessReturnValue, error) { maybeRunTaskInBackground(c, taskName, resources, func(out aptly.Progress, _ *task.Detail) (*task.ProcessReturnValue, error) {
@@ -625,7 +636,7 @@ func apiPublishSourcesList(c *gin.Context) {
return return
} }
c.JSON(http.StatusOK, revision.ToJSON()["Sources"]) c.JSON(http.StatusOK, revision.SourceList())
} }
// @Router /api/publish/{prefix}/{distribution}/sources [put] // @Router /api/publish/{prefix}/{distribution}/sources [put]

View File

@@ -57,7 +57,7 @@ func aptlyPublishSourceListTxt(published *deb.PublishedRepo) error {
func aptlyPublishSourceListJSON(published *deb.PublishedRepo) error { func aptlyPublishSourceListJSON(published *deb.PublishedRepo) error {
revision := published.Revision revision := published.Revision
output, err := json.MarshalIndent(revision.ToJSON()["Sources"], "", " ") output, err := json.MarshalIndent(revision.SourceList(), "", " ")
if err != nil { if err != nil {
return fmt.Errorf("unable to list: %s", err) return fmt.Errorf("unable to list: %s", err)
} }

View File

@@ -21,6 +21,10 @@ import (
"github.com/aptly-dev/aptly/utils" "github.com/aptly-dev/aptly/utils"
) )
type SourceEntry struct {
Component, Name string
}
type PublishedRepoUpdateResult struct { type PublishedRepoUpdateResult struct {
AddedSources map[string]string AddedSources map[string]string
UpdatedSources map[string]string UpdatedSources map[string]string
@@ -129,6 +133,21 @@ func (revision *PublishedRepoRevision) Components() []string {
return components return components
} }
func (revision *PublishedRepoRevision) SourceList() []SourceEntry {
sources := revision.Sources
components := revision.Components()
sourceList := make([]SourceEntry, 0, len(sources))
for _, component := range components {
name := sources[component]
sourceList = append(sourceList, SourceEntry{
Component: component,
Name: name,
})
}
return sourceList
}
func (revision *PublishedRepoRevision) SourceNames() []string { func (revision *PublishedRepoRevision) SourceNames() []string {
sources := revision.Sources sources := revision.Sources
names := make([]string, 0, len(sources)) names := make([]string, 0, len(sources))
@@ -449,40 +468,26 @@ func NewPublishedRepo(storage, prefix, distribution string, architectures []stri
return result, nil return result, nil
} }
type sourceInfo struct {
Component, Name string
}
func (revision *PublishedRepoRevision) ToJSON() map[string]any {
sources := []sourceInfo{}
for _, component := range revision.Components() {
name := revision.Sources[component]
sources = append(sources, sourceInfo{
Component: component,
Name: name,
})
}
return map[string]any{"Sources": sources}
}
func (revision *PublishedRepoRevision) MarshalJSON() ([]byte, error) { func (revision *PublishedRepoRevision) MarshalJSON() ([]byte, error) {
sources := []sourceInfo{} sources := revision.Sources
for _, component := range revision.Components() { components := revision.Components()
name := revision.Sources[component] sourceList := make([]SourceEntry, 0, len(sources))
sources = append(sources, sourceInfo{ for _, component := range components {
name := sources[component]
sourceList = append(sourceList, SourceEntry{
Component: component, Component: component,
Name: name, Name: name,
}) })
} }
return json.Marshal(map[string]interface{}{ return json.Marshal(map[string]interface{}{
"Sources": sources, "Sources": sourceList,
}) })
} }
// MarshalJSON requires object to filled by "LoadShallow" or "LoadComplete" // MarshalJSON requires object to filled by "LoadShallow" or "LoadComplete"
func (p *PublishedRepo) MarshalJSON() ([]byte, error) { func (p *PublishedRepo) MarshalJSON() ([]byte, error) {
sources := []sourceInfo{} sources := []SourceEntry{}
for _, component := range p.Components() { for _, component := range p.Components() {
item := p.sourceItems[component] item := p.sourceItems[component]
name := "" name := ""
@@ -493,7 +498,7 @@ func (p *PublishedRepo) MarshalJSON() ([]byte, error) {
} else { } else {
panic("no snapshot/local repo") panic("no snapshot/local repo")
} }
sources = append(sources, sourceInfo{ sources = append(sources, SourceEntry{
Component: component, Component: component,
Name: name, Name: name,
}) })

View File

@@ -1,8 +1 @@
Loading packages... ERROR: unable to switch: component c does not exist in published repository
Generating metadata files and linking package files...
Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up prefix "." components a, c...
Publish for snapshot ./maverick [i386] publishes {a: [snap2]: Created as empty}, {b: [snap2]: Created as empty}, {c: [snap3]: Created as empty} has been successfully switched to new snapshot.

View File

@@ -1,5 +1,3 @@
WARNING: force overwrite mode enabled, aptly might corrupt other published repositories sharing the same package pool.
Loading packages... Loading packages...
Generating metadata files and linking package files... Generating metadata files and linking package files...
Finalizing metadata files... Finalizing metadata files...

View File

@@ -3,6 +3,5 @@ Generating metadata files and linking package files...
Finalizing metadata files... Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted: Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted: Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up prefix "." components main...
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated. Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.

View File

@@ -3,5 +3,6 @@ Generating metadata files and linking package files...
Finalizing metadata files... Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted: Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted: Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up prefix "." components main...
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated. Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.

View File

@@ -5,4 +5,4 @@ Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted: Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up prefix "." components main... Cleaning up prefix "." components main...
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated. Published local repository ./bookworm [i386, source] publishes {main: [local-repo]} has been successfully updated.

View File

@@ -1,8 +0,0 @@
Loading packages...
Generating metadata files and linking package files...
Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up prefix "." components main...
Published local repository ./bookworm [i386, source] publishes {main: [local-repo]} has been successfully updated.

View File

@@ -1 +1,8 @@
ERROR: unable to update: not a local repository publish Loading packages...
Generating metadata files and linking package files...
Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up prefix "." components contrib, main...
Published local repository ./maverick [i386, source] publishes {contrib: [repo2]}, {main: [repo1]} has been successfully updated.

View File

@@ -1,8 +1,6 @@
Loading packages... Loading packages...
Generating metadata files and linking package files... Generating metadata files and linking package files...
Finalizing metadata files... Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up prefix "." components contrib, main... Cleaning up prefix "." components contrib, main...
Published local repository ./maverick [i386, source] publishes {contrib: [repo2]}, {main: [repo1]} has been successfully updated. Published local repository ./squeeze [i386] publishes {contrib: [repo2]}, {main: [repo1]} has been successfully updated.

View File

@@ -1,6 +1,3 @@
Loading packages... Loading packages...
Generating metadata files and linking package files... Generating metadata files and linking package files...
Finalizing metadata files... ERROR: unable to publish: unable to process packages: error linking file to ${HOME}/.aptly/public/pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz: file already exists and is different
Cleaning up prefix "." components contrib, main...
Published local repository ./squeeze [i386] publishes {contrib: [repo2]}, {main: [repo1]} has been successfully updated.

View File

@@ -1,3 +1,10 @@
WARNING: force overwrite mode enabled, aptly might corrupt other published repositories sharing the same package pool.
Loading packages... Loading packages...
Generating metadata files and linking package files... Generating metadata files and linking package files...
ERROR: unable to publish: unable to process packages: error linking file to ${HOME}/.aptly/public/pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz: file already exists and is different Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up prefix "." components main...
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.

View File

@@ -424,22 +424,15 @@ class PublishSwitch11Test(BaseTest):
class PublishSwitch12Test(BaseTest): class PublishSwitch12Test(BaseTest):
""" """
publish switch: add new component to publish publish switch: wrong component names
""" """
fixtureCmds = [ fixtureCmds = [
"aptly snapshot create snap1 empty", "aptly snapshot create snap1 empty",
"aptly snapshot create snap2 empty", "aptly snapshot create snap2 empty",
"aptly snapshot create snap3 empty",
"aptly publish snapshot -architectures=i386 -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=maverick -component=a,b snap1 snap2", "aptly publish snapshot -architectures=i386 -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=maverick -component=a,b snap1 snap2",
] ]
runCmd = "aptly publish switch -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -component=a,c maverick snap2 snap3" runCmd = "aptly publish switch -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -component=a,c maverick snap2 snap1"
gold_processor = BaseTest.expand_environ expectedCode = 1
def check(self):
super(PublishSwitch12Test, self).check()
self.check_exists('public/dists/maverick/a/binary-i386/Packages')
self.check_exists('public/dists/maverick/c/binary-i386/Packages')
class PublishSwitch13Test(BaseTest): class PublishSwitch13Test(BaseTest):

View File

@@ -217,20 +217,6 @@ class PublishUpdate5Test(BaseTest):
class PublishUpdate6Test(BaseTest): class PublishUpdate6Test(BaseTest):
"""
publish update: not a local repo
"""
fixtureDB = True
fixturePool = True
fixtureCmds = [
"aptly snapshot create snap1 from mirror gnuplot-maverick",
"aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec snap1",
]
runCmd = "aptly publish update maverick"
expectedCode = 1
class PublishUpdate7Test(BaseTest):
""" """
publish update: multiple components, add some packages publish update: multiple components, add some packages
""" """
@@ -246,7 +232,7 @@ class PublishUpdate7Test(BaseTest):
gold_processor = BaseTest.expand_environ gold_processor = BaseTest.expand_environ
def check(self): def check(self):
super(PublishUpdate7Test, self).check() super(PublishUpdate6Test, self).check()
self.check_exists('public/dists/maverick/InRelease') self.check_exists('public/dists/maverick/InRelease')
self.check_exists('public/dists/maverick/Release') self.check_exists('public/dists/maverick/Release')
@@ -280,7 +266,7 @@ class PublishUpdate7Test(BaseTest):
self.check_file_contents('public/dists/maverick/contrib/binary-i386/Packages', 'binary2', match_prepare=lambda s: "\n".join(sorted(s.split("\n")))) self.check_file_contents('public/dists/maverick/contrib/binary-i386/Packages', 'binary2', match_prepare=lambda s: "\n".join(sorted(s.split("\n"))))
class PublishUpdate8Test(BaseTest): class PublishUpdate7Test(BaseTest):
""" """
publish update: update empty repos to empty repos publish update: update empty repos to empty repos
""" """
@@ -293,7 +279,7 @@ class PublishUpdate8Test(BaseTest):
gold_processor = BaseTest.expand_environ gold_processor = BaseTest.expand_environ
class PublishUpdate9Test(BaseTest): class PublishUpdate8Test(BaseTest):
""" """
publish update: conflicting files in the repo publish update: conflicting files in the repo
""" """
@@ -309,7 +295,7 @@ class PublishUpdate9Test(BaseTest):
gold_processor = BaseTest.expand_environ gold_processor = BaseTest.expand_environ
class PublishUpdate10Test(BaseTest): class PublishUpdate9Test(BaseTest):
""" """
publish update: -force-overwrite publish update: -force-overwrite
""" """
@@ -324,12 +310,12 @@ class PublishUpdate10Test(BaseTest):
gold_processor = BaseTest.expand_environ gold_processor = BaseTest.expand_environ
def check(self): def check(self):
super(PublishUpdate10Test, self).check() super(PublishUpdate9Test, self).check()
self.check_file_contents("public/pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz", "file") self.check_file_contents("public/pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz", "file")
class PublishUpdate11Test(BaseTest): class PublishUpdate10Test(BaseTest):
""" """
publish update: -skip-contents publish update: -skip-contents
""" """
@@ -343,7 +329,7 @@ class PublishUpdate11Test(BaseTest):
gold_processor = BaseTest.expand_environ gold_processor = BaseTest.expand_environ
def check(self): def check(self):
super(PublishUpdate11Test, self).check() super(PublishUpdate10Test, self).check()
self.check_exists('public/dists/maverick/InRelease') self.check_exists('public/dists/maverick/InRelease')
self.check_exists('public/dists/maverick/Release') self.check_exists('public/dists/maverick/Release')
@@ -353,7 +339,7 @@ class PublishUpdate11Test(BaseTest):
self.check_not_exists('public/dists/maverick/main/Contents-i386.gz') self.check_not_exists('public/dists/maverick/main/Contents-i386.gz')
class PublishUpdate12Test(BaseTest): class PublishUpdate11Test(BaseTest):
""" """
publish update: removed some packages skipping cleanup publish update: removed some packages skipping cleanup
""" """
@@ -367,7 +353,7 @@ class PublishUpdate12Test(BaseTest):
gold_processor = BaseTest.expand_environ gold_processor = BaseTest.expand_environ
def check(self): def check(self):
super(PublishUpdate12Test, self).check() super(PublishUpdate11Test, self).check()
self.check_exists('public/dists/maverick/InRelease') self.check_exists('public/dists/maverick/InRelease')
self.check_exists('public/dists/maverick/Release') self.check_exists('public/dists/maverick/Release')
@@ -439,7 +425,7 @@ class PublishUpdate12Test(BaseTest):
raise Exception("path seen wrong: %r" % (pathsSeen, )) raise Exception("path seen wrong: %r" % (pathsSeen, ))
class PublishUpdate13Test(BaseTest): class PublishUpdate12Test(BaseTest):
""" """
publish update: -skip-bz2 publish update: -skip-bz2
""" """
@@ -453,7 +439,7 @@ class PublishUpdate13Test(BaseTest):
gold_processor = BaseTest.expand_environ gold_processor = BaseTest.expand_environ
def check(self): def check(self):
super(PublishUpdate13Test, self).check() super(PublishUpdate12Test, self).check()
self.check_exists('public/dists/maverick/InRelease') self.check_exists('public/dists/maverick/InRelease')
self.check_exists('public/dists/maverick/Release') self.check_exists('public/dists/maverick/Release')
@@ -464,7 +450,7 @@ class PublishUpdate13Test(BaseTest):
self.check_not_exists('public/dists/maverick/main/binary-i386/Packages.bz2') self.check_not_exists('public/dists/maverick/main/binary-i386/Packages.bz2')
class PublishUpdate14Test(BaseTest): class PublishUpdate13Test(BaseTest):
""" """
publish update: -multi-dist publish update: -multi-dist
""" """
@@ -477,7 +463,7 @@ class PublishUpdate14Test(BaseTest):
gold_processor = BaseTest.expand_environ gold_processor = BaseTest.expand_environ
def check(self): def check(self):
super(PublishUpdate14Test, self).check() super(PublishUpdate13Test, self).check()
self.check_exists('public/dists/bookworm/InRelease') self.check_exists('public/dists/bookworm/InRelease')
self.check_exists('public/dists/bookworm/Release') self.check_exists('public/dists/bookworm/Release')