Support default Options values of None. (Gary Oberbrunner)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 22 Oct 2004 18:57:48 +0000 (18:57 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 22 Oct 2004 18:57:48 +0000 (18:57 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@1135 fdb21ef1-2011-0410-befe-b5e4ea1792b1

doc/man/scons.1
src/CHANGES.txt
src/engine/SCons/Options/OptionsTests.py
src/engine/SCons/Options/__init__.py

index b94d680e508fd09e99e3d3c77e09cf334293b889..fdfae695de5c4f0fe77c635998cc609069d71261 100644 (file)
@@ -7104,7 +7104,13 @@ is the name of the variable.
 .I help 
 is the help text for the variable.
 .I default 
-is the default value of the variable.
+is the default value of the variable;
+if the default value is
+.B None
+and there is no explicit value specified,
+the construction variable will
+.I not
+be added to the construction environment.
 .I validator
 is called to validate the value of the variable, and should take three
 arguments: key, value, and environment
index df34c85a00ecaafe8d2f87fe337a328b824b574a..6747261045bff80c8138cf3d1aa25ceac807dffd 100644 (file)
@@ -150,6 +150,10 @@ RELEASE 0.97 - XXX
   - Allow Tool specifications to be passed a dictionary of keyword
     arguments.
 
+  - Support an Options default value of None, in which case the variable
+    will not be added to the construction environment unless it's set
+    explicitly by the user or from an Options file.
+
   From Chris Pawling:
 
   - Have the linkloc tool use $MSVS_VERSION to select the Microsoft
index afcb4d3855cf826881deeb0fa844474b10b0cd27..4248dc3fb530e0373cdc3bc8e99f9dc651a4ab97 100644 (file)
@@ -244,7 +244,21 @@ class OptionsTestCase(unittest.TestCase):
         env = Environment()
         opts.Update(env, {})
         assert not env.has_key('ANSWER')
-        
+
+        # Test that a default value of None is all right.
+        test = TestSCons.TestSCons()
+        file = test.workpath('custom.py')
+        opts = SCons.Options.Options(file)
+
+        opts.Add('ANSWER',
+                 "This is the answer",
+                 None,
+                 check)
+
+        env = Environment()
+        opts.Update(env, {})
+        assert not env.has_key('ANSWER')
+
     def test_args(self):
         """Test updating an Environment with arguments overridden"""
 
index 521171c1926ce034752b455e297950c9bcd7de8b..fdaee920ae28568f93cb7f4ee7318c998883d8fc 100644 (file)
@@ -165,7 +165,7 @@ class Options:
 
         # Finally validate the values:
         for option in self.options:
-            if option.validator:
+            if option.validator and values.has_key(option.key):
                 option.validator(option.key, env.subst('${%s}'%option.key), env)
 
     def Save(self, filename, env):