def test_include_manifest_defaults(self): """ Test that manifest_defaults and manifests() are correctly populated when includes are used. """ include_example = os.path.join(here, 'include-example.ini') noinclude_example = os.path.join(here, 'just-defaults.ini') bar_path = os.path.join(here, 'include', 'bar.ini') foo_path = os.path.join(here, 'include', 'foo.ini') parser = ManifestParser(manifests=(include_example, noinclude_example)) # Standalone manifests must be appear as-is. self.assertTrue(include_example in parser.manifest_defaults) self.assertTrue(noinclude_example in parser.manifest_defaults) # Included manifests must only appear together with the parent manifest # that included the manifest. self.assertFalse(bar_path in parser.manifest_defaults) self.assertFalse(foo_path in parser.manifest_defaults) self.assertTrue((include_example, bar_path) in parser.manifest_defaults) self.assertTrue((include_example, foo_path) in parser.manifest_defaults) # manifests() must only return file paths (strings). manifests = parser.manifests() self.assertEqual(len(manifests), 4) self.assertIn(foo_path, manifests) self.assertIn(bar_path, manifests) self.assertIn(include_example, manifests) self.assertIn(noinclude_example, manifests)
def test_include(self): """Illustrate how include works""" include_example = os.path.join(here, 'include-example.ini') parser = ManifestParser(manifests=(include_example,)) # All of the tests should be included, in order: self.assertEqual(parser.get('name'), ['crash-handling', 'fleem', 'flowers']) self.assertEqual([(test['name'], os.path.basename(test['manifest'])) for test in parser.tests], [('crash-handling', 'bar.ini'), ('fleem', 'include-example.ini'), ('flowers', 'foo.ini')]) # The manifests should be there too: self.assertEqual(len(parser.manifests()), 3) # We already have the root directory: self.assertEqual(here, parser.rootdir) # DEFAULT values should persist across includes, unless they're # overwritten. In this example, include-example.ini sets foo=bar, but # it's overridden to fleem in bar.ini self.assertEqual(parser.get('name', foo='bar'), ['fleem', 'flowers']) self.assertEqual(parser.get('name', foo='fleem'), ['crash-handling']) # Passing parameters in the include section allows defining variables in #the submodule scope: self.assertEqual(parser.get('name', tags=['red']), ['flowers']) # However, this should be overridable from the DEFAULT section in the # included file and that overridable via the key directly connected to # the test: self.assertEqual(parser.get(name='flowers')[0]['blue'], 'ocean') self.assertEqual(parser.get(name='flowers')[0]['yellow'], 'submarine') # You can query multiple times if you need to: flowers = parser.get(foo='bar') self.assertEqual(len(flowers), 2) # Using the inverse flag should invert the set of tests returned: self.assertEqual(parser.get('name', inverse=True, tags=['red']), ['crash-handling', 'fleem']) # All of the included tests actually exist: self.assertEqual([i['name'] for i in parser.missing()], []) # Write the output to a manifest: buffer = StringIO() parser.write(fp=buffer, global_kwargs={'foo': 'bar'}) self.assertEqual(buffer.getvalue().strip(), '[DEFAULT]\nfoo = bar\n\n[fleem]\n\n[include/flowers]\nblue = ocean\nred = roses\nyellow = submarine')
def test_include(self): """Illustrate how include works""" include_example = os.path.join(here, 'include-example.ini') parser = ManifestParser(manifests=(include_example,)) # All of the tests should be included, in order: self.assertEqual(parser.get('name'), ['crash-handling', 'fleem', 'flowers']) self.assertEqual([(test['name'], os.path.basename(test['manifest'])) for test in parser.tests], [('crash-handling', 'bar.ini'), ('fleem', 'include-example.ini'), ('flowers', 'foo.ini')]) # The manifests should be there too: self.assertEqual(len(parser.manifests()), 3) # We already have the root directory: self.assertEqual(here, parser.rootdir) # DEFAULT values should persist across includes, unless they're # overwritten. In this example, include-example.ini sets foo=bar, but # it's overridden to fleem in bar.ini self.assertEqual(parser.get('name', foo='bar'), ['fleem', 'flowers']) self.assertEqual(parser.get('name', foo='fleem'), ['crash-handling']) # Passing parameters in the include section allows defining variables in #the submodule scope: self.assertEqual(parser.get('name', tags=['red']), ['flowers']) # However, this should be overridable from the DEFAULT section in the # included file and that overridable via the key directly connected to # the test: self.assertEqual(parser.get(name='flowers')[0]['blue'], 'ocean') self.assertEqual(parser.get(name='flowers')[0]['yellow'], 'submarine') # You can query multiple times if you need to: flowers = parser.get(foo='bar') self.assertEqual(len(flowers), 2) # Using the inverse flag should invert the set of tests returned: self.assertEqual(parser.get('name', inverse=True, tags=['red']), ['crash-handling', 'fleem']) # All of the included tests actually exist: self.assertEqual([i['name'] for i in parser.missing()], []) # Write the output to a manifest: buffer = StringIO() parser.write(fp=buffer, global_kwargs={'foo': 'bar'}) self.assertEqual(buffer.getvalue().strip(), '[DEFAULT]\nfoo = bar\n\n[fleem]\nsubsuite = \n\n[include/flowers]\nblue = ocean\nred = roses\nsubsuite = \nyellow = submarine')
def test_manifest_list(self): """ Ensure a manifest with just a DEFAULT section still returns itself from the manifests() method. """ parser = ManifestParser() manifest = os.path.join(here, 'no-tests.ini') parser.read(manifest) self.assertEqual(len(parser.tests), 0) self.assertTrue(len(parser.manifests()) == 1)
def test_include(self): """Illustrate how include works""" include_example = os.path.join(here, "include-example.ini") parser = ManifestParser(manifests=(include_example, )) # All of the tests should be included, in order: self.assertEqual(parser.get("name"), ["crash-handling", "fleem", "flowers"]) self.assertEqual( [(test["name"], os.path.basename(test["manifest"])) for test in parser.tests], [ ("crash-handling", "bar.ini"), ("fleem", "include-example.ini"), ("flowers", "foo.ini"), ], ) # The including manifest is always reported as a part of the generated test object. self.assertTrue( all([ t["ancestor_manifest"] == "include-example.ini" for t in parser.tests if t["name"] != "fleem" ])) # The manifests should be there too: self.assertEqual(len(parser.manifests()), 3) # We already have the root directory: self.assertEqual(here, parser.rootdir) # DEFAULT values should persist across includes, unless they're # overwritten. In this example, include-example.ini sets foo=bar, but # it's overridden to fleem in bar.ini self.assertEqual(parser.get("name", foo="bar"), ["fleem", "flowers"]) self.assertEqual(parser.get("name", foo="fleem"), ["crash-handling"]) # Passing parameters in the include section allows defining variables in # the submodule scope: self.assertEqual(parser.get("name", tags=["red"]), ["flowers"]) # However, this should be overridable from the DEFAULT section in the # included file and that overridable via the key directly connected to # the test: self.assertEqual(parser.get(name="flowers")[0]["blue"], "ocean") self.assertEqual(parser.get(name="flowers")[0]["yellow"], "submarine") # You can query multiple times if you need to: flowers = parser.get(foo="bar") self.assertEqual(len(flowers), 2) # Using the inverse flag should invert the set of tests returned: self.assertEqual(parser.get("name", inverse=True, tags=["red"]), ["crash-handling", "fleem"]) # All of the included tests actually exist: self.assertEqual([i["name"] for i in parser.missing()], []) # Write the output to a manifest: buffer = StringIO() parser.write(fp=buffer, global_kwargs={"foo": "bar"}) expected_output = """[DEFAULT] foo = bar [fleem] [include/flowers] blue = ocean red = roses yellow = submarine""" # noqa self.assertEqual(buffer.getvalue().strip(), expected_output)
def test_include(self): """Illustrate how include works""" include_example = os.path.join(here, "include-example.ini") parser = ManifestParser(manifests=(include_example,)) # All of the tests should be included, in order: self.assertEqual(parser.get("name"), ["crash-handling", "fleem", "flowers"]) self.assertEqual( [(test["name"], os.path.basename(test["manifest"])) for test in parser.tests], [("crash-handling", "bar.ini"), ("fleem", "include-example.ini"), ("flowers", "foo.ini")], ) # The including manifest is always reported as a part of the generated test object. self.assertTrue(all([t["ancestor-manifest"] == include_example for t in parser.tests if t["name"] != "fleem"])) # The manifests should be there too: self.assertEqual(len(parser.manifests()), 3) # We already have the root directory: self.assertEqual(here, parser.rootdir) # DEFAULT values should persist across includes, unless they're # overwritten. In this example, include-example.ini sets foo=bar, but # it's overridden to fleem in bar.ini self.assertEqual(parser.get("name", foo="bar"), ["fleem", "flowers"]) self.assertEqual(parser.get("name", foo="fleem"), ["crash-handling"]) # Passing parameters in the include section allows defining variables in # the submodule scope: self.assertEqual(parser.get("name", tags=["red"]), ["flowers"]) # However, this should be overridable from the DEFAULT section in the # included file and that overridable via the key directly connected to # the test: self.assertEqual(parser.get(name="flowers")[0]["blue"], "ocean") self.assertEqual(parser.get(name="flowers")[0]["yellow"], "submarine") # You can query multiple times if you need to: flowers = parser.get(foo="bar") self.assertEqual(len(flowers), 2) # Using the inverse flag should invert the set of tests returned: self.assertEqual(parser.get("name", inverse=True, tags=["red"]), ["crash-handling", "fleem"]) # All of the included tests actually exist: self.assertEqual([i["name"] for i in parser.missing()], []) # Write the output to a manifest: buffer = StringIO() parser.write(fp=buffer, global_kwargs={"foo": "bar"}) expected_output = """[DEFAULT] foo = bar [fleem] [include/flowers] blue = ocean red = roses yellow = submarine""" # noqa self.assertEqual(buffer.getvalue().strip(), expected_output)