<s> from __future__ import absolute_import <EOL> import os <EOL> import shutil <EOL> import tempfile <EOL> from salttesting import TestCase <EOL> from salttesting . helpers import ensure_in_syspath , destructiveTest <EOL> import salt . config <EOL> import salt . spm <EOL> ensure_in_syspath ( '<STR_LIT>' ) <EOL> _TMP_SPM = tempfile . mkdtemp ( ) <EOL> config = salt . config . minion_config ( None ) <EOL> config [ '<STR_LIT>' ] = { '<STR_LIT>' : [ os . path . join ( _TMP_SPM , '<STR_LIT>' ) ] } <EOL> config [ '<STR_LIT>' ] = { '<STR_LIT>' : [ os . path . join ( _TMP_SPM , '<STR_LIT>' ) ] } <EOL> __opts__ = { <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : { '<STR_LIT>' : [ _TMP_SPM , ] } , <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : os . path . join ( _TMP_SPM , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : False , <EOL> '<STR_LIT>' : False , <EOL> } <EOL> _F1 = { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:version>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:2>' , <EOL> '<STR_LIT>' : '<STR_LIT:test>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> } <EOL> } <EOL> _F1 [ '<STR_LIT>' ] = ( <EOL> ( '<STR_LIT>' , ( '<STR_LIT>' <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' ) . format ( ** _F1 [ '<STR_LIT>' ] ) ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ) <EOL> @ destructiveTest <EOL> class SPMTestUserInterface ( salt . spm . SPMUserInterface ) : <EOL> '''<STR_LIT>''' <EOL> def __init__ ( self ) : <EOL> self . _status = [ ] <EOL> self . _confirm = [ ] <EOL> self . _error = [ ] <EOL> def status ( self , msg ) : <EOL> self . _status . append ( msg ) <EOL> def confirm ( self , action ) : <EOL> self . _confirm . append ( action ) <EOL> def error ( self , msg ) : <EOL> self . _error . append ( msg ) <EOL> class SPMTest ( TestCase ) : <EOL> def setUp ( self ) : <EOL> shutil . rmtree ( _TMP_SPM , ignore_errors = True ) <EOL> os . mkdir ( _TMP_SPM ) <EOL> self . ui = SPMTestUserInterface ( ) <EOL> self . client = salt . spm . SPMClient ( self . ui , __opts__ ) <EOL> def tearDown ( self ) : <EOL> shutil . rmtree ( _TMP_SPM , ignore_errors = True ) <EOL> def _create_formula_files ( self , formula ) : <EOL> fdir = os . path . join ( _TMP_SPM , formula [ '<STR_LIT>' ] [ '<STR_LIT:name>' ] ) <EOL> shutil . rmtree ( fdir , ignore_errors = True ) <EOL> os . mkdir ( fdir ) <EOL> for path , contents in formula [ '<STR_LIT>' ] : <EOL> path = os . path . join ( fdir , path ) <EOL> dirname , _ = os . path . split ( path ) <EOL> if not os . path . exists ( dirname ) : <EOL> os . makedirs ( dirname ) <EOL> with open ( path , '<STR_LIT:w>' ) as f : <EOL> f . write ( contents ) <EOL> return fdir <EOL> def test_build_install ( self ) : <EOL> fdir = self . _create_formula_files ( _F1 ) <EOL> self . client . run ( [ '<STR_LIT>' , fdir ] ) <EOL> pkgpath = self . ui . _status [ - <NUM_LIT:1> ] . split ( ) [ - <NUM_LIT:1> ] <EOL> assert os . path . exists ( pkgpath ) <EOL> self . client . run ( [ '<STR_LIT>' , '<STR_LIT>' , pkgpath ] ) <EOL> for path , contents in _F1 [ '<STR_LIT>' ] : <EOL> path = os . path . join ( __opts__ [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ <NUM_LIT:0> ] , _F1 [ '<STR_LIT>' ] [ '<STR_LIT:name>' ] , path ) <EOL> assert os . path . exists ( path ) <EOL> assert open ( path , '<STR_LIT:r>' ) . read ( ) == contents <EOL> self . client . run ( [ '<STR_LIT:info>' , _F1 [ '<STR_LIT>' ] [ '<STR_LIT:name>' ] ] ) <EOL> lines = self . ui . _status [ - <NUM_LIT:1> ] . split ( '<STR_LIT:\n>' ) <EOL> for key , line in ( <EOL> ( '<STR_LIT:name>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:version>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) ) : <EOL> assert line . format ( _F1 [ '<STR_LIT>' ] [ key ] ) in lines <EOL> self . ui . _error = [ ] <EOL> self . client . run ( [ '<STR_LIT>' , '<STR_LIT>' , pkgpath ] ) <EOL> assert len ( self . ui . _error ) > <NUM_LIT:0> <EOL> __opts__ [ '<STR_LIT>' ] = True <EOL> self . ui . _error = [ ] <EOL> self . client . run ( [ '<STR_LIT>' , '<STR_LIT>' , pkgpath ] ) <EOL> assert len ( self . ui . _error ) == <NUM_LIT:0> <EOL> __opts__ [ '<STR_LIT>' ] = False <EOL> def test_failure_paths ( self ) : <EOL> fail_args = ( <EOL> [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT:info>' ] , <EOL> [ '<STR_LIT:info>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT:info>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT:info>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT:list>' ] , <EOL> [ '<STR_LIT>' , '<STR_LIT:list>' , '<STR_LIT>' ] , <EOL> ) <EOL> for args in fail_args : <EOL> self . ui . _error = [ ] <EOL> self . client . run ( args ) <EOL> assert len ( self . ui . _error ) > <NUM_LIT:0> <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> from integration import run_tests <EOL> run_tests ( SPMTest , needs_daemon = False ) </s>
