From a85e0b2f3605f9cc5c82e30e0c88abc32ac3fb7a Mon Sep 17 00:00:00 2001 From: Hyoun Jiil Date: Wed, 29 Jan 2014 17:50:51 +0900 Subject: [PATCH] fix noreverse option to register job [Description] noreverse was not working in register job Change-Id: I603d1e16f9ee9abc9a0eafadbc53fedbe978ed30 Signed-off-by: Hyoun Jiil --- src/build_server/RegisterPackageJob.rb | 8 +- .../build-server.basic1/build-cli-43.testcase | 82 ++++++++++++++++++ test/build-server.basic1/testsuite | 1 + test/git01/binary.tar.gz | Bin 0 -> 7971 bytes test/git01/depbinary.tar.gz | Bin 0 -> 8079 bytes 5 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 test/build-server.basic1/build-cli-43.testcase create mode 100644 test/git01/binary.tar.gz create mode 100644 test/git01/depbinary.tar.gz diff --git a/src/build_server/RegisterPackageJob.rb b/src/build_server/RegisterPackageJob.rb index b32be61..2c4a5f6 100644 --- a/src/build_server/RegisterPackageJob.rb +++ b/src/build_server/RegisterPackageJob.rb @@ -399,9 +399,11 @@ class RegisterPackageJob < CommonJob @log.info( "New Job #{@id} is started", Log::LV_USER) # clean build - if not ReverseBuildChecker.check( self, true ).empty? then - raise BuildServerException.new("ERR203") - end + if not @no_reverse then + if not ReverseBuildChecker.check( self, true ).empty? then + raise BuildServerException.new("ERR203") + end + end # if this package has compatible OS, check if @pkg_type == "BINARY" and diff --git a/test/build-server.basic1/build-cli-43.testcase b/test/build-server.basic1/build-cli-43.testcase new file mode 100644 index 0000000..aa7f458 --- /dev/null +++ b/test/build-server.basic1/build-cli-43.testcase @@ -0,0 +1,82 @@ +#PRE-EXEC +echo "register noreverse " +cd git01;tar xf binary.tar.gz +cd git01;tar xf depbinary.tar.gz +cd git01/binary;../../../../pkg-build -u ../../pkgsvr01/unstable/ +cd git01/binary;mv *.zip ../ +sed -i "s/0.0.1/0.0.2/" git01/binary/package/pkginfo.manifest +cd git01/binary;../../../../pkg-build -u ../../pkgsvr01/unstable/ +cd git01/binary;mv *.zip ../ +../../build-svr add-prj -n testserver3 -N depbinary -g `pwd`/git01/depbinary -b master +../../build-svr add-prj -n testserver3 -N binary -P binary +#EXEC +../../build-cli register -P `ls ./git01/binary_0.0.1_*.zip` -d 127.0.0.1:2223 -U admin@user -w 1234 +../../build-cli build -N depbinary -d 127.0.0.1:2223 -U admin@user -w 1234 +../../build-cli register -P `ls ./git01/binary_0.0.2_*.zip` -d 127.0.0.1:2223 -U admin@user -w 1234 --noreverse +#POST-EXEC +#EXPECT +I, [ +I, [ +I, [ +I, [ +I, [ +I, [ +Info: Added new job +Info: Initializing job... +Info: Checking package version ... +Info: Invoking a thread for REGISTER Job +Info: New Job +Info: Checking reverse build dependency ... +Info: Uploading ... +Info: Upload succeeded. Sync local pkg-server again... +Info: Snapshot: +Info: Job is completed! +Info: Job is FINISHED successfully! +Info: Updating the source info for project "binary" +Info: Added new job +Info: Initializing job... +Info: Checking package version ... +Info: Invoking a thread for building Job +Info: New Job +Info: Checking build dependency ... +Info: Checking install dependency ... +Info: Started to build this job... +Info: JobBuilder# +Info: Downloding client is initializing... +Info: Installing dependent packages... +Info: * binary +Info: Wait for cache sync +Info: Entering cache sync +Info: Cache sync done +Info: Downloading dependent source packages... +Info: Make clean... +Info: Make build... +Info: Make install... +Info: Generatiing pkginfo.manifest... +Info: Zipping... +Info: Creating package file ... depbinary_0.0.1_ +Info: Checking reverse build dependency ... +Info: Uploading ... +Info: Upload succeeded. Sync local pkg-server again... +Info: Snapshot: +Info: Job is completed! +Info: Job is FINISHED successfully! +Info: Updating the source info for project "depbinary" +I, [ +I, [ +I, [ +I, [ +I, [ +I, [ +Info: Added new job +Info: Initializing job... +Info: Checking package version ... +Info: Invoking a thread for REGISTER Job +Info: New Job +Info: Uploading ... +Info: Upload succeeded. Sync local pkg-server again... +Info: Snapshot: +Info: Job is completed! +Info: Job is FINISHED successfully! +Info: Updating the source info for project "binary" + diff --git a/test/build-server.basic1/testsuite b/test/build-server.basic1/testsuite index 39bb88d..dc73902 100644 --- a/test/build-server.basic1/testsuite +++ b/test/build-server.basic1/testsuite @@ -40,3 +40,4 @@ build-cli-39.testcase build-cli-40.testcase build-cli-41.testcase build-cli-42.testcase +build-cli-43.testcase diff --git a/test/git01/binary.tar.gz b/test/git01/binary.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..75fdeb2d1f0f05b35724241a1ac09f771a81384c GIT binary patch literal 7971 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 literal 0 HcmV?d00001 diff --git a/test/git01/depbinary.tar.gz b/test/git01/depbinary.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..08d6d0d0298d5c18f692734ab19e9ac088527012 GIT binary patch literal 8079 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