Fix test_sysconfig when prefix != exec-prefix (#9100).

I tested this manually; it would be great to have buildbots using
installed Pythons, including Pythons configured with different prefix
and exec-prefix.

Reported by Zsolt Cserna.
This commit is contained in:
Éric Araujo 2011-10-08 01:55:07 +02:00
parent 47a4521ece
commit de504550af

View File

@ -1,9 +1,5 @@
"""Tests for 'site'. """Tests for sysconfig."""
Tests assume the initial paths in sys.path once the interpreter has begun
executing have not been removed.
"""
import unittest import unittest
import sys import sys
import os import os
@ -11,7 +7,7 @@ import subprocess
import shutil import shutil
from copy import copy, deepcopy from copy import copy, deepcopy
from test.support import (run_unittest, TESTFN, unlink, get_attribute, from test.support import (run_unittest, TESTFN, unlink,
captured_stdout, skip_unless_symlink) captured_stdout, skip_unless_symlink)
import sysconfig import sysconfig
@ -265,8 +261,15 @@ class TestSysConfig(unittest.TestCase):
# is similar to the global posix_prefix one # is similar to the global posix_prefix one
base = get_config_var('base') base = get_config_var('base')
user = get_config_var('userbase') user = get_config_var('userbase')
# the global scheme mirrors the distinction between prefix and
# exec-prefix but not the user scheme, so we have to adapt the paths
# before comparing (issue #9100)
adapt = sys.prefix != sys.exec_prefix
for name in ('stdlib', 'platstdlib', 'purelib', 'platlib'): for name in ('stdlib', 'platstdlib', 'purelib', 'platlib'):
global_path = get_path(name, 'posix_prefix') global_path = get_path(name, 'posix_prefix')
if adapt:
global_path = global_path.replace(sys.exec_prefix, sys.prefix)
base = base.replace(sys.exec_prefix, sys.prefix)
user_path = get_path(name, 'posix_user') user_path = get_path(name, 'posix_user')
self.assertEqual(user_path, global_path.replace(base, user, 1)) self.assertEqual(user_path, global_path.replace(base, user, 1))