docs: change docs.py to test the setting of parameters to defaults
authorGarming Sam <garming@catalyst.net.nz>
Wed, 5 Mar 2014 21:12:09 +0000 (10:12 +1300)
committerJeremy Allison <jra@samba.org>
Wed, 7 May 2014 17:49:15 +0000 (19:49 +0200)
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
python/samba/tests/docs.py

index afa9fdd22467d1b0d0ac5232a390d22eda737a91..d9f123e77814dc92d564bd9ad989250438dca2d2 100644 (file)
@@ -170,9 +170,11 @@ class SmbDotConfTests(TestCase):
 
     def test_default_s3(self):
         self._test_default(['bin/testparm'])
+        self._set_defaults(['bin/testparm'])
 
     def test_default_s4(self):
         self._test_default(['bin/samba-tool', 'testparm'])
+        self._set_defaults(['bin/samba-tool', 'testparm'])
 
     def _test_default(self, program):
         topdir = os.path.abspath(samba.source_tree_topdir())
@@ -206,3 +208,40 @@ class SmbDotConfTests(TestCase):
         if len(failset) > 0:
             self.fail(self._format_message(failset,
                 "Parameters that do not have matching defaults:"))
+
+    def _set_defaults(self, program):
+        topdir = os.path.abspath(samba.source_tree_topdir())
+        try:
+            defaults = set(get_default_triples(topdir))
+        except:
+            self.fail("Unable to load parameters")
+        bindir = os.path.join(topdir, "bin")
+        failset = set()
+        count = 0
+
+        for triple in defaults:
+            param, default, context = triple
+
+            # temporarily remove parametric options - no dump available in s4
+            if param in ['printing'] or ':' in param:
+                continue
+
+            section = None
+            if context == "G":
+                section = "global"
+            elif context == "S":
+                section = "test"
+            else:
+                 self.fail("%s has no valid context" % param)
+            p = subprocess.Popen(program + ["-s", self.smbconf,
+                    "--section-name", section, "--parameter-name", param,
+                    "--option", "%s = %s" % (param, default)],
+                    stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=topdir).communicate()
+            if p[0].upper().strip() != default.upper():
+                if not (p[0].upper().strip() == "" and default == '""'):
+                    doc_triple = "%s\n      Expected: %s" % (param, default)
+                    failset.add("%s\n      Got: %s" % (doc_triple, p[0].upper().strip()))
+
+        if len(failset) > 0:
+            self.fail(self._format_message(failset,
+                "Parameters that do not have matching defaults:"))