diff options
Diffstat (limited to 'tools/build/v2/test/file_name_handling.py')
-rwxr-xr-x | tools/build/v2/test/file_name_handling.py | 255 |
1 files changed, 0 insertions, 255 deletions
diff --git a/tools/build/v2/test/file_name_handling.py b/tools/build/v2/test/file_name_handling.py deleted file mode 100755 index 8e59e6821a..0000000000 --- a/tools/build/v2/test/file_name_handling.py +++ /dev/null @@ -1,255 +0,0 @@ -#!/usr/bin/python - -# Copyright 2008 Jurko Gospodnetic -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) - -# Tests Boost Jam & Boost Build's source & target file name handling. Originally -# added as a regression test for a bug causing versions included in the Boost -# library 1.35 release (and earlier) not handling Windows short file names -# correctly. Also tests handling target file names containing spaces. - -# Implementation notes: -# -# We expect Boost Jam to automatically update the 'all' target when no target -# has been explicitly specified on the command line. -# -# Windows short & long file names can not be matched until the file in -# question actually exists so we need to create the file before running Boost -# Jam. -# -# Currently Windows short file names are hardcoded but in case this proves -# insufficient we should use the GetShortPathName() Windows API to get the -# correct short file for a given long file name. -# (30.04.2008.) (Jurko) - -import BoostBuild -import os -import time - - -################################################################################ -# -# prepare_file() -# -------------- -# -################################################################################ - -def prepare_file(tester, target_name, age_in_seconds=0): - """Prepares a new file with the given name, optionally setting its last - access and modification timestamps to the given number of seconds in the - history. - """ - tester.write( target_name, "Original file content." ) - if ( ( not age_in_seconds is None ) and ( age_in_seconds != 0 ) ): - t = time.time() - age_in_seconds - os.utime( tester.native_file_name( target_name ), ( t, t ) ) - - -################################################################################ -# -# test_simple_file_names() -# ------------------------ -# -################################################################################ - -def test_simple_file_names(): - """Runs simple file name handling that is not expected to fail anywhere. Not - really needed for regular testing but the test is really fast and its - content may be used for comparing to other more complex test functions in - this module which test the same system but with some potentially more - problematic file names. - """ - t = BoostBuild.Tester(pass_toolset=0) - - prepare_file(t, "source.txt" ) - prepare_file(t, "target.txt" , 120) - prepare_file(t, "target_noupdate.txt", 240) - - t.write("testScript.jam", """ -actions create-file -{ - echo "Modified file content ($(1:E=""))."> "$(1:E="")" -} - -DEPENDS all : standaloneTarget.txt ; -create-file standaloneTarget.txt : all ; - -DEPENDS all : target.txt ; -DEPENDS target.txt : source.txt ; -create-file target.txt ; - -NOUPDATE target_noupdate.txt ; -DEPENDS all : target_noupdate.txt ; -DEPENDS target_noupdate.txt : source.txt ; -create-file target_noupdate.txt ; - -create-file shouldNotBeCreated1 ; -create-file shouldNotBeCreated2 ; -create-file shouldNotBeCreated3 ; -""") - - t.run_build_system("-ftestScript.jam") - t.expect_addition("standaloneTarget.txt") - t.expect_modification("target.txt") - t.expect_nothing_more() - - t.cleanup() - - -################################################################################ -# -# test_short_file_name_with_action() -# ---------------------------------- -# -################################################################################ - -def test_short_file_name_with_action(): - """Tests how Boost Jam handles the case when a Windows short file name is - passed to a Boost Jam action. - """ - if ( not BoostBuild.windows ): - return - - t = BoostBuild.Tester(pass_toolset=0) - - long_file_name1 = "1__target that should be rebuilt.txt" - long_file_name2 = "2__target that should be rebuilt.txt" - short_file_name2 = "2__tar~1.txt" - - prepare_file(t, long_file_name1) - prepare_file(t, long_file_name2) - - t.write("testScript.jam", """ -actions create-file -{ - echo Modified file content ($(1:E="")).> "$(1:E="")" -} - -ALWAYS "%(long_file_name1)s" ; -DEPENDS all : "%(long_file_name1)s" ; -create-file "%(long_file_name1)s" ; - -ALWAYS "%(long_file_name2)s" ; -DEPENDS all : "%(long_file_name2)s" ; -create-file "%(short_file_name2)s" ; -""" % {'long_file_name1': long_file_name1, - 'long_file_name2' : long_file_name2, - 'short_file_name2' : short_file_name2}) - - t.run_build_system("-ftestScript.jam") - t.expect_modification(long_file_name1) - t.expect_modification(long_file_name2) - t.expect_nothing_more() - - t.cleanup() - - -################################################################################ -# -# test_short_file_name_with_ALWAYS() -# ---------------------------------- -# -################################################################################ - -def test_short_file_name_with_ALWAYS(): - """Tests how Boost Jam handles the case when a Windows short file name is - passed to the builtin ALWAYS rule. - """ - if ( not BoostBuild.windows ): - return - - t = BoostBuild.Tester(pass_toolset=0) - - long_file_name1 = "1__target that should be rebuilt.txt" - long_file_name2 = "2__target that should be rebuilt.txt" - short_file_name2 = "2__tar~1.txt" - - prepare_file(t, long_file_name1) - prepare_file(t, long_file_name2) - - t.write("testScript.jam", """ -actions create-file -{ - echo Modified file content ($(1:E="")).> "$(1:E="")" -} - -ALWAYS "%(long_file_name1)s" ; -DEPENDS all : "%(long_file_name1)s" ; -create-file "%(long_file_name1)s" ; - -ALWAYS "%(short_file_name2)s" ; -DEPENDS all : "%(long_file_name2)s" ; -create-file "%(long_file_name2)s" ; -""" % {'long_file_name1': long_file_name1, - 'long_file_name2' : long_file_name2, - 'short_file_name2' : short_file_name2}) - - t.run_build_system("-ftestScript.jam") - t.expect_modification(long_file_name1) - t.expect_modification(long_file_name2) - t.expect_nothing_more() - - t.cleanup() - - -################################################################################ -# -# test_short_file_name_with_NOUPDATE() -# ------------------------------------ -# -################################################################################ - -def test_short_file_name_with_NOUPDATE(): - """Tests how Boost Jam handles the case when a Windows short file name is - passed to the builtin NOUPDATE rule. - """ - if ( not BoostBuild.windows ): - return - - t = BoostBuild.Tester(pass_toolset=0) - - long_file_name1 = "1__target that should be rebuilt.txt" - long_file_name2 = "2__target that should not be rebuilt.txt" - short_file_name2 = "2__tar~1.txt" - - prepare_file(t, "source.txt" ) - prepare_file(t, long_file_name1, 120) - prepare_file(t, long_file_name2, 120) - - t.write("testScript.jam", """ -actions create-file -{ - echo Modified file content ($(1:E="")).> "$(1:E="")" -} - -DEPENDS all : "%(long_file_name1)s" ; -DEPENDS "%(long_file_name1)s" : source.txt ; -create-file "%(long_file_name1)s" ; - -NOUPDATE "%(short_file_name2)s" ; -DEPENDS all : "%(long_file_name2)s" ; -DEPENDS "%(long_file_name2)s" : source.txt ; -create-file "%(long_file_name2)s" ; -""" % {'long_file_name1': long_file_name1, - 'long_file_name2' : long_file_name2, - 'short_file_name2' : short_file_name2}) - - t.run_build_system("-ftestScript.jam") - t.expect_modification(long_file_name1) - t.expect_nothing_more() - - t.cleanup() - - -################################################################################ -# -# main() -# ------ -# -################################################################################ - -test_simple_file_names() -test_short_file_name_with_action() -test_short_file_name_with_ALWAYS() -test_short_file_name_with_NOUPDATE() |