diff --git a/files/package_pool.go b/files/package_pool.go index 385ed050..a03ebdc0 100644 --- a/files/package_pool.go +++ b/files/package_pool.go @@ -128,12 +128,15 @@ func (pool *PackagePool) Import(path string, hashMD5 string) error { // unable to stat target location? return err } - // file doesn't exist, that's ok } else { + // target already exists if targetInfo.Size() != sourceInfo.Size() { // trying to overwrite file? return fmt.Errorf("unable to import into pool: file %s already exists", poolPath) } + + // assume that target is already there + return nil } // create subdirs as necessary diff --git a/system/lib.py b/system/lib.py index 2e328bdd..7782729e 100644 --- a/system/lib.py +++ b/system/lib.py @@ -156,6 +156,7 @@ class BaseTest(object): 'files': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files"), 'udebs': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "udebs"), 'testfiles': os.path.join(os.path.dirname(inspect.getsourcefile(self.__class__)), self.__class__.__name__), + 'aptlyroot': os.path.join(os.environ["HOME"], ".aptly"), } if self.fixtureWebServer: params['url'] = self.webServerUrl @@ -258,6 +259,10 @@ class BaseTest(object): if os.path.exists(os.path.join(os.environ["HOME"], ".aptly", path)): raise Exception("path %s exists" % (path, )) + def check_file_not_empty(self, path): + if os.stat(os.path.join(os.environ["HOME"], ".aptly", path))[6] == 0: + raise Exception("file %s is empty" % (path, )) + def check_equal(self, a, b): if a != b: self.verify_match(a, b, match_prepare=pprint.pformat) diff --git a/system/t09_repo/AddRepo14Test_gold b/system/t09_repo/AddRepo14Test_gold new file mode 100644 index 00000000..d08ab1e1 --- /dev/null +++ b/system/t09_repo/AddRepo14Test_gold @@ -0,0 +1,2 @@ +Loading packages... +[+] libboost-program-options-dev_1.49.0.1_i386 added diff --git a/system/t09_repo/add.py b/system/t09_repo/add.py index 9b5d9319..3c26cea1 100644 --- a/system/t09_repo/add.py +++ b/system/t09_repo/add.py @@ -267,3 +267,19 @@ class AddRepo13Test(BaseTest): # check pool self.check_exists('pool/72/16/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb') self.check_exists('pool/b7/2c/pyspi_0.6.1-1.3.dsc') + + +class AddRepo14Test(BaseTest): + """ + add same package to local repo twice and make sure the file doesn't get truncated. + """ + fixtureCmds = [ + "aptly repo create -comment=Repo14 -distribution=squeeze repo14", + "aptly repo add repo14 ${files}/libboost-program-options-dev_1.49.0.1_i386.deb" + ] + runCmd = "aptly repo add repo14 $aptlyroot/pool/00/35/libboost-program-options-dev_1.49.0.1_i386.deb" + + def check(self): + super(AddRepo14Test, self).check() + # check pool + self.check_file_not_empty('pool/00/35/libboost-program-options-dev_1.49.0.1_i386.deb')