diff --git a/system/lib.py b/system/lib.py index f184105d..750e10a8 100644 --- a/system/lib.py +++ b/system/lib.py @@ -146,7 +146,10 @@ class BaseTest(object): try: #start = time.time() if not hasattr(command, "__iter__"): - params = {'files': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files")} + params = { + 'files': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files"), + 'testfiles': os.path.join(os.path.dirname(inspect.getsourcefile(self.__class__)), self.__class__.__name__), + } if self.fixtureWebServer: params['url'] = self.webServerUrl diff --git a/system/t09_repo/AddRepo10Test_gold b/system/t09_repo/AddRepo10Test_gold new file mode 100644 index 00000000..89966194 --- /dev/null +++ b/system/t09_repo/AddRepo10Test_gold @@ -0,0 +1,2 @@ +Loading packages... +[+] pyspi-0.6.1-1.3_source added diff --git a/system/t09_repo/AddRepo10Test_repo_show b/system/t09_repo/AddRepo10Test_repo_show new file mode 100644 index 00000000..fd330aee --- /dev/null +++ b/system/t09_repo/AddRepo10Test_repo_show @@ -0,0 +1,7 @@ +Name: repo10 +Comment: Repo10 +Number of packages: 3 +Packages: + libboost-program-options-dev-1.49.0.1_i386 + pyspi-0.6.1-1.3_source + pyspi-0.6.1-1.4_source diff --git a/system/t09_repo/AddRepo1Test_gold b/system/t09_repo/AddRepo1Test_gold new file mode 100644 index 00000000..8779e508 --- /dev/null +++ b/system/t09_repo/AddRepo1Test_gold @@ -0,0 +1,2 @@ +Loading packages... +[+] libboost-program-options-dev-1.49.0.1_i386 added diff --git a/system/t09_repo/AddRepo1Test_repo_show b/system/t09_repo/AddRepo1Test_repo_show new file mode 100644 index 00000000..ebc1b108 --- /dev/null +++ b/system/t09_repo/AddRepo1Test_repo_show @@ -0,0 +1,5 @@ +Name: repo1 +Comment: Repo1 +Number of packages: 1 +Packages: + libboost-program-options-dev-1.49.0.1_i386 diff --git a/system/t09_repo/AddRepo2Test_gold b/system/t09_repo/AddRepo2Test_gold new file mode 100644 index 00000000..954ef261 --- /dev/null +++ b/system/t09_repo/AddRepo2Test_gold @@ -0,0 +1,3 @@ +Loading packages... +[+] pyspi-0.6.1-1.4_source added +[+] pyspi-0.6.1-1.3_source added diff --git a/system/t09_repo/AddRepo2Test_repo_show b/system/t09_repo/AddRepo2Test_repo_show new file mode 100644 index 00000000..fdc37342 --- /dev/null +++ b/system/t09_repo/AddRepo2Test_repo_show @@ -0,0 +1,6 @@ +Name: repo2 +Comment: Repo2 +Number of packages: 2 +Packages: + pyspi-0.6.1-1.3_source + pyspi-0.6.1-1.4_source diff --git a/system/t09_repo/AddRepo3Test_gold b/system/t09_repo/AddRepo3Test_gold new file mode 100644 index 00000000..6c6ff91b --- /dev/null +++ b/system/t09_repo/AddRepo3Test_gold @@ -0,0 +1,4 @@ +Loading packages... +[+] libboost-program-options-dev-1.49.0.1_i386 added +[+] pyspi-0.6.1-1.4_source added +[+] pyspi-0.6.1-1.3_source added diff --git a/system/t09_repo/AddRepo3Test_repo_show b/system/t09_repo/AddRepo3Test_repo_show new file mode 100644 index 00000000..499d5f16 --- /dev/null +++ b/system/t09_repo/AddRepo3Test_repo_show @@ -0,0 +1,7 @@ +Name: repo3 +Comment: Repo3 +Number of packages: 3 +Packages: + libboost-program-options-dev-1.49.0.1_i386 + pyspi-0.6.1-1.3_source + pyspi-0.6.1-1.4_source diff --git a/system/t09_repo/AddRepo4Test_gold b/system/t09_repo/AddRepo4Test_gold new file mode 100644 index 00000000..74eb2224 --- /dev/null +++ b/system/t09_repo/AddRepo4Test_gold @@ -0,0 +1,3 @@ +Loading packages... +[+] libboost-program-options-dev-1.49.0.1_i386 added +[+] pyspi-0.6.1-1.3_source added diff --git a/system/t09_repo/AddRepo4Test_repo_show b/system/t09_repo/AddRepo4Test_repo_show new file mode 100644 index 00000000..2af6fbde --- /dev/null +++ b/system/t09_repo/AddRepo4Test_repo_show @@ -0,0 +1,6 @@ +Name: repo4 +Comment: Repo4 +Number of packages: 2 +Packages: + libboost-program-options-dev-1.49.0.1_i386 + pyspi-0.6.1-1.3_source diff --git a/system/t09_repo/AddRepo5Test_gold b/system/t09_repo/AddRepo5Test_gold new file mode 100644 index 00000000..cd36b8a3 --- /dev/null +++ b/system/t09_repo/AddRepo5Test_gold @@ -0,0 +1,2 @@ +Loading packages... +[!] Unable to import file /02/03/pyspi_0.6.1-1.3.diff.gz into pool: open /02/03/pyspi_0.6.1-1.3.diff.gz: no such file or directory diff --git a/system/t09_repo/AddRepo5Test_repo_show b/system/t09_repo/AddRepo5Test_repo_show new file mode 100644 index 00000000..1e02cf35 --- /dev/null +++ b/system/t09_repo/AddRepo5Test_repo_show @@ -0,0 +1,3 @@ +Name: repo5 +Comment: Repo5 +Number of packages: 0 diff --git a/system/t09_repo/AddRepo6Test_gold b/system/t09_repo/AddRepo6Test_gold new file mode 100644 index 00000000..d198de1f --- /dev/null +++ b/system/t09_repo/AddRepo6Test_gold @@ -0,0 +1,2 @@ +Loading packages... +[!] Unable to process no-such-file: stat no-such-file: no such file or directory diff --git a/system/t09_repo/AddRepo7Test_gold b/system/t09_repo/AddRepo7Test_gold new file mode 100644 index 00000000..c589daef --- /dev/null +++ b/system/t09_repo/AddRepo7Test_gold @@ -0,0 +1 @@ +ERROR: unable to add: local repo with name repo7 not found diff --git a/system/t09_repo/AddRepo8Test/pyspi_0.6.1-1.3.conflict.dsc b/system/t09_repo/AddRepo8Test/pyspi_0.6.1-1.3.conflict.dsc new file mode 100644 index 00000000..21a67a86 --- /dev/null +++ b/system/t09_repo/AddRepo8Test/pyspi_0.6.1-1.3.conflict.dsc @@ -0,0 +1,12 @@ +Format: 1.0 +Source: pyspi +Binary: python-at-spi +Architecture: any +Version: 0.6.1-1.3 +Maintainer: Jose Carlos Garcia Sogo +Homepage: http://people.redhat.com/zcerza/dogtail +Standards-Version: 3.7.3 +Vcs-Svn: svn://svn.tribulaciones.org/srv/svn/pyspi/trunk +Build-Depends: debhelper (>= 5), cdbs, libatspi-dev, python-pyrex, python-support (>= 0.4), python-all-dev, libx11-dev +Files: + d41d8cd98f00b204e9800998ecf8427e 0 pyspi_0.6.1.orig.tar.gz diff --git a/system/t09_repo/AddRepo8Test/pyspi_0.6.1.orig.tar.gz b/system/t09_repo/AddRepo8Test/pyspi_0.6.1.orig.tar.gz new file mode 100644 index 00000000..e69de29b diff --git a/system/t09_repo/AddRepo8Test_gold b/system/t09_repo/AddRepo8Test_gold new file mode 100644 index 00000000..bddaf55e --- /dev/null +++ b/system/t09_repo/AddRepo8Test_gold @@ -0,0 +1,2 @@ +Loading packages... +[!] Unable to save package pyspi-0.6.1-1.3_source: unable to save: pyspi-0.6.1-1.3_source, conflict with existing packge diff --git a/system/t09_repo/AddRepo8Test_repo_show b/system/t09_repo/AddRepo8Test_repo_show new file mode 100644 index 00000000..ae3180ba --- /dev/null +++ b/system/t09_repo/AddRepo8Test_repo_show @@ -0,0 +1,5 @@ +Name: repo8 +Comment: Repo8 +Number of packages: 1 +Packages: + pyspi-0.6.1-1.3_source diff --git a/system/t09_repo/AddRepo9Test_gold b/system/t09_repo/AddRepo9Test_gold new file mode 100644 index 00000000..45cab2f6 --- /dev/null +++ b/system/t09_repo/AddRepo9Test_gold @@ -0,0 +1,2 @@ +Loading packages... +[!] Unable to import file /pyspi_0.6.1.orig.tar.gz into pool: unable to import into pool: file /Users/smira/.aptly/pool/de/f3/pyspi_0.6.1.orig.tar.gz already exists diff --git a/system/t09_repo/ShowRepo2Test_gold b/system/t09_repo/ShowRepo2Test_gold index 22763100..edc0b61a 100644 --- a/system/t09_repo/ShowRepo2Test_gold +++ b/system/t09_repo/ShowRepo2Test_gold @@ -1,4 +1,7 @@ Name: repo2 Comment: Cool -Number of packages: 0 +Number of packages: 3 Packages: + libboost-program-options-dev-1.49.0.1_i386 + pyspi-0.6.1-1.3_source + pyspi-0.6.1-1.4_source diff --git a/system/t09_repo/__init__.py b/system/t09_repo/__init__.py index 88bebb4b..d70fc443 100644 --- a/system/t09_repo/__init__.py +++ b/system/t09_repo/__init__.py @@ -2,6 +2,7 @@ Testing local repo management """ +from .add import * from .create import * from .show import * from .list import * diff --git a/system/t09_repo/add.py b/system/t09_repo/add.py new file mode 100644 index 00000000..b786946b --- /dev/null +++ b/system/t09_repo/add.py @@ -0,0 +1,212 @@ +import tempfile +import shutil +import os +import inspect +from lib import BaseTest + + +class AddRepo1Test(BaseTest): + """ + add package to local repo: .deb file + """ + fixtureCmds = [ + "aptly repo create -comment=Repo1 repo1", + ] + runCmd = "aptly repo add repo1 ${files}/libboost-program-options-dev_1.49.0.1_i386.deb" + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show -with-packages repo1", "repo_show") + + # check pool + self.check_exists('pool/00/35/libboost-program-options-dev_1.49.0.1_i386.deb') + + +class AddRepo2Test(BaseTest): + """ + add package to local repo: .dsc file + """ + fixtureCmds = [ + "aptly repo create -comment=Repo2 repo2", + ] + runCmd = "aptly repo add repo2 ${files}/pyspi_0.6.1-1.3.dsc ${files}/pyspi-0.6.1-1.3.stripped.dsc" + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show -with-packages repo2", "repo_show") + + # check pool + self.check_exists('pool/22/ff/pyspi_0.6.1-1.3.diff.gz') + self.check_exists('pool/b7/2c/pyspi_0.6.1-1.3.dsc') + self.check_exists('pool/de/f3/pyspi_0.6.1.orig.tar.gz') + self.check_exists('pool/2f/5b/pyspi-0.6.1-1.3.stripped.dsc') + + +class AddRepo3Test(BaseTest): + """ + add package to local repo: directory + """ + fixtureCmds = [ + "aptly repo create -comment=Repo3 repo3", + ] + runCmd = "aptly repo add repo3 ${files}" + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show -with-packages repo3", "repo_show") + + # check pool + self.check_exists('pool/00/35/libboost-program-options-dev_1.49.0.1_i386.deb') + self.check_exists('pool/22/ff/pyspi_0.6.1-1.3.diff.gz') + self.check_exists('pool/b7/2c/pyspi_0.6.1-1.3.dsc') + self.check_exists('pool/de/f3/pyspi_0.6.1.orig.tar.gz') + self.check_exists('pool/2f/5b/pyspi-0.6.1-1.3.stripped.dsc') + + +class AddRepo4Test(BaseTest): + """ + add package to local repo: complex directory + remove + """ + fixtureCmds = [ + "aptly repo create -comment=Repo4 repo4", + ] + runCmd = "aptly repo add -remove-files repo4 " + + def prepare(self): + super(AddRepo4Test, self).prepare() + + self.tempSrcDir = tempfile.mkdtemp() + os.makedirs(os.path.join(self.tempSrcDir, "01"), 0755) + os.makedirs(os.path.join(self.tempSrcDir, "02", "03"), 0755) + + shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "libboost-program-options-dev_1.49.0.1_i386.deb"), + os.path.join(self.tempSrcDir, "01")) + shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "pyspi_0.6.1-1.3.dsc"), + os.path.join(self.tempSrcDir, "02", "03")) + shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "pyspi_0.6.1.orig.tar.gz"), + os.path.join(self.tempSrcDir, "02", "03")) + shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "pyspi_0.6.1-1.3.diff.gz"), + os.path.join(self.tempSrcDir, "02", "03")) + shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "pyspi_0.6.1-1.3.diff.gz"), + os.path.join(self.tempSrcDir, "02", "03", "other.file")) + + self.runCmd += self.tempSrcDir + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show -with-packages repo4", "repo_show") + + # check pool + self.check_exists('pool/00/35/libboost-program-options-dev_1.49.0.1_i386.deb') + self.check_exists('pool/22/ff/pyspi_0.6.1-1.3.diff.gz') + self.check_exists('pool/b7/2c/pyspi_0.6.1-1.3.dsc') + self.check_exists('pool/de/f3/pyspi_0.6.1.orig.tar.gz') + + path = os.path.join(self.tempSrcDir, "01", "libboost-program-options-dev_1.49.0.1_i386.deb") + if os.path.exists(path): + raise Exception("path %s shouldn't exist" % (path, )) + path = os.path.join(self.tempSrcDir, "02", "03", "pyspi_0.6.1.orig.tar.gz") + if os.path.exists(path): + raise Exception("path %s shouldn't exist" % (path, )) + + path = os.path.join(self.tempSrcDir, "02", "03", "other.file") + if not os.path.exists(path): + raise Exception("path %s doesn't exist" % (path, )) + + shutil.rmtree(self.tempSrcDir) + + +class AddRepo5Test(BaseTest): + """ + add package to local repo: some source files missing + """ + fixtureCmds = [ + "aptly repo create -comment=Repo5 repo5", + ] + runCmd = "aptly repo add repo5 " + outputMatchPrepare = lambda self, s: s.replace(self.tempSrcDir, "") + + def prepare(self): + super(AddRepo5Test, self).prepare() + + self.tempSrcDir = tempfile.mkdtemp() + os.makedirs(os.path.join(self.tempSrcDir, "02", "03"), 0755) + + shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "pyspi_0.6.1-1.3.dsc"), + os.path.join(self.tempSrcDir, "02", "03")) + shutil.copy(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "pyspi_0.6.1.orig.tar.gz"), + os.path.join(self.tempSrcDir, "02", "03")) + + self.runCmd += self.tempSrcDir + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show repo5", "repo_show") + + shutil.rmtree(self.tempSrcDir) + + +class AddRepo6Test(BaseTest): + """ + add package to local repo: missing file + """ + fixtureCmds = [ + "aptly repo create -comment=Repo6 repo6", + ] + runCmd = "aptly repo add repo6 no-such-file" + + +class AddRepo7Test(BaseTest): + """ + add package to local repo: missing repo + """ + runCmd = "aptly repo add repo7 ${files}" + expectedCode = 1 + + +class AddRepo8Test(BaseTest): + """ + add package to local repo: conflict in packages + """ + fixtureCmds = [ + "aptly repo create -comment=Repo8 repo8", + "aptly repo add repo8 ${files}/pyspi_0.6.1-1.3.dsc", + ] + runCmd = "aptly repo add repo8 ${testfiles}/pyspi_0.6.1-1.3.conflict.dsc" + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show -with-packages repo8", "repo_show") + + +class AddRepo9Test(BaseTest): + """ + add package to local repo: conflict in files + """ + fixtureCmds = [ + "aptly repo create -comment=Repo9 repo9", + ] + runCmd = "aptly repo add repo9 ${files}/pyspi_0.6.1-1.3.dsc" + outputMatchPrepare = lambda self, s: s.replace(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files"), "") + + def prepare(self): + super(AddRepo9Test, self).prepare() + + os.makedirs(os.path.join(os.environ["HOME"], ".aptly", "pool/de/f3/")) + with open(os.path.join(os.environ["HOME"], ".aptly", "pool/de/f3/pyspi_0.6.1.orig.tar.gz"), "w") as f: + f.write("abcd") + + +class AddRepo10Test(BaseTest): + """ + add package to local repo: double import + """ + fixtureCmds = [ + "aptly repo create -comment=Repo10 repo10", + "aptly repo add repo10 ${files}", + ] + runCmd = "aptly repo add repo10 ${files}/pyspi_0.6.1-1.3.dsc" + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show -with-packages repo10", "repo_show") diff --git a/system/t09_repo/show.py b/system/t09_repo/show.py index e28f1a86..4c23871e 100644 --- a/system/t09_repo/show.py +++ b/system/t09_repo/show.py @@ -13,7 +13,10 @@ class ShowRepo2Test(BaseTest): """ show local repo: -with-packages """ - fixtureCmds = ["aptly repo create -comment=Cool repo2"] + fixtureCmds = [ + "aptly repo create -comment=Cool repo2", + "aptly repo add repo2 ${files}" + ] runCmd = "aptly repo show -with-packages repo2"