From 47ad59c51bd6af88079aa8c2d464077b1c7130e0 Mon Sep 17 00:00:00 2001 From: Christoph Fiehe Date: Thu, 10 Oct 2024 13:49:17 +0200 Subject: [PATCH] Test cases added. Signed-off-by: Christoph Fiehe --- cmd/publish_source_add.go | 2 +- cmd/publish_source_list.go | 2 +- cmd/publish_source_remove.go | 2 +- cmd/publish_source_update.go | 2 +- system/t06_publish/PublishSourceAdd1Test_gold | 1 + system/t06_publish/PublishSourceAdd2Test_gold | 1 + system/t06_publish/PublishSourceAdd3Test_gold | 1 + .../t06_publish/PublishSourceDrop1Test_gold | 1 + .../t06_publish/PublishSourceList1Test_gold | 1 + .../t06_publish/PublishSourceRemove1Test_gold | 1 + .../t06_publish/PublishSourceRemove2Test_gold | 1 + .../t06_publish/PublishSourceRemove3Test_gold | 1 + .../t06_publish/PublishSourceUpdate1Test_gold | 1 + .../t06_publish/PublishSourceUpdate2Test_gold | 1 + .../t06_publish/PublishSourceUpdate3Test_gold | 1 + system/t06_publish/source.py | 223 ++++++++++++++++++ 16 files changed, 238 insertions(+), 4 deletions(-) create mode 100644 system/t06_publish/PublishSourceAdd1Test_gold create mode 100644 system/t06_publish/PublishSourceAdd2Test_gold create mode 100644 system/t06_publish/PublishSourceAdd3Test_gold create mode 100644 system/t06_publish/PublishSourceDrop1Test_gold create mode 100644 system/t06_publish/PublishSourceList1Test_gold create mode 100644 system/t06_publish/PublishSourceRemove1Test_gold create mode 100644 system/t06_publish/PublishSourceRemove2Test_gold create mode 100644 system/t06_publish/PublishSourceRemove3Test_gold create mode 100644 system/t06_publish/PublishSourceUpdate1Test_gold create mode 100644 system/t06_publish/PublishSourceUpdate2Test_gold create mode 100644 system/t06_publish/PublishSourceUpdate3Test_gold create mode 100644 system/t06_publish/source.py diff --git a/cmd/publish_source_add.go b/cmd/publish_source_add.go index 52e98000b..08adeb772 100644 --- a/cmd/publish_source_add.go +++ b/cmd/publish_source_add.go @@ -44,7 +44,7 @@ func aptlyPublishSourceAdd(cmd *commander.Command, args []string) error { name := names[i] _, exists := sources[component] if exists { - return fmt.Errorf("unable to add: Component %q has already been added", component) + return fmt.Errorf("unable to add: component %q has already been added", component) } context.Progress().Printf("Adding component %q with source %q [%s]...\n", component, name, published.SourceKind) diff --git a/cmd/publish_source_list.go b/cmd/publish_source_list.go index a12b5ac90..aa61a2b8b 100644 --- a/cmd/publish_source_list.go +++ b/cmd/publish_source_list.go @@ -30,7 +30,7 @@ func aptlyPublishSourceList(cmd *commander.Command, args []string) error { } if published.Revision == nil { - return fmt.Errorf("unable to list: No source changes exist") + return fmt.Errorf("unable to list: no source changes exist") } jsonFlag := cmd.Flag.Lookup("json").Value.Get().(bool) diff --git a/cmd/publish_source_remove.go b/cmd/publish_source_remove.go index 6a6136c39..624763b87 100644 --- a/cmd/publish_source_remove.go +++ b/cmd/publish_source_remove.go @@ -19,7 +19,7 @@ func aptlyPublishSourceRemove(cmd *commander.Command, args []string) error { components := strings.Split(context.Flags().Lookup("component").Value.String(), ",") if len(components) == 0 { - return fmt.Errorf("unable to remove: Missing components, specify at least one component") + return fmt.Errorf("unable to remove: missing components, specify at least one component") } prefix := context.Flags().Lookup("prefix").Value.String() diff --git a/cmd/publish_source_update.go b/cmd/publish_source_update.go index 6fe90c553..9a81fcc98 100644 --- a/cmd/publish_source_update.go +++ b/cmd/publish_source_update.go @@ -44,7 +44,7 @@ func aptlyPublishSourceUpdate(cmd *commander.Command, args []string) error { name := names[i] _, exists := sources[component] if !exists { - return fmt.Errorf("unable to update: Component %q does not exist", component) + return fmt.Errorf("unable to update: component %q does not exist", component) } context.Progress().Printf("Updating component %q with source %q [%s]...\n", component, name, published.SourceKind) diff --git a/system/t06_publish/PublishSourceAdd1Test_gold b/system/t06_publish/PublishSourceAdd1Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceAdd1Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceAdd2Test_gold b/system/t06_publish/PublishSourceAdd2Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceAdd2Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceAdd3Test_gold b/system/t06_publish/PublishSourceAdd3Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceAdd3Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceDrop1Test_gold b/system/t06_publish/PublishSourceDrop1Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceDrop1Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceList1Test_gold b/system/t06_publish/PublishSourceList1Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceList1Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceRemove1Test_gold b/system/t06_publish/PublishSourceRemove1Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceRemove1Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceRemove2Test_gold b/system/t06_publish/PublishSourceRemove2Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceRemove2Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceRemove3Test_gold b/system/t06_publish/PublishSourceRemove3Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceRemove3Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceUpdate1Test_gold b/system/t06_publish/PublishSourceUpdate1Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceUpdate1Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceUpdate2Test_gold b/system/t06_publish/PublishSourceUpdate2Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceUpdate2Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/PublishSourceUpdate3Test_gold b/system/t06_publish/PublishSourceUpdate3Test_gold new file mode 100644 index 000000000..345e6aef7 --- /dev/null +++ b/system/t06_publish/PublishSourceUpdate3Test_gold @@ -0,0 +1 @@ +Test diff --git a/system/t06_publish/source.py b/system/t06_publish/source.py new file mode 100644 index 000000000..432f83a8f --- /dev/null +++ b/system/t06_publish/source.py @@ -0,0 +1,223 @@ +from lib import BaseTest + + +class PublishSourceAdd1Test(BaseTest): + """ + publish source add: add single source + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror wheezy-contrib", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main snap1", + "aptly publish source add -component=contrib wheezy snap2" + ] + runCmd = "aptly publish update -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec" + + gold_processor = BaseTest.expand_environ + + def check(self): + super(PublishSourceAdd1Test, self).check() + self.check_exists('public/dists/wheezy/contrib/binary-i386/Packages') + self.check_exists('public/dists/wheezy/contrib/binary-i386/Packages.gz') + self.check_exists('public/dists/wheezy/contrib/binary-i386/Packages.bz2') + self.check_exists('public/dists/wheezy/contrib/Contents-i386.gz') + self.check_exists('public/dists/wheezy/contrib/binary-amd64/Packages') + self.check_exists('public/dists/wheezy/contrib/binary-amd64/Packages.gz') + self.check_exists('public/dists/wheezy/contrib/binary-amd64/Packages.bz2') + self.check_exists('public/dists/wheezy/contrib/Contents-amd64.gz') + + release = self.read_file('public/dists/wheezy/Release').split('\n') + components = next((e.split(': ')[1] for e in release if e.startswith('Components')), None) + components = sorted(components.split(' ')) + if ['contrib', 'main'] != components: + raise Exception("value of 'Components' in release file is '%s' and does not match '%s'." % (' '.join(components), 'contrib main')) + + +class PublishSourceAdd2Test(BaseTest): + """ + publish source add: add multiple sources + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror wheezy-contrib", + "aptly snapshot create snap3 from mirror wheezy-non-free", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main snap1", + "aptly publish source add -component=contrib,non-free wheezy snap2 snap3" + ] + runCmd = "aptly publish update -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec" + + gold_processor = BaseTest.expand_environ + + def check(self): + super(PublishSourceAdd2Test, self).check() + self.check_exists('public/dists/wheezy/contrib/binary-i386/Packages') + self.check_exists('public/dists/wheezy/contrib/binary-i386/Packages.gz') + self.check_exists('public/dists/wheezy/contrib/binary-i386/Packages.bz2') + self.check_exists('public/dists/wheezy/contrib/Contents-i386.gz') + self.check_exists('public/dists/wheezy/contrib/binary-amd64/Packages') + self.check_exists('public/dists/wheezy/contrib/binary-amd64/Packages.gz') + self.check_exists('public/dists/wheezy/contrib/binary-amd64/Packages.bz2') + self.check_exists('public/dists/wheezy/contrib/Contents-amd64.gz') + + self.check_exists('public/dists/wheezy/non-free/binary-i386/Packages') + self.check_exists('public/dists/wheezy/non-free/binary-i386/Packages.gz') + self.check_exists('public/dists/wheezy/non-free/binary-i386/Packages.bz2') + self.check_exists('public/dists/wheezy/non-free/Contents-i386.gz') + self.check_exists('public/dists/wheezy/non-free/binary-amd64/Packages') + self.check_exists('public/dists/wheezy/non-free/binary-amd64/Packages.gz') + self.check_exists('public/dists/wheezy/non-free/binary-amd64/Packages.bz2') + self.check_exists('public/dists/wheezy/non-free/Contents-amd64.gz') + + release = self.read_file('public/dists/wheezy/Release').split('\n') + components = next((e.split(': ')[1] for e in release if e.startswith('Components')), None) + components = sorted(components.split(' ')) + if ['contrib', 'main', 'non-free'] != components: + raise Exception("value of 'Components' in release file is '%s' and does not match '%s'." % (' '.join(components), 'contrib main non-free')) + + +class PublishSourceAdd3Test(BaseTest): + """ + publish source add: (re-)add already added source + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror gnuplot-maverick", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main snap1", + ] + runCmd = "aptly publish add -component=main wheezy snap2" + expectedCode = 1 + gold_processor = BaseTest.expand_environ + + +class PublishSourceList1Test(BaseTest): + """ + publish source list: show source changes + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror wheezy-contrib", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main snap1", + ] + runCmd = "aptly publish source list" + + gold_processor = BaseTest.expand_environ + + +class PublishSourceDrop1Test(BaseTest): + """ + publish source drop: drop source changes + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror wheezy-contrib", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main snap1", + ] + runCmd = "aptly publish source drop" + + gold_processor = BaseTest.expand_environ + + +class PublishSourceUpdate1Test(BaseTest): + """ + publish source update: Update single source + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror gnuplot-maverick", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main snap1", + ] + runCmd = "aptly publish source update -component=main wheezy snap2" + + gold_processor = BaseTest.expand_environ + + +class PublishSourceUpdate2Test(BaseTest): + """ + publish source update: Update multiple sources + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror wheezy-main", + "aptly snapshot create snap3 from mirror gnuplot-maverick", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main,test snap1 snap2", + ] + runCmd = "aptly publish source update -component=main,test wheezy snap2 snap3" + + gold_processor = BaseTest.expand_environ + + +class PublishSourceUpdate3Test(BaseTest): + """ + publish source update: Update not existing source + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main snap1", + ] + runCmd = "aptly publish source update -component=not-existent wheezy snap1" + + gold_processor = BaseTest.expand_environ + + +class PublishSourceRemove1Test(BaseTest): + """ + publish source remove: Remove single source + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror wheezy-contrib", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main,contrib snap1 snap2", + ] + runCmd = "aptly publish source remove -component=contrib wheezy" + + gold_processor = BaseTest.expand_environ + + +class PublishSourceRemove2Test(BaseTest): + """ + publish source remove: Remove multiple sources + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly snapshot create snap2 from mirror wheezy-contrib", + "aptly snapshot create snap3 from mirror wheezy-non-free", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main,contrib,non-free snap1 snap2 snap3", + ] + runCmd = "aptly publish source remove -component=contrib,non-free wheezy" + + gold_processor = BaseTest.expand_environ + + +class PublishSourceRemove3Test(BaseTest): + """ + publish source remove: Remove not-existing source + """ + fixtureDB = True + fixturePool = True + fixtureCmds = [ + "aptly snapshot create snap1 from mirror wheezy-main", + "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=wheezy -component=main snap1", + ] + runCmd = "aptly publish source remove -component=not-existent wheezy" + expectedCode = 1 + gold_processor = BaseTest.expand_environ