| #!/usr/bin/env perl |
| |
| # Copyright (C) 2014 Apple Inc. All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions |
| # are met: |
| # 1. Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # 2. Redistributions in binary form must reproduce the above copyright |
| # notice, this list of conditions and the following disclaimer in the |
| # documentation and/or other materials provided with the distribution. |
| # |
| # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY |
| # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
| # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| use strict; |
| use warnings; |
| |
| use File::Spec; |
| use File::Temp qw/ tempdir /; |
| |
| use Test::More; |
| |
| my @testCases = |
| ( |
| { |
| 'RC_ProjectSourceVersion' => '5300.4.3.2.1', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300.4.3.2.1', |
| '__BUILD_NUMBER__' => '300.4.3.2.1', |
| '__BUILD_NUMBER_SHORT__' => '300.4.3.2.1', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2001', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2001', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '530.4.3.2.1', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.4.3.2.1', |
| '__BUILD_NUMBER__' => '530.4.3.2.1', |
| '__BUILD_NUMBER_SHORT__' => '530.4.3.2.1', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2001', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2001', |
| '__FULL_BUILD_MAJOR_VERSION__' => '530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '53.4.3.2.1', |
| expectedResults => { |
| '__VERSION_TEXT__' => '53.4.3.2.1', |
| '__BUILD_NUMBER__' => '53.4.3.2.1', |
| '__BUILD_NUMBER_SHORT__' => '53.4.3.2.1', |
| '__VERSION_MAJOR__' => '53', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2001', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '53', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2001', |
| '__FULL_BUILD_MAJOR_VERSION__' => '53', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5.4.3.2.1', |
| expectedResults => { |
| '__VERSION_TEXT__' => '5.4.3.2.1', |
| '__BUILD_NUMBER__' => '5.4.3.2.1', |
| '__BUILD_NUMBER_SHORT__' => '5.4.3.2.1', |
| '__VERSION_MAJOR__' => '5', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2001', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '5', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2001', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5300.4.3.2', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300.4.3.2', |
| '__BUILD_NUMBER__' => '300.4.3.2', |
| '__BUILD_NUMBER_SHORT__' => '300.4.3.2', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2000', |
| '__VERSION_BUILD__' => '2', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '530.4.3.2', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.4.3.2', |
| '__BUILD_NUMBER__' => '530.4.3.2', |
| '__BUILD_NUMBER_SHORT__' => '530.4.3.2', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2000', |
| '__VERSION_BUILD__' => '2', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '53.4.3.2', |
| expectedResults => { |
| '__VERSION_TEXT__' => '53.4.3.2', |
| '__BUILD_NUMBER__' => '53.4.3.2', |
| '__BUILD_NUMBER_SHORT__' => '53.4.3.2', |
| '__VERSION_MAJOR__' => '53', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2000', |
| '__VERSION_BUILD__' => '2', |
| '__BUILD_NUMBER_MAJOR__' => '53', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '53', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5.4.3.2', |
| expectedResults => { |
| '__VERSION_TEXT__' => '5.4.3.2', |
| '__BUILD_NUMBER__' => '5.4.3.2', |
| '__BUILD_NUMBER_SHORT__' => '5.4.3.2', |
| '__VERSION_MAJOR__' => '5', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2000', |
| '__VERSION_BUILD__' => '2', |
| '__BUILD_NUMBER_MAJOR__' => '5', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5300.4.3', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300.4.3', |
| '__BUILD_NUMBER__' => '300.4.3', |
| '__BUILD_NUMBER_SHORT__' => '300.4.3', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '530.4.3', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.4.3', |
| '__BUILD_NUMBER__' => '530.4.3', |
| '__BUILD_NUMBER_SHORT__' => '530.4.3', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '53.4.3', |
| expectedResults => { |
| '__VERSION_TEXT__' => '53.4.3', |
| '__BUILD_NUMBER__' => '53.4.3', |
| '__BUILD_NUMBER_SHORT__' => '53.4.3', |
| '__VERSION_MAJOR__' => '53', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '53', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '53', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5.4.3', |
| expectedResults => { |
| '__VERSION_TEXT__' => '5.4.3', |
| '__BUILD_NUMBER__' => '5.4.3', |
| '__BUILD_NUMBER_SHORT__' => '5.4.3', |
| '__VERSION_MAJOR__' => '5', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '5', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5300.4', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300.4', |
| '__BUILD_NUMBER__' => '300.4', |
| '__BUILD_NUMBER_SHORT__' => '300.4', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '4000', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '4000', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '530.4', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.4', |
| '__BUILD_NUMBER__' => '530.4', |
| '__BUILD_NUMBER_SHORT__' => '530.4', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '4000', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '4000', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '53.4', |
| expectedResults => { |
| '__VERSION_TEXT__' => '53.4', |
| '__BUILD_NUMBER__' => '53.4', |
| '__BUILD_NUMBER_SHORT__' => '53.4', |
| '__VERSION_MAJOR__' => '53', |
| '__VERSION_MINOR__' => '4000', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '53', |
| '__BUILD_NUMBER_MINOR__' => '4000', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '53', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5.4', |
| expectedResults => { |
| '__VERSION_TEXT__' => '5.4', |
| '__BUILD_NUMBER__' => '5.4', |
| '__BUILD_NUMBER_SHORT__' => '5.4', |
| '__VERSION_MAJOR__' => '5', |
| '__VERSION_MINOR__' => '4000', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '5', |
| '__BUILD_NUMBER_MINOR__' => '4000', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5300', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300', |
| '__BUILD_NUMBER__' => '300', |
| '__BUILD_NUMBER_SHORT__' => '300', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '0', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '0', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '530', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530', |
| '__BUILD_NUMBER__' => '530', |
| '__BUILD_NUMBER_SHORT__' => '530', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '0', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '0', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '10530.1.1.1', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.1.1.1', |
| '__BUILD_NUMBER__' => '530.1.1.1', |
| '__BUILD_NUMBER_SHORT__' => '530.1.1.1', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '1001', |
| '__VERSION_TINY__' => '1000', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '1001', |
| '__BUILD_NUMBER_VARIANT__' => '1000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '10530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '10530.30.20.10', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.30.20.10', |
| '__BUILD_NUMBER__' => '530.30.20.10', |
| '__BUILD_NUMBER_SHORT__' => '530.30.20.10', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '30020', |
| '__VERSION_TINY__' => '10000', |
| '__VERSION_BUILD__' => '10', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '30020', |
| '__BUILD_NUMBER_VARIANT__' => '10000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '10530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '10530.64.200.64', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.64.200.64', |
| '__BUILD_NUMBER__' => '530.64.200.64', |
| '__BUILD_NUMBER_SHORT__' => '530.64.200.64', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '64200', |
| '__VERSION_TINY__' => '64000', |
| '__VERSION_BUILD__' => '64', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '64200', |
| '__BUILD_NUMBER_VARIANT__' => '64000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '10530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '10530.64.999.64', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.64.999.64', |
| '__BUILD_NUMBER__' => '530.64.999.64', |
| '__BUILD_NUMBER_SHORT__' => '530.64.999.64', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '64999', |
| '__VERSION_TINY__' => '64000', |
| '__VERSION_BUILD__' => '64', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '64999', |
| '__BUILD_NUMBER_VARIANT__' => '64000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '10530', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '7530.64.99.10', |
| expectedResults => { |
| '__VERSION_TEXT__' => '530.64.99.10', |
| '__BUILD_NUMBER__' => '530.64.99.10', |
| '__BUILD_NUMBER_SHORT__' => '530.64.99.10', |
| '__VERSION_MAJOR__' => '530', |
| '__VERSION_MINOR__' => '64099', |
| '__VERSION_TINY__' => '10000', |
| '__VERSION_BUILD__' => '10', |
| '__BUILD_NUMBER_MAJOR__' => '530', |
| '__BUILD_NUMBER_MINOR__' => '64099', |
| '__BUILD_NUMBER_VARIANT__' => '10000', |
| '__FULL_BUILD_MAJOR_VERSION__' => '7530', |
| }, |
| }, |
| |
| # Smallest "Valid" case |
| { |
| 'RC_ProjectSourceVersion' => '53', |
| expectedResults => { |
| '__VERSION_TEXT__' => '53', |
| '__BUILD_NUMBER__' => '53', |
| '__BUILD_NUMBER_SHORT__' => '53', |
| '__VERSION_MAJOR__' => '53', |
| '__VERSION_MINOR__' => '0', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '53', |
| '__BUILD_NUMBER_MINOR__' => '0', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '53', |
| }, |
| }, |
| |
| # We don't support 1-digit versions, but we should run without crashing |
| { |
| 'RC_ProjectSourceVersion' => '5', |
| expectedResults => { |
| '__VERSION_TEXT__' => '5', |
| '__BUILD_NUMBER__' => '5', |
| '__BUILD_NUMBER_SHORT__' => '5', |
| '__VERSION_MAJOR__' => '5', |
| '__VERSION_MINOR__' => '0', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '0', |
| '__BUILD_NUMBER_MAJOR__' => '5', |
| '__BUILD_NUMBER_MINOR__' => '0', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5', |
| }, |
| }, |
| |
| # Largest specified version test |
| { |
| 'RC_ProjectSourceVersion' => '214747.64.999.64.999', |
| expectedResults => { |
| '__VERSION_TEXT__' => '747.64.999.64.999', |
| '__BUILD_NUMBER__' => '747.64.999.64.999', |
| '__BUILD_NUMBER_SHORT__' => '747.64.999.64.999', |
| '__VERSION_MAJOR__' => '747', |
| '__VERSION_MINOR__' => '64999', |
| '__VERSION_TINY__' => '64999', |
| '__VERSION_BUILD__' => '999', |
| '__BUILD_NUMBER_MAJOR__' => '747', |
| '__BUILD_NUMBER_MINOR__' => '64999', |
| '__BUILD_NUMBER_VARIANT__' => '64999', |
| '__FULL_BUILD_MAJOR_VERSION__' => '214747', |
| }, |
| }, |
| |
| # Leading Whitespace |
| { |
| 'RC_ProjectSourceVersion' => ' 214747.64.99.64.99', |
| expectedResults => { |
| '__VERSION_TEXT__' => '747.64.99.64.99', |
| '__BUILD_NUMBER__' => '747.64.99.64.99', |
| '__BUILD_NUMBER_SHORT__' => '747.64.99.64.99', |
| '__VERSION_MAJOR__' => '747', |
| '__VERSION_MINOR__' => '64099', |
| '__VERSION_TINY__' => '64099', |
| '__VERSION_BUILD__' => '99', |
| '__BUILD_NUMBER_MAJOR__' => '747', |
| '__BUILD_NUMBER_MINOR__' => '64099', |
| '__BUILD_NUMBER_VARIANT__' => '64099', |
| '__FULL_BUILD_MAJOR_VERSION__' => '214747', |
| }, |
| }, |
| |
| # Trailing Whitespace |
| { |
| 'RC_ProjectSourceVersion' => '214747.64.99.64.99 ', |
| expectedResults => { |
| '__VERSION_TEXT__' => '747.64.99.64.99', |
| '__BUILD_NUMBER__' => '747.64.99.64.99', |
| '__BUILD_NUMBER_SHORT__' => '747.64.99.64.99', |
| '__VERSION_MAJOR__' => '747', |
| '__VERSION_MINOR__' => '64099', |
| '__VERSION_TINY__' => '64099', |
| '__VERSION_BUILD__' => '99', |
| '__BUILD_NUMBER_MAJOR__' => '747', |
| '__BUILD_NUMBER_MINOR__' => '64099', |
| '__BUILD_NUMBER_VARIANT__' => '64099', |
| '__FULL_BUILD_MAJOR_VERSION__' => '214747', |
| }, |
| }, |
| |
| # Leading and Trailing Whitespace |
| { |
| 'RC_ProjectSourceVersion' => ' 214747.64.99.64.99 ', |
| expectedResults => { |
| '__VERSION_TEXT__' => '747.64.99.64.99', |
| '__BUILD_NUMBER__' => '747.64.99.64.99', |
| '__BUILD_NUMBER_SHORT__' => '747.64.99.64.99', |
| '__VERSION_MAJOR__' => '747', |
| '__VERSION_MINOR__' => '64099', |
| '__VERSION_TINY__' => '64099', |
| '__VERSION_BUILD__' => '99', |
| '__BUILD_NUMBER_MAJOR__' => '747', |
| '__BUILD_NUMBER_MINOR__' => '64099', |
| '__BUILD_NUMBER_VARIANT__' => '64099', |
| '__FULL_BUILD_MAJOR_VERSION__' => '214747', |
| }, |
| }, |
| |
| # Use RC_PROJECTBUILDVERSION or RC_ProjectBuildVersion if our submission version |
| # does not have 4 or more tuples. |
| { |
| 'RC_ProjectSourceVersion' => '7600.1', |
| 'RC_ProjectBuildVersion' => '26', |
| expectedResults => { |
| '__VERSION_TEXT__' => '600.1', |
| '__BUILD_NUMBER__' => '600.1', |
| '__BUILD_NUMBER_SHORT__' => '600.1', |
| '__VERSION_MAJOR__' => '600', |
| '__VERSION_MINOR__' => '1000', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '26', |
| '__BUILD_NUMBER_MAJOR__' => '600', |
| '__BUILD_NUMBER_MINOR__' => '1000', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '7600', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '27', |
| 'RC_ProjectBuildVersion' => '14', |
| expectedResults => { |
| '__VERSION_TEXT__' => '27', |
| '__BUILD_NUMBER__' => '27', |
| '__BUILD_NUMBER_SHORT__' => '27', |
| '__VERSION_MAJOR__' => '27', |
| '__VERSION_MINOR__' => '0', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '14', |
| '__BUILD_NUMBER_MAJOR__' => '27', |
| '__BUILD_NUMBER_MINOR__' => '0', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '27', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '27', |
| 'RC_PROJECTBUILDVERSION' => '14', |
| expectedResults => { |
| '__VERSION_TEXT__' => '27', |
| '__BUILD_NUMBER__' => '27', |
| '__BUILD_NUMBER_SHORT__' => '27', |
| '__VERSION_MAJOR__' => '27', |
| '__VERSION_MINOR__' => '0', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '14', |
| '__BUILD_NUMBER_MAJOR__' => '27', |
| '__BUILD_NUMBER_MINOR__' => '0', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '27', |
| }, |
| }, |
| |
| { |
| 'RC_PROJECTSOURCEVERSION' => '27', |
| 'RC_ProjectBuildVersion' => '14', |
| expectedResults => { |
| '__VERSION_TEXT__' => '27', |
| '__BUILD_NUMBER__' => '27', |
| '__BUILD_NUMBER_SHORT__' => '27', |
| '__VERSION_MAJOR__' => '27', |
| '__VERSION_MINOR__' => '0', |
| '__VERSION_TINY__' => '0', |
| '__VERSION_BUILD__' => '14', |
| '__BUILD_NUMBER_MAJOR__' => '27', |
| '__BUILD_NUMBER_MINOR__' => '0', |
| '__BUILD_NUMBER_VARIANT__' => '0', |
| '__FULL_BUILD_MAJOR_VERSION__' => '27', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5300.4.3.2.1', |
| 'RC_ProjectBuildVersion' => '14', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300.4.3.2.1', |
| '__BUILD_NUMBER__' => '300.4.3.2.1', |
| '__BUILD_NUMBER_SHORT__' => '300.4.3.2.1', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2001', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2001', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| |
| { |
| 'RC_ProjectSourceVersion' => '5300.4.3.2.1', |
| 'RC_PROJECTBUILDVERSION' => '14', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300.4.3.2.1', |
| '__BUILD_NUMBER__' => '300.4.3.2.1', |
| '__BUILD_NUMBER_SHORT__' => '300.4.3.2.1', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2001', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2001', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| |
| { |
| 'RC_PROJECTSOURCEVERSION' => '5300.4.3.2.1', |
| 'RC_ProjectBuildVersion' => '14', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300.4.3.2.1', |
| '__BUILD_NUMBER__' => '300.4.3.2.1', |
| '__BUILD_NUMBER_SHORT__' => '300.4.3.2.1', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2001', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2001', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| |
| { |
| 'RC_PROJECTSOURCEVERSION' => '5300.4.3.2.1', |
| 'RC_PROJECTBUILDVERSION' => '14', |
| expectedResults => { |
| '__VERSION_TEXT__' => '300.4.3.2.1', |
| '__BUILD_NUMBER__' => '300.4.3.2.1', |
| '__BUILD_NUMBER_SHORT__' => '300.4.3.2.1', |
| '__VERSION_MAJOR__' => '300', |
| '__VERSION_MINOR__' => '4003', |
| '__VERSION_TINY__' => '2001', |
| '__VERSION_BUILD__' => '1', |
| '__BUILD_NUMBER_MAJOR__' => '300', |
| '__BUILD_NUMBER_MINOR__' => '4003', |
| '__BUILD_NUMBER_VARIANT__' => '2001', |
| '__FULL_BUILD_MAJOR_VERSION__' => '5300', |
| }, |
| }, |
| ); |
| |
| # This test should only be run on Windows |
| if ($^O ne 'MSWin32' && $^O ne 'cygwin') { |
| plan(tests => 1); |
| is(1, 1, 'do nothing for non-Windows builds.'); |
| exit 0; |
| } |
| |
| my $toolsPath = $ENV{'WEBKIT_LIBRARIES'}; |
| my $autoVersionScript = File::Spec->catfile($toolsPath, 'tools', 'scripts', 'auto-version.pl'); |
| |
| # Test can only be run if auto-version.pl exists |
| unless (-e $autoVersionScript) { |
| plan skip_all => 'do nothing for Windows builds lacking the auto version script.'; |
| exit 0; |
| } |
| |
| my $testCasesCount = scalar(@testCases) * 11; # 11 expected results |
| plan(tests => $testCasesCount); |
| |
| foreach my $testCase (@testCases) { |
| my $testOutputDir = tempdir(CLEANUP => 1); |
| if ($testCase->{'RC_ProjectSourceVersion'}) { |
| $ENV{RC_ProjectSourceVersion} = $testCase->{'RC_ProjectSourceVersion'}; |
| } elsif ($testCase->{'RC_PROJECTSOURCEVERSION'}) { |
| $ENV{RC_PROJECTSOURCEVERSION} = $testCase->{'RC_PROJECTSOURCEVERSION'}; |
| } else { |
| die ("Missing the RC_ProjectSourceVersion environment variable.\n"); |
| } |
| |
| if ($testCase->{'RC_ProjectBuildVersion'}) { |
| $ENV{RC_ProjectBuildVersion} = $testCase->{'RC_ProjectBuildVersion'}; |
| } elsif ($testCase->{'RC_PROJECTBUILDVERSION'}) { |
| $ENV{RC_PROJECTBUILDVERSION} = $testCase->{'RC_PROJECTBUILDVERSION'}; |
| } |
| |
| `perl $autoVersionScript $testOutputDir`; |
| |
| delete $ENV{RC_ProjectSourceVersion}; |
| delete $ENV{RC_PROJECTSOURCEVERSION}; |
| delete $ENV{RC_ProjectBuildVersion}; |
| delete $ENV{RC_PROJECTBUILDVERSION}; |
| |
| my $expectedResults = $testCase->{expectedResults}; |
| |
| my $outputFile = File::Spec->catfile($testOutputDir, 'include', 'autoversion.h'); |
| open(TEST_OUTPUT, '<', $outputFile) or die "Unable to open $outputFile: $!"; |
| |
| while (my $line = <TEST_OUTPUT>) { |
| foreach my $expectedResultKey (keys %$expectedResults) { |
| if ($line !~ m/$expectedResultKey/) { |
| next; |
| } |
| |
| $line =~ s/#define $expectedResultKey//; |
| $line =~ s/^\s*(.*)\s*$/$1/; |
| $line =~ s/^"(.*)"$/$1/; |
| chomp($line); |
| |
| my $expectedResultValue = $expectedResults->{$expectedResultKey}; |
| if ($testCase->{'RC_ProjectSourceVersion'}) { |
| is($line, $expectedResultValue, "$testCase->{'RC_ProjectSourceVersion'}: $expectedResultKey"); |
| } else { |
| is($line, $expectedResultValue, "$testCase->{'RC_PROJECTSOURCEVERSION'}: $expectedResultKey"); |
| } |
| } |
| } |
| |
| close(TEST_OUTPUT); |
| } |