summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/BuilderTests.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/BuilderTests.py')
-rw-r--r--src/engine/SCons/BuilderTests.py397
1 files changed, 96 insertions, 301 deletions
diff --git a/src/engine/SCons/BuilderTests.py b/src/engine/SCons/BuilderTests.py
index 233336c..2075bf0 100644
--- a/src/engine/SCons/BuilderTests.py
+++ b/src/engine/SCons/BuilderTests.py
@@ -34,7 +34,6 @@ import os.path
import sys
import types
import unittest
-import UserList
import TestCmd
@@ -55,9 +54,6 @@ test = TestCmd.TestCmd(workdir = '')
outfile = test.workpath('outfile')
outfile2 = test.workpath('outfile2')
-infile = test.workpath('infile')
-test.write(infile, "infile\n")
-
show_string = None
scons_env = SCons.Environment.Environment()
@@ -75,7 +71,6 @@ class Environment:
global env_arg2nodes_called
env_arg2nodes_called = None
self.scanner = None
- self.fs = SCons.Node.FS.FS()
def subst(self, s):
if not SCons.Util.is_String(s):
return s
@@ -87,14 +82,6 @@ class Environment:
except IndexError:
pass
return self.d.get(s, s)
- def subst_target_source(self, string, raw=0, target=None,
- source=None, dict=None, conv=None):
- return SCons.Util.scons_subst(string, self, raw, target,
- source, dict, conv)
- def subst_list(self, string, raw=0, target=None,
- source=None, dict=None, conv=None):
- return SCons.Util.scons_subst_list(string, self, raw, target,
- source, dict, conv)
def arg2nodes(self, args, factory):
global env_arg2nodes_called
env_arg2nodes_called = 1
@@ -106,8 +93,6 @@ class Environment:
a = factory(a)
list.append(a)
return list
- def get_factory(self, factory):
- return factory or self.fs.File
def get_scanner(self, ext):
return self.scanner
def Dictionary(self):
@@ -127,7 +112,6 @@ class Environment:
def Override(self, overrides):
env = apply(Environment, (), self.d)
env.d.update(overrides)
- env.scanner = self.scanner
return env
def _update(self, dict):
self.d.update(dict)
@@ -141,32 +125,23 @@ class Environment:
d['SOURCES'] = ['__s1__', '__s2__', '__s3__', '__s4__', '__s5__', '__s6__']
d['SOURCE'] = d['SOURCES'][0]
return d
- def __cmp__(self, other):
- return cmp(self.scanner, other.scanner) or cmp(self.d, other.d)
-
-class MyAction:
- def __init__(self, action):
- self.action = action
- def get_executor(self, env, overrides, tlist, slist, executor_kw):
- return ['executor'] + [self.action]
class MyNode_without_target_from_source:
def __init__(self, name):
self.name = name
self.sources = []
self.builder = None
- self.is_explicit = None
self.side_effect = 0
+ self.source_scanner = None
+ self.backup_source_scanner = None
def __str__(self):
return self.name
def builder_set(self, builder):
self.builder = builder
def has_builder(self):
return not self.builder is None
- def set_explicit(self, is_explicit):
- self.is_explicit = is_explicit
def has_explicit_builder(self):
- return self.is_explicit
+ return not self.builder is None and self.builder.is_explicit
def env_set(self, env, safe=0):
self.env = env
def add_source(self, source):
@@ -231,11 +206,8 @@ class BuilderTestCase(unittest.TestCase):
target_factory=MyNode,
source_factory=MyNode)
- tgt = builder(env, source=[])
- assert tgt == [], tgt
-
- n1 = MyNode("n1")
- n2 = MyNode("n2")
+ n1 = MyNode("n1");
+ n2 = MyNode("n2");
builder(env, target = n1, source = n2)
assert env_arg2nodes_called
assert n1.env == env, n1.env
@@ -244,48 +216,15 @@ class BuilderTestCase(unittest.TestCase):
assert n1.executor, "no executor found"
assert not hasattr(n2, 'env')
- l = [1]
- ul = UserList.UserList([2])
- try:
- l.extend(ul)
- except TypeError:
- def mystr(l):
- return str(map(str, l))
- else:
- mystr = str
-
- nnn1 = MyNode("nnn1")
- nnn2 = MyNode("nnn2")
- tlist = builder(env, target = [nnn1, nnn2], source = [])
- s = mystr(tlist)
- assert s == "['nnn1', 'nnn2']", s
- l = map(str, tlist)
- assert l == ['nnn1', 'nnn2'], l
-
- tlist = builder(env, target = 'n3', source = 'n4')
- s = mystr(tlist)
- assert s == "['n3']", s
- target = tlist[0]
- l = map(str, tlist)
- assert l == ['n3'], l
+ target = builder(env, target = 'n3', source = 'n4')[0]
assert target.name == 'n3'
assert target.sources[0].name == 'n4'
- tlist = builder(env, target = 'n4 n5', source = ['n6 n7'])
- s = mystr(tlist)
- assert s == "['n4 n5']", s
- l = map(str, tlist)
- assert l == ['n4 n5'], l
- target = tlist[0]
+ target = builder(env, target = 'n4 n5', source = ['n6 n7'])[0]
assert target.name == 'n4 n5'
assert target.sources[0].name == 'n6 n7'
- tlist = builder(env, target = ['n8 n9'], source = 'n10 n11')
- s = mystr(tlist)
- assert s == "['n8 n9']", s
- l = map(str, tlist)
- assert l == ['n8 n9'], l
- target = tlist[0]
+ target = builder(env, target = ['n8 n9'], source = 'n10 n11')[0]
assert target.name == 'n8 n9'
assert target.sources[0].name == 'n10 n11'
@@ -315,7 +254,7 @@ class BuilderTestCase(unittest.TestCase):
n20 = MyNode_without_target_from_source('n20')
flag = 0
try:
- target = builder(env, None, source=n20)
+ target = builder(env, source=n20)
except SCons.Errors.UserError, e:
flag = 1
assert flag, "UserError should be thrown if a source node can't create a target."
@@ -325,7 +264,7 @@ class BuilderTestCase(unittest.TestCase):
source_factory=MyNode,
prefix='p-',
suffix='.s')
- target = builder(env, None, source='n21')[0]
+ target = builder(env, source='n21')[0]
assert target.name == 'p-n21.s', target
builder = SCons.Builder.Builder(misspelled_action="foo",
@@ -392,29 +331,6 @@ class BuilderTestCase(unittest.TestCase):
builder = SCons.Builder.Builder(generator=generator)
assert builder.action.generator == generator
- def test_get_name(self):
- """Test the get_name() method
- """
-
- def test_get_single_executor(self):
- """Test the get_single_executor() method
- """
- b = SCons.Builder.Builder(action='foo')
- x = b.get_single_executor({}, [], [], {})
- assert not x is None, x
-
- def test_get_multi_executor(self):
- """Test the get_multi_executor() method
- """
- b = SCons.Builder.Builder(action='foo', multi=1)
- t1 = MyNode('t1')
- s1 = MyNode('s1')
- s2 = MyNode('s2')
- x1 = b.get_multi_executor({}, [t1], [s1], {})
- t1.executor = x1
- x2 = b.get_multi_executor({}, [t1], [s2], {})
- assert x1 is x2, "%s is not %s" % (repr(x1), repr(x2))
-
def test_cmp(self):
"""Test simple comparisons of Builder objects
"""
@@ -496,10 +412,10 @@ class BuilderTestCase(unittest.TestCase):
tgt = builder(env, target = 'tgt2a tgt2b', source = 'src2')[0]
assert tgt.path == 'libtgt2a tgt2b', \
"Target has unexpected name: %s" % tgt.path
- tgt = builder(env, target = None, source = 'src3')[0]
+ tgt = builder(env, source = 'src3')[0]
assert tgt.path == 'libsrc3', \
"Target has unexpected name: %s" % tgt.path
- tgt = builder(env, target = None, source = 'lib/src4')[0]
+ tgt = builder(env, source = 'lib/src4')[0]
assert tgt.path == os.path.join('lib', 'libsrc4'), \
"Target has unexpected name: %s" % tgt.path
tgt = builder(env, target = 'lib/tgt5', source = 'lib/src5')[0]
@@ -523,35 +439,19 @@ class BuilderTestCase(unittest.TestCase):
'$FOO' : 'foo-',
'.zzz' : my_emit},
action = '')
- tgt = builder(my_env, target = None, source = 'f1')[0]
+ tgt = builder(my_env, source = 'f1')[0]
assert tgt.path == 'default-f1', tgt.path
- tgt = builder(my_env, target = None, source = 'f2.c')[0]
+ tgt = builder(my_env, source = 'f2.c')[0]
assert tgt.path == 'default-f2', tgt.path
- tgt = builder(my_env, target = None, source = 'f3.in')[0]
+ tgt = builder(my_env, source = 'f3.in')[0]
assert tgt.path == 'out-f3', tgt.path
- tgt = builder(my_env, target = None, source = 'f4.x')[0]
+ tgt = builder(my_env, source = 'f4.x')[0]
assert tgt.path == 'y-f4', tgt.path
- tgt = builder(my_env, target = None, source = 'f5.foo')[0]
+ tgt = builder(my_env, source = 'f5.foo')[0]
assert tgt.path == 'foo-f5', tgt.path
- tgt = builder(my_env, target = None, source = 'f6.zzz')[0]
+ tgt = builder(my_env, source = 'f6.zzz')[0]
assert tgt.path == 'emit-f6', tgt.path
- def test_set_suffix(self):
- """Test the set_suffix() method"""
- b = SCons.Builder.Builder(action='')
- env = Environment(XSUFFIX = '.x')
-
- s = b.get_suffix(env)
- assert s == '', s
-
- b.set_suffix('.foo')
- s = b.get_suffix(env)
- assert s == '.foo', s
-
- b.set_suffix('$XSUFFIX')
- s = b.get_suffix(env)
- assert s == '.x', s
-
def test_src_suffix(self):
"""Test Builder creation with a specified source file suffix
@@ -592,7 +492,7 @@ class BuilderTestCase(unittest.TestCase):
b6 = SCons.Builder.Builder(action = '',
src_suffix='_src.a',
suffix='.b')
- tgt = b6(env, target=None, source='foo_src.a')
+ tgt = b6(env, source='foo_src.a')
assert str(tgt[0]) == 'foo.b', str(tgt[0])
b7 = SCons.Builder.Builder(action = '',
@@ -601,16 +501,16 @@ class BuilderTestCase(unittest.TestCase):
b8 = SCons.Builder.Builder(action = '',
src_builder=b7,
suffix='.c')
- tgt = b8(env, target=None, source='foo_source.a')
+ tgt = b8(env, source='foo_source.a')
assert str(tgt[0]) == 'foo_obj.c', str(tgt[0])
- src = env.fs.File('foo_source.a')
- tgt = b8(env, target=None, source=src)
+ src = SCons.Node.FS.default_fs.File('foo_source.a')
+ tgt = b8(env, source=src)
assert str(tgt[0]) == 'foo_obj.c', str(tgt[0])
b9 = SCons.Builder.Builder(action={'_src.a' : 'srcaction'},
suffix='.c')
b9.add_action('_altsrc.b', 'altaction')
- tgt = b9(env, target=None, source='foo_altsrc.b')
+ tgt = b9(env, source='foo_altsrc.b')
assert str(tgt[0]) == 'foo.c', str(tgt[0])
def test_suffix(self):
@@ -630,7 +530,7 @@ class BuilderTestCase(unittest.TestCase):
tgt = builder(env, target = 'tgt4a tgt4b', source = 'src4')[0]
assert tgt.path == 'tgt4a tgt4b.o', \
"Target has unexpected name: %s" % tgt.path
- tgt = builder(env, target = None, source = 'src5')[0]
+ tgt = builder(env, source = 'src5')[0]
assert tgt.path == 'src5.o', \
"Target has unexpected name: %s" % tgt.path
@@ -651,17 +551,17 @@ class BuilderTestCase(unittest.TestCase):
'$BAR' : '.new',
'.zzz' : my_emit},
action='')
- tgt = builder(my_env, target = None, source = 'f1')[0]
+ tgt = builder(my_env, source = 'f1')[0]
assert tgt.path == 'f1.default', tgt.path
- tgt = builder(my_env, target = None, source = 'f2.c')[0]
+ tgt = builder(my_env, source = 'f2.c')[0]
assert tgt.path == 'f2.default', tgt.path
- tgt = builder(my_env, target = None, source = 'f3.in')[0]
+ tgt = builder(my_env, source = 'f3.in')[0]
assert tgt.path == 'f3.out', tgt.path
- tgt = builder(my_env, target = None, source = 'f4.x')[0]
+ tgt = builder(my_env, source = 'f4.x')[0]
assert tgt.path == 'f4.y', tgt.path
- tgt = builder(my_env, target = None, source = 'f5.bar')[0]
+ tgt = builder(my_env, source = 'f5.bar')[0]
assert tgt.path == 'f5.new', tgt.path
- tgt = builder(my_env, target = None, source = 'f6.zzz')[0]
+ tgt = builder(my_env, source = 'f6.zzz')[0]
assert tgt.path == 'f6.emit', tgt.path
def test_single_source(self):
@@ -689,7 +589,7 @@ class BuilderTestCase(unittest.TestCase):
tgt.prepare()
tgt.build()
assert env['CNT'][0] == 2
- tgts = builder(env, None, infiles[2:4])
+ tgts = builder(env, infiles[2:4])
for t in tgts: t.prepare()
tgts[0].build()
tgts[1].build()
@@ -721,11 +621,7 @@ class BuilderTestCase(unittest.TestCase):
env = Environment()
builder = SCons.Builder.Builder(action = function2)
-
- tgts = builder(env, source=[])
- assert tgts == [], tgts
-
- tgts = builder(env, target = [outfile, outfile2], source = infile)
+ tgts = builder(env, target = [outfile, outfile2], source = 'foo')
for t in tgts:
t.prepare()
try:
@@ -749,7 +645,7 @@ class BuilderTestCase(unittest.TestCase):
return 1
builder = SCons.Builder.Builder(action = function3)
- tgts = builder(env, target = [sub1_out, sub2_out], source = infile)
+ tgts = builder(env, target = [sub1_out, sub2_out], source = 'foo')
for t in tgts:
t.prepare()
try:
@@ -769,29 +665,23 @@ class BuilderTestCase(unittest.TestCase):
builder1 = SCons.Builder.Builder(action='foo',
src_suffix='.bar',
suffix='.foo')
- builder2 = SCons.Builder.MultiStepBuilder(action=MyAction('act'),
+ builder2 = SCons.Builder.MultiStepBuilder(action='bar',
src_builder = builder1,
src_suffix = '.foo')
- tgt = builder2(env, source=[])
- assert tgt == [], tgt
-
tgt = builder2(env, target='baz',
source=['test.bar', 'test2.foo', 'test3.txt'])[0]
- s = str(tgt)
- assert s == 'baz', s
- s = map(str, tgt.sources)
- assert s == ['test.foo', 'test2.foo', 'test3.txt'], s
- s = map(str, tgt.sources[0].sources)
- assert s == ['test.bar'], s
-
- tgt = builder2(env, None, 'aaa.bar')[0]
- s = str(tgt)
- assert s == 'aaa', s
- s = map(str, tgt.sources)
- assert s == ['aaa.foo'], s
- s = map(str, tgt.sources[0].sources)
- assert s == ['aaa.bar'], s
+ assert str(tgt.sources[0]) == 'test.foo', str(tgt.sources[0])
+ assert str(tgt.sources[0].sources[0]) == 'test.bar', \
+ str(tgt.sources[0].sources[0])
+ assert str(tgt.sources[1]) == 'test2.foo', str(tgt.sources[1])
+ assert str(tgt.sources[2]) == 'test3.txt', str(tgt.sources[2])
+
+ tgt = builder2(env, 'aaa.bar')[0]
+ assert str(tgt) == 'aaa', str(tgt)
+ assert str(tgt.sources[0]) == 'aaa.foo', str(tgt.sources[0])
+ assert str(tgt.sources[0].sources[0]) == 'aaa.bar', \
+ str(tgt.sources[0].sources[0])
builder3 = SCons.Builder.MultiStepBuilder(action = 'foo',
src_builder = 'xyzzy',
@@ -801,23 +691,21 @@ class BuilderTestCase(unittest.TestCase):
builder4 = SCons.Builder.Builder(action='bld4',
src_suffix='.i',
suffix='_wrap.c')
- builder5 = SCons.Builder.MultiStepBuilder(action=MyAction('act'),
+ builder5 = SCons.Builder.MultiStepBuilder(action='bld5',
src_builder=builder4,
suffix='.obj',
src_suffix='.c')
- builder6 = SCons.Builder.MultiStepBuilder(action=MyAction('act'),
+ builder6 = SCons.Builder.MultiStepBuilder(action='bld6',
src_builder=builder5,
suffix='.exe',
src_suffix='.obj')
tgt = builder6(env, 'test', 'test.i')[0]
- s = str(tgt)
- assert s == 'test.exe', s
- s = map(str, tgt.sources)
- assert s == ['test_wrap.obj'], s
- s = map(str, tgt.sources[0].sources)
- assert s == ['test_wrap.c'], s
- s = map(str, tgt.sources[0].sources[0].sources)
- assert s == ['test.i'], s
+ assert str(tgt) == 'test.exe', str(tgt)
+ assert str(tgt.sources[0]) == 'test_wrap.obj', str(tgt.sources[0])
+ assert str(tgt.sources[0].sources[0]) == 'test_wrap.c', \
+ str(tgt.sources[0].sources[0])
+ assert str(tgt.sources[0].sources[0].sources[0]) == 'test.i', \
+ str(tgt.sources[0].sources[0].sources[0])
def test_CompositeBuilder(self):
"""Testing CompositeBuilder class."""
@@ -829,21 +717,15 @@ class BuilderTestCase(unittest.TestCase):
'.bar' : func_action,
'$BAR_SUFFIX' : func_action,
'$FOO_SUFFIX' : func_action })
-
- tgt = builder(env, source=[])
- assert tgt == [], tgt
assert isinstance(builder, SCons.Builder.CompositeBuilder)
assert isinstance(builder.action, SCons.Action.CommandGeneratorAction)
-
tgt = builder(env, target='test1', source='test1.foo')[0]
assert isinstance(tgt.builder, SCons.Builder.BuilderBase)
assert tgt.builder.action is builder.action
-
tgt = builder(env, target='test2', source='test1.bar')[0]
assert isinstance(tgt.builder, SCons.Builder.BuilderBase)
assert tgt.builder.action is builder.action
-
flag = 0
tgt = builder(env, target='test3', source=['test2.bar', 'test1.foo'])[0]
try:
@@ -970,8 +852,8 @@ class BuilderTestCase(unittest.TestCase):
source_scanner=sscan,
action='')
tgt = builder(env, target='foo2', source='bar')[0]
- assert tgt.builder.target_scanner == tscan, tgt.builder.target_scanner
- assert tgt.builder.source_scanner == sscan, tgt.builder.source_scanner
+ assert tgt.target_scanner == tscan, tgt.target_scanner
+ assert tgt.source_scanner == sscan, tgt.source_scanner
builder1 = SCons.Builder.Builder(action='foo',
src_suffix='.bar',
@@ -981,8 +863,8 @@ class BuilderTestCase(unittest.TestCase):
target_scanner = tscan,
source_scanner = tscan)
tgt = builder2(env, target='baz2', source='test.bar test2.foo test3.txt')[0]
- assert tgt.builder.target_scanner == tscan, tgt.builder.target_scanner
- assert tgt.builder.source_scanner == tscan, tgt.builder.source_scanner
+ assert tgt.target_scanner == tscan, tgt.target_scanner
+ assert tgt.source_scanner == tscan, tgt.source_scanner
def test_actual_scanner(self):
"""Test usage of actual Scanner objects."""
@@ -1008,84 +890,28 @@ class BuilderTestCase(unittest.TestCase):
return 'TestScannerkey'
def instance(self, env):
return self
- def select(self, node):
- return self
- name = 'TestScanner'
- def __str__(self):
- return self.name
scanner = TestScanner()
builder = SCons.Builder.Builder(action='action')
# With no scanner specified, source_scanner and
# backup_source_scanner are None.
- bar_y = MyNode('bar.y')
env1 = Environment()
tgt = builder(env1, target='foo1.x', source='bar.y')[0]
src = tgt.sources[0]
- assert tgt.builder.target_scanner != scanner, tgt.builder.target_scanner
- assert tgt.builder.source_scanner is None, tgt.builder.source_scanner
- assert tgt.get_source_scanner(bar_y) is None, tgt.get_source_scanner(bar_y)
- assert not src.has_builder(), src.has_builder()
- assert src.get_source_scanner(bar_y) is None, src.get_source_scanner(bar_y)
-
- # An Environment that has suffix-specified SCANNERS should
- # provide a source scanner to the target.
- class EnvTestScanner:
- def key(self, env):
- return '.y'
- def instance(self, env):
- return self
- name = 'EnvTestScanner'
- def __str__(self):
- return self.name
- def select(self, node):
- return self
- def path(self, env, dir=None):
- return ()
- def __call__(self, node, env, path):
- return []
- env3 = Environment(SCANNERS = [EnvTestScanner()])
- env3.scanner = EnvTestScanner() # test env's version of SCANNERS
- tgt = builder(env3, target='foo2.x', source='bar.y')[0]
+ assert tgt.target_scanner != scanner, tgt.target_scanner
+ assert src.source_scanner is None, src.source_scanner
+ assert src.backup_source_scanner is None, src.backup_source_scanner
+
+ # Later use of the same source file with an environment that
+ # has a scanner must still set the scanner.
+ env2 = Environment()
+ env2.scanner = scanner
+ tgt = builder(env2, target='foo2.x', source='bar.y')[0]
src = tgt.sources[0]
- assert tgt.builder.target_scanner != scanner, tgt.builder.target_scanner
- assert not tgt.builder.source_scanner, tgt.builder.source_scanner
- assert tgt.get_source_scanner(bar_y), tgt.get_source_scanner(bar_y)
- assert str(tgt.get_source_scanner(bar_y)) == 'EnvTestScanner', tgt.get_source_scanner(bar_y)
- assert not src.has_builder(), src.has_builder()
- assert src.get_source_scanner(bar_y) is None, src.get_source_scanner(bar_y)
-
- # Can't simply specify the scanner as a builder argument; it's
- # global to all invocations of this builder.
- tgt = builder(env3, target='foo3.x', source='bar.y', source_scanner = scanner)[0]
- src = tgt.sources[0]
- assert tgt.builder.target_scanner != scanner, tgt.builder.target_scanner
- assert not tgt.builder.source_scanner, tgt.builder.source_scanner
- assert tgt.get_source_scanner(bar_y), tgt.get_source_scanner(bar_y)
- assert str(tgt.get_source_scanner(bar_y)) == 'EnvTestScanner', tgt.get_source_scanner(bar_y)
- assert not src.has_builder(), src.has_builder()
- assert src.get_source_scanner(bar_y) is None, src.get_source_scanner(bar_y)
-
- # Now use a builder that actually has scanners and ensure that
- # the target is set accordingly (using the specified scanner
- # instead of the Environment's scanner)
- builder = SCons.Builder.Builder(action='action',
- source_scanner=scanner,
- target_scanner=scanner)
- tgt = builder(env3, target='foo4.x', source='bar.y')[0]
- src = tgt.sources[0]
- assert tgt.builder.target_scanner == scanner, tgt.builder.target_scanner
- assert tgt.builder.source_scanner, tgt.builder.source_scanner
- assert tgt.builder.source_scanner == scanner, tgt.builder.source_scanner
- assert str(tgt.builder.source_scanner) == 'TestScanner', str(tgt.builder.source_scanner)
- assert tgt.get_source_scanner(bar_y), tgt.get_source_scanner(bar_y)
- assert tgt.get_source_scanner(bar_y) == scanner, tgt.get_source_scanner(bar_y)
- assert str(tgt.get_source_scanner(bar_y)) == 'TestScanner', tgt.get_source_scanner(bar_y)
- assert not src.has_builder(), src.has_builder()
- assert src.get_source_scanner(bar_y) is None, src.get_source_scanner(bar_y)
-
-
+ assert tgt.target_scanner != scanner, tgt.target_scanner
+ assert src.source_scanner is None, src.source_scanner
+ assert src.backup_source_scanner == scanner, src.backup_source_scanner
def test_Builder_API(self):
"""Test Builder interface.
@@ -1095,8 +921,8 @@ class BuilderTestCase(unittest.TestCase):
forms of component specifications."""
builder = SCons.Builder.Builder()
- env = Environment(BUILDERS={'Bld':builder})
+ env = Environment(BUILDERS={'Bld':builder})
r = builder.get_name(env)
assert r == 'Bld', r
r = builder.get_prefix(env)
@@ -1111,34 +937,23 @@ class BuilderTestCase(unittest.TestCase):
assert r == ['foo'], r
# src_suffix can be a single string or a list of strings
- # src_suffixes() caches its return value, so we use a new
- # Builder each time we do any of these tests
-
- bld = SCons.Builder.Builder()
- env = Environment(BUILDERS={'Bld':bld})
- bld.set_src_suffix('.foo')
- r = bld.get_src_suffix(env)
+ builder.set_src_suffix('.foo')
+ r = builder.get_src_suffix(env)
assert r == '.foo', r
- r = bld.src_suffixes(env)
+ r = builder.src_suffixes(env)
assert r == ['.foo'], r
- bld = SCons.Builder.Builder()
- env = Environment(BUILDERS={'Bld':bld})
-
- bld.set_src_suffix(['.foo', '.bar'])
- r = bld.get_src_suffix(env)
+ builder.set_src_suffix(['.foo', '.bar'])
+ r = builder.get_src_suffix(env)
assert r == '.foo', r
- r = bld.src_suffixes(env)
+ r = builder.src_suffixes(env)
assert r == ['.foo', '.bar'], r
- bld = SCons.Builder.Builder()
- env = Environment(BUILDERS={'Bld':bld})
-
- bld.set_src_suffix(['.bar', '.foo'])
- r = bld.get_src_suffix(env)
+ builder.set_src_suffix(['.bar', '.foo'])
+ r = builder.get_src_suffix(env)
assert r == '.bar', r
- r = bld.src_suffixes(env)
+ r = builder.src_suffixes(env)
assert r == ['.bar', '.foo'], r
# adjust_suffix normalizes the suffix, adding a `.' if needed
@@ -1211,8 +1026,8 @@ class BuilderTestCase(unittest.TestCase):
assert r == '.D', r
builder = SCons.Builder.Builder(prefix='A_', suffix={}, action={})
- env = Environment(BUILDERS={'Bld':builder})
+ env = Environment(BUILDERS={'Bld':builder})
r = builder.get_name(env)
assert r == 'Bld', r
r = builder.get_prefix(env)
@@ -1228,10 +1043,7 @@ class BuilderTestCase(unittest.TestCase):
# whose keys are the source suffix. The add_action()
# specifies a new source suffix/action binding.
- builder = SCons.Builder.Builder(prefix='A_', suffix={}, action={})
- env = Environment(BUILDERS={'Bld':builder})
builder.add_action('.src_sfx1', 'FOO')
-
r = builder.get_name(env)
assert r == 'Bld', r
r = builder.get_prefix(env)
@@ -1245,9 +1057,6 @@ class BuilderTestCase(unittest.TestCase):
r = builder.src_suffixes(env)
assert r == ['.src_sfx1'], r
- builder = SCons.Builder.Builder(prefix='A_', suffix={}, action={})
- env = Environment(BUILDERS={'Bld':builder})
- builder.add_action('.src_sfx1', 'FOO')
builder.add_action('.src_sfx2', 'BAR')
r = builder.get_name(env)
@@ -1375,11 +1184,11 @@ class BuilderTestCase(unittest.TestCase):
'.4b':emit4b},
target_factory=MyNode,
source_factory=MyNode)
- tgt = builder4(env, None, source='aaa.4a')[0]
+ tgt = builder4(env, source='aaa.4a')[0]
assert str(tgt) == 'emit4a-aaa', str(tgt)
- tgt = builder4(env, None, source='bbb.4b')[0]
+ tgt = builder4(env, source='bbb.4b')[0]
assert str(tgt) == 'emit4b-bbb', str(tgt)
- tgt = builder4(env, None, source='ccc.4c')[0]
+ tgt = builder4(env, source='ccc.4c')[0]
assert str(tgt) == 'ccc', str(tgt)
def emit4c(target, source, env):
@@ -1387,7 +1196,7 @@ class BuilderTestCase(unittest.TestCase):
target = map(lambda x: 'emit4c-' + x[:-3], source)
return (target, source)
builder4.add_emitter('.4c', emit4c)
- tgt = builder4(env, None, source='ccc.4c')[0]
+ tgt = builder4(env, source='ccc.4c')[0]
assert str(tgt) == 'emit4c-ccc', str(tgt)
# Test a list of emitter functions.
@@ -1432,43 +1241,43 @@ class BuilderTestCase(unittest.TestCase):
env = Environment()
b = SCons.Builder.Builder(action='foo', suffix='.o')
- tgt = b(env, None, 'aaa')[0]
+ tgt = b(env, 'aaa')[0]
assert str(tgt) == 'aaa.o', str(tgt)
assert len(tgt.sources) == 1, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'aaa', map(str, tgt.sources)
- tgt = b(env, None, 'bbb.c')[0]
+ tgt = b(env, 'bbb.c')[0]
assert str(tgt) == 'bbb.o', str(tgt)
assert len(tgt.sources) == 1, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'bbb.c', map(str, tgt.sources)
- tgt = b(env, None, 'ccc.x.c')[0]
+ tgt = b(env, 'ccc.x.c')[0]
assert str(tgt) == 'ccc.x.o', str(tgt)
assert len(tgt.sources) == 1, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'ccc.x.c', map(str, tgt.sources)
- tgt = b(env, None, ['d0.c', 'd1.c'])[0]
+ tgt = b(env, ['d0.c', 'd1.c'])[0]
assert str(tgt) == 'd0.o', str(tgt)
assert len(tgt.sources) == 2, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'd0.c', map(str, tgt.sources)
assert str(tgt.sources[1]) == 'd1.c', map(str, tgt.sources)
- tgt = b(env, target = None, source='eee')[0]
+ tgt = b(env, source='eee')[0]
assert str(tgt) == 'eee.o', str(tgt)
assert len(tgt.sources) == 1, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'eee', map(str, tgt.sources)
- tgt = b(env, target = None, source='fff.c')[0]
+ tgt = b(env, source='fff.c')[0]
assert str(tgt) == 'fff.o', str(tgt)
assert len(tgt.sources) == 1, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'fff.c', map(str, tgt.sources)
- tgt = b(env, target = None, source='ggg.x.c')[0]
+ tgt = b(env, source='ggg.x.c')[0]
assert str(tgt) == 'ggg.x.o', str(tgt)
assert len(tgt.sources) == 1, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'ggg.x.c', map(str, tgt.sources)
- tgt = b(env, target = None, source=['h0.c', 'h1.c'])[0]
+ tgt = b(env, source=['h0.c', 'h1.c'])[0]
assert str(tgt) == 'h0.o', str(tgt)
assert len(tgt.sources) == 2, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'h0.c', map(str, tgt.sources)
@@ -1476,7 +1285,7 @@ class BuilderTestCase(unittest.TestCase):
w = b(env, target='i0.w', source=['i0.x'])[0]
y = b(env, target='i1.y', source=['i1.z'])[0]
- tgt = b(env, None, source=[w, y])[0]
+ tgt = b(env, source=[w, y])[0]
assert str(tgt) == 'i0.o', str(tgt)
assert len(tgt.sources) == 2, map(str, tgt.sources)
assert str(tgt.sources[0]) == 'i0.w', map(str, tgt.sources)
@@ -1507,31 +1316,18 @@ class BuilderTestCase(unittest.TestCase):
'B2': b2,
'B3': b3,
'B4': b4})
- # With no name, get_name will return the class. Allow
- # for caching...
- b6_names = [
- 'SCons.Builder.BuilderBase',
- "<class 'SCons.Builder.BuilderBase'>",
- 'SCons.Memoize.BuilderBase',
- "<class 'SCons.Memoize.BuilderBase'>",
- ]
-
assert b1.get_name(env) == 'bldr1', b1.get_name(env)
assert b2.get_name(env) == 'bldr2', b2.get_name(env)
assert b3.get_name(env) == 'bldr3', b3.get_name(env)
assert b4.get_name(env) == 'bldr4', b4.get_name(env)
assert b5.get_name(env) == 'builder5', b5.get_name(env)
- assert b6.get_name(env) in b6_names, b6.get_name(env)
-
+ assert b6.get_name(env) == 'SCons.Builder.BuilderBase', b6.get_name(env)
assert b1.get_name(env2) == 'B1', b1.get_name(env2)
assert b2.get_name(env2) == 'B2', b2.get_name(env2)
assert b3.get_name(env2) == 'B3', b3.get_name(env2)
assert b4.get_name(env2) == 'B4', b4.get_name(env2)
assert b5.get_name(env2) == 'builder5', b5.get_name(env2)
- assert b6.get_name(env2) in b6_names, b6.get_name(env2)
-
- assert b5.get_name(None) == 'builder5', b5.get_name(None)
- assert b6.get_name(None) in b6_names, b6.get_name(None)
+ assert b6.get_name(env2) == 'SCons.Builder.BuilderBase', b6.get_name(env2)
for B in b3.get_src_builders(env):
assert B.get_name(env) == 'bldr1'
@@ -1540,8 +1336,7 @@ class BuilderTestCase(unittest.TestCase):
tgts = b1(env, target = [outfile, outfile2], source='moo')
for t in tgts:
- name = t.builder.get_name(env)
- assert name == 'ListBuilder(bldr1)', name
+ assert t.builder.get_name(env) == 'ListBuilder(bldr1)'
# The following are not symbolically correct, because the
# ListBuilder was only created on behalf of env, so it
# would probably be OK if better correctness