예제 #1
0
    def test_build(self):
        """jetstream build should just render and build the template"""
        with open('testwf.jst', 'w') as fp:
            fp.write('- cmd: "true"\n  stdout: /dev/null\n')

        args = ['build', 'testwf.jst']
        cli_main(args)
예제 #2
0
    def test_run_w_mash(self):
        """run the first workflow and then mash in the second workflow"""
        with open('testwf1.jst', 'w') as fp:
            fp.write(
                '- name: task1\n  cmd: echo {{ name }}\n  stdout: /dev/null\n')

        with open('testwf2.jst', 'w') as fp:
            fp.write(
                '- name: task1\n  cmd: echo {{ number }}\n  stdout: /dev/null\n'
            )
            fp.write(
                '- name: task2\n  cmd: echo {{ number2 }}\n  stdout: /dev/null\n'
            )

        args = [
            'run', 'testwf1.jst', '-o', 'workflow.pickle', '-c', 'str:name',
            'Philip J. Fry', '-c', 'bool:ok', 'true', '-c', 'int:number', '42',
            '-c', 'float:number2', '3.14'
        ]

        cli_main(args)

        args = [
            'run', 'testwf2.jst', '-w', 'workflow.pickle', '-m', '-o',
            'new_workflow.pickle', '-c', 'str:name', 'Philip J. Fry', '-c',
            'bool:ok', 'true', '-c', 'int:number', '42', '-c', 'float:number2',
            '3.14'
        ]

        cli_main(args)
예제 #3
0
 def test_init_w_json_as_yaml(self):
     """specifying the config file type should ignore file extensions"""
     with open('config.yaml', 'w') as fp:
         fp.write('{"foo": "bar", "baz": 42}')
     args = ['init', '-C', 'config.yaml', '--config-file-type', 'json']
     cli_main(args)
     p = jetstream.Project()
     self.assertEqual(p.index['foo'], 'bar')
     self.assertEqual(p.index['baz'], 42)
예제 #4
0
 def test_init_w_yaml(self):
     """jetstream init -C with a yaml config file"""
     with open('config.yaml', 'w') as fp:
         fp.write('foo: bar\nbaz: 42')
     args = ['init', '-C', 'config.yaml']
     cli_main(args)
     p = jetstream.Project()
     self.assertEqual(p.index['foo'], 'bar')
     self.assertEqual(p.index['baz'], 42)
예제 #5
0
 def test_init_w_json(self):
     """jetstream init -C with a json config file"""
     with open('config.json', 'w') as fp:
         fp.write('{"foo": "bar", "baz": 42}')
     args = ['init', '-C', 'config.json']
     cli_main(args)
     p = jetstream.Project()
     self.assertEqual(p.index['foo'], 'bar')
     self.assertEqual(p.index['baz'], 42)
예제 #6
0
 def test_init_w_csv_nh(self):
     """jetstream init -C with csv-nh type set"""
     with open('config.csv', 'w') as fp:
         fp.write('foo,bar\nbaz,42\napple,banana')
     args = ['init', '-C', 'config.csv']
     cli_main(args)
     p = jetstream.Project()
     second_row = p.index['__config_file__'][1]
     self.assertEqual(second_row['foo'], 'apple')
     self.assertEqual(second_row['bar'], 'banana')
예제 #7
0
 def test_init_w_csv(self):
     """jetstream init -C should auto-detect csv config file"""
     with open('config.csv', 'w') as fp:
         fp.write('foo,bar\nbaz,42\napple,banana')
     args = ['init', '-C', 'config.csv', '--config-file-type', 'csv-nh']
     cli_main(args)
     p = jetstream.Project()
     third_row = p.index['__config_file__'][2]
     self.assertEqual(third_row[0], 'apple')
     self.assertEqual(third_row[1], 'banana')
예제 #8
0
    def test_run(self):
        """run simple workflow with localbackend"""
        with open('testwf.jst', 'w') as fp:
            fp.write('- cmd: "true"\n  stdout: /dev/null\n')

        args = [
            'run',
            'testwf.jst',
        ]
        cli_main(args)
예제 #9
0
    def test_tasks(self):
        """jetstream tasks cmd should show list of tasks"""
        p = jetstream.init()

        with open('testwf.jst', 'w') as fp:
            fp.write('- cmd: "true"\n')

        args = ['run', 'testwf.jst', '--project', p.paths.path]
        cli_main(args)

        args = ['tasks', '--project', p.paths.path]
        cli_main(args)
예제 #10
0
    def test_run_w_vars(self):
        """run simple wokrflow with a couple variables passed as args"""
        with open('testwf.jst', 'w') as fp:
            fp.write('- cmd: echo {{ name }}\n  stdout: /dev/null\n')

        args = [
            'run', 'testwf.jst', '-c', 'str:name', 'Philip J. Fry', '-c',
            'bool:ok', 'true', '-c', 'int:number', '42', '-c', 'float:number2',
            '3.14'
        ]

        cli_main(args)
예제 #11
0
    def test_reinit(self):
        """running jetstream init again should not affect project id"""
        args = [
            'init',
        ]
        cli_main(args)
        p = jetstream.Project()

        args = ['init', '-c', 'foo', 'bar']
        cli_main(args)
        p2 = jetstream.Project()

        self.assertEqual(p.info['id'], p2.info['id'])
예제 #12
0
    def test_render(self):
        """jetstream render should just render and print the template"""
        render_test = """{% for i in range(3) %} 
                                                                        
                              ##//#/##/##                            
                            ###//##/###//##                          
                           ###//###//##//###                         
                           ##///##///##///##                         
                           ##///##///###//##                         
                           ##///##///###//##                         
            #/##/#         ##///##///###//##                         
           #/#/##/#        ##///##///###//##                         
           #/#/##/#        ##///##///###//##                         
           #/#/##/#        ##///##///###//##                         
           #/#/##/#        ##///##///###//##                         
           #/#/##/#        ##///##///###//##                         
           #/#/##/#        ##///##///###//##        *#/#/#(/#        
           #/#//##/////////##///##///###//##       /#//#//#/(#       
           #/##////////////##///##///###//##       ##/##//#//#       
           #///##############///##///###//##       ##/##//#//#       
            #################///##///###//##       ##/##//#//#       
                           ##///##///###//##       ##/##//#//#       
                           ##///##///###//##       ##/##//#//#       
                           ##///##///###//##       ##/##//#//#       
                           ##///##///###//##########//##//#//#       
                           ##///##///###//##############//#//#       
                           ##///##///###//##/////////////##//#       
                           ##///##///###//################//##       
                           ##///##///###//##//////////////###      
                           ##///##///###//##                         
                           ##///##///###//##                         
                           ##///##///###//##                         
                           ##///##///###//##                         
                           ##///##///###//##                         
                           ##///##///###//##  
                           ##///##///###//##                         
                           ##///##///###//## 
                           ##///##///###//##  
                           ##///##///###//##                         
                           ##///##///###//##
                            
        {% endfor %}
        """
        with open('testwf.jst', 'w') as fp:
            fp.write(render_test)

        args = ['render', 'testwf.jst']
        cli_main(args)
예제 #13
0
 def test_init(self):
     """jetstream init should create a project.yaml"""
     args = ['init', '-l', 'silent']
     cli_main(args)
     self.assertTrue(os.path.exists('jetstream/project.yaml'))
예제 #14
0
def test_run_template_slurm(template, cleandir):
    jetstream.settings["backend"] = "slurm"
    path = os.path.join(TEST_TEMPLATES, template)
    args = ("run", path)
    cli_main(args)
예제 #15
0
 def template(self, template_filename):
     """Runs a template from the test template directory"""
     path = os.path.join(TEST_TEMPLATES, template_filename)
     args = ('run', path)
     cli_main(args)
예제 #16
0
 def test_settings(self):
     """jetstream settings should give information about settings"""
     args = [
         'settings',
     ]
     cli_main(args)
예제 #17
0
def test_run_template_local(template, cleandir):
    path = os.path.join(TEST_TEMPLATES, template)
    args = ("run", path)
    cli_main(args)