def _create_snippet(cls, name, path, parsed_yaml): yaml_checker.check(path, parsed_yaml) snip = snippet.Snippet(name, parsed_yaml, path) cls._snippets[name] = snip return snip
def test_dependencies_snippet(self): self.ya._dependencies = [{'use': 'mysnippet.dependencies_foo'}] flexmock(YamlSnippetLoader).should_receive('get_snippet_by_name').\ with_args('mysnippet').\ and_return(snippet.Snippet('mysnippet', {'dependencies_foo': [{'rpm': ['bar']}]}, 'mysnippet.yaml')) assert self.ya.dependencies() == [{'rpm': ['bar']}]
def test_run_snippet(self): self.ya._run = [{'use': 'mysnippet.run'}] flexmock(YamlSnippetLoader).should_receive('get_snippet_by_name').\ with_args('mysnippet').\ and_return(snippet.Snippet('mysnippet', {'run': [{'log_i': 'spam'}]}, 'mysnippet.yaml')) self.ya.run() assert ('INFO', 'spam') in self.tlh.msgs
def test_dependencies_snippet_also_installs_default_dependencies(self): self.ya._dependencies = [{'call': 'mysnippet.dependencies_foo'}] flexmock(YamlSnippetLoader).should_receive('get_snippet_by_name').\ with_args('mysnippet').\ and_return(snippet.Snippet('mysnippet', {'dependencies_foo': [{'rpm': ['bar']}], 'dependencies': [{'rpm': ['spam']}]}, 'mysnippet.yaml')) assert {'rpm': ['bar']} in self.ya.dependencies() assert {'rpm': ['spam']} in self.ya.dependencies()
def test_snippet_uses_own_files_dir(self): self.ya._run = [{'use': 'a.run'}, {'log_i': '*first'}] flexmock(YamlSnippetLoader).should_receive('get_snippet_by_name').\ with_args('a').\ and_return(snippet.Snippet('mysnippet', {'files_dir': 'foo/bar/baz/spam', 'files': {'first': {'source': 'file'}}, 'run': [{'log_i': '*first'}]}, 'mysnippet.yaml')) self.ya.run() assert ('INFO', 'foo/bar/baz/spam/file') in self.tlh.msgs assert ('INFO', os.path.join(self.ya.files_dir, 'f/g')) in self.tlh.msgs
def test_snippet_uses_its_own_files_section(self): self.ya._run = [{'use': 'mysnippet.run'}, {'log_w': '*first'}] flexmock(YamlSnippetLoader).should_receive('get_snippet_by_name').\ with_args('mysnippet').\ and_return(snippet.Snippet('mysnippet', {'files': {'first': {'source': 'from/snippet'}}, 'run': [{'log_i': '*first'}]}, 'mysnippet.yaml')) self.ya.run() assert filter(lambda x: x[0] == 'INFO' and x[1].endswith('from/snippet'), self.tlh.msgs) # make sure that after the snippet ends, we use the old files section assert filter(lambda x: x[0] == 'WARNING' and x[1].endswith('f/g'), self.tlh.msgs)
def get_snippet_by_name(cls, name): found = cls._find_snippet(name) if found != None: return found loaded = yaml_loader.YamlLoader.load_yaml_by_relpath(cls.snippets_dirs, name + '.yaml') if loaded: path, parsed_yaml = loaded snip = snippet.Snippet(name, parsed_yaml, path) cls._snippets[snip.path] = snip return snip raise exceptions.SnippetNotFoundException('no such snippet: {name}'.format(name=name))