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_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_update(self): """ Test our ability to update tests from a manifest and a directory of files """ # boilerplate tempdir = create_realpath_tempdir() for i in range(10): open(os.path.join(tempdir, str(i)), "w").write(str(i)) # otherwise empty directory with a manifest file newtempdir = create_realpath_tempdir() manifest_file = os.path.join(newtempdir, "manifest.ini") manifest_contents = str(convert([tempdir], relative_to=tempdir)) with open(manifest_file, "w") as f: f.write(manifest_contents) # get the manifest manifest = ManifestParser(manifests=(manifest_file,)) # All of the tests are initially missing: paths = [str(i) for i in range(10)] self.assertEqual([i["name"] for i in manifest.missing()], paths) # But then we copy one over: self.assertEqual(manifest.get("name", name="1"), ["1"]) manifest.update(tempdir, name="1") self.assertEqual(sorted(os.listdir(newtempdir)), ["1", "manifest.ini"]) # Update that one file and copy all the "tests": open(os.path.join(tempdir, "1"), "w").write("secret door") manifest.update(tempdir) self.assertEqual( sorted(os.listdir(newtempdir)), ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "manifest.ini"], ) self.assertEqual( open(os.path.join(newtempdir, "1")).read().strip(), "secret door" ) # clean up: shutil.rmtree(tempdir) shutil.rmtree(newtempdir)
def test_update(self): """ Test our ability to update tests from a manifest and a directory of files """ # boilerplate tempdir = create_realpath_tempdir() for i in range(10): file(os.path.join(tempdir, str(i)), 'w').write(str(i)) # otherwise empty directory with a manifest file newtempdir = create_realpath_tempdir() manifest_file = os.path.join(newtempdir, 'manifest.ini') manifest_contents = str(convert([tempdir], relative_to=tempdir)) with file(manifest_file, 'w') as f: f.write(manifest_contents) # get the manifest manifest = ManifestParser(manifests=(manifest_file,)) # All of the tests are initially missing: paths = [str(i) for i in range(10)] self.assertEqual([i['name'] for i in manifest.missing()], paths) # But then we copy one over: self.assertEqual(manifest.get('name', name='1'), ['1']) manifest.update(tempdir, name='1') self.assertEqual(sorted(os.listdir(newtempdir)), ['1', 'manifest.ini']) # Update that one file and copy all the "tests": file(os.path.join(tempdir, '1'), 'w').write('secret door') manifest.update(tempdir) self.assertEqual(sorted(os.listdir(newtempdir)), ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'manifest.ini']) self.assertEqual(file(os.path.join(newtempdir, '1')).read().strip(), 'secret door') # clean up: shutil.rmtree(tempdir) shutil.rmtree(newtempdir)
def test_update(self): """ Test our ability to update tests from a manifest and a directory of files """ # boilerplate tempdir = tempfile.mkdtemp() for i in range(10): file(os.path.join(tempdir, str(i)), 'w').write(str(i)) # otherwise empty directory with a manifest file newtempdir = tempfile.mkdtemp() manifest_file = os.path.join(newtempdir, 'manifest.ini') manifest_contents = str(convert([tempdir], relative_to=tempdir)) with file(manifest_file, 'w') as f: f.write(manifest_contents) # get the manifest manifest = ManifestParser(manifests=(manifest_file,)) # All of the tests are initially missing: paths = [str(i) for i in range(10)] self.assertEqual([i['name'] for i in manifest.missing()], paths) # But then we copy one over: self.assertEqual(manifest.get('name', name='1'), ['1']) manifest.update(tempdir, name='1') self.assertEqual(sorted(os.listdir(newtempdir)), ['1', 'manifest.ini']) # Update that one file and copy all the "tests": file(os.path.join(tempdir, '1'), 'w').write('secret door') manifest.update(tempdir) self.assertEqual(sorted(os.listdir(newtempdir)), ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'manifest.ini']) self.assertEqual(file(os.path.join(newtempdir, '1')).read().strip(), 'secret door') # clean up: shutil.rmtree(tempdir) shutil.rmtree(newtempdir)
def test_update(self): """ Test our ability to update tests from a manifest and a directory of files """ # boilerplate tempdir = tempfile.mkdtemp() for i in range(10): file(os.path.join(tempdir, str(i)), 'w').write(str(i)) # First, make a manifest: manifest = convert([tempdir]) newtempdir = tempfile.mkdtemp() manifest_file = os.path.join(newtempdir, 'manifest.ini') file(manifest_file,'w').write(manifest) manifest = ManifestParser(manifests=(manifest_file,)) self.assertEqual(manifest.get('name'), [str(i) for i in range(10)]) # All of the tests are initially missing: self.assertEqual([i['name'] for i in manifest.missing()], [str(i) for i in range(10)]) # But then we copy one over: self.assertEqual(manifest.get('name', name='1'), ['1']) manifest.update(tempdir, name='1') self.assertEqual(sorted(os.listdir(newtempdir)), ['1', 'manifest.ini']) # Update that one file and copy all the "tests": file(os.path.join(tempdir, '1'), 'w').write('secret door') manifest.update(tempdir) self.assertEqual(sorted(os.listdir(newtempdir)), ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'manifest.ini']) self.assertEqual(file(os.path.join(newtempdir, '1')).read().strip(), 'secret door') # clean up: shutil.rmtree(tempdir) shutil.rmtree(newtempdir)
def test_update(self): """ Test our ability to update tests from a manifest and a directory of files """ # boilerplate tempdir = create_realpath_tempdir() for i in range(10): file(os.path.join(tempdir, str(i)), "w").write(str(i)) # otherwise empty directory with a manifest file newtempdir = create_realpath_tempdir() manifest_file = os.path.join(newtempdir, "manifest.ini") manifest_contents = str(convert([tempdir], relative_to=tempdir)) with file(manifest_file, "w") as f: f.write(manifest_contents) # get the manifest manifest = ManifestParser(manifests=(manifest_file,)) # All of the tests are initially missing: paths = [str(i) for i in range(10)] self.assertEqual([i["name"] for i in manifest.missing()], paths) # But then we copy one over: self.assertEqual(manifest.get("name", name="1"), ["1"]) manifest.update(tempdir, name="1") self.assertEqual(sorted(os.listdir(newtempdir)), ["1", "manifest.ini"]) # Update that one file and copy all the "tests": file(os.path.join(tempdir, "1"), "w").write("secret door") manifest.update(tempdir) self.assertEqual( sorted(os.listdir(newtempdir)), ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "manifest.ini"] ) self.assertEqual(file(os.path.join(newtempdir, "1")).read().strip(), "secret door") # clean up: shutil.rmtree(tempdir) shutil.rmtree(newtempdir)
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)