コード例 #1
0
    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
コード例 #2
0
 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']}]
コード例 #3
0
 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
コード例 #4
0
 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()
コード例 #5
0
 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
コード例 #6
0
 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)
コード例 #7
0
    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))