Esempio n. 1
0
    def test_env_and_gradle(self):
        cm = credentials_manager()
        cm.add_source(
            credentials_source_env({
                'username': '******',
                'password': '******'
            }))
        text = '''\
[email protected]
devPassword=xflintpass
systemProp.gradle.wrapperUser=tuser
systemProp.gradle.wrapperPassword=tpassword
'''
        cm.add_source(
            credentials_source_gradle(temp_file.make_temp_file(content=text),
                                      'dev'))

        with env_override({
                'MY_USERNAME': '******',
                'MY_PASSWORD': '******'
        }) as env:
            self.assertEqual(True, cm.is_valid())
            c = cm.credentials()
            self.assertEqual('fred', c.username)
            self.assertEqual('flintpass', c.password)

        with env_override() as env:
            self.assertEqual(True, cm.is_valid())
            c = cm.credentials()
            self.assertEqual('*****@*****.**', c.username)
            self.assertEqual('xflintpass', c.password)
    def test_env_vars(self):
        content = '''\
ape
  activity: ${_CONFIG_ACTIVITY}
  snack: leaves

bonobo extends ape
  activity: loving
  snack: ${_CONFIG_SNACK}

chimp extends ape
  activity: fighting
  snack: eggs
'''
        tmp_dir = self.make_temp_dir()
        tmp_file = path.join(tmp_dir, 'apes.config')
        file_util.save(tmp_file, content=content)
        with env_override(env={
                '_CONFIG_ACTIVITY': 'resting',
                '_CONFIG_SNACK': 'kiwi'
        }) as tmp_env:
            s = SCL(tmp_dir, '*.config')
            s.load()
            self.assertEqual('fighting',
                             s.section('chimp').find_by_key('activity'))
            self.assertEqual('loving',
                             s.section('bonobo').find_by_key('activity'))
            self.assertEqual('eggs', s.section('chimp').find_by_key('snack'))
            self.assertEqual('kiwi', s.section('bonobo').find_by_key('snack'))
    def test_search_path_env_var(self):
        content = '''\
ape
  activity: resting
  snack: leaves

bonobo extends ape
  activity: loving
  snack: kiwi

chimp extends ape
  activity: fighting
  snack: eggs
'''
        tmp_file = self.make_named_temp_file('apes.config', content=content)
        with env_override(
                env={'_CONFIG_DIR': path.dirname(tmp_file)}) as tmp_env:
            s = SCL('${_CONFIG_DIR}', '*.config')
            s.load()
            self.assertEqual('fighting',
                             s.section('chimp').find_by_key('activity'))
            self.assertEqual('loving',
                             s.section('bonobo').find_by_key('activity'))
            self.assertEqual('eggs', s.section('chimp').find_by_key('snack'))
            self.assertEqual('kiwi', s.section('bonobo').find_by_key('snack'))
Esempio n. 4
0
 def test_env_vars(self):
   c = credentials('<unittest>')
   c.username = '******'
   c.password = '******'
   with env_override( { 'MY_USERNAME': '******', 'MY_PASSWORD': '******' }) as env:
     self.assertEqual( 'fred', c.username )
     self.assertEqual( 'flintpass', c.password )
Esempio n. 5
0
 def test_foo(self):
   env = {
     'SOMETHINGIMADEUP': 'GOOD',
     'PATH': '/bin:/usr/bin:/my/path:/sbin'
   }
   with env_override(env = env) as tmp_env:
     tmp_dir = self.make_temp_dir()
     temp_content.write_items([
       'file 1.sh "export PATH=/bin:/usr/bin:/sbin\n" 644',
       'file 2.sh "export BAR=orange\n" 644',
       'file 3.sh "export PATH=/a/bin:$PATH\nexport PATH=/b/bin:$PATH\n" 644',
       'file 4.sh "export FOO=kiwi\n" 644',
       'file 5.sh "export PATH=$PATH:/x/bin\nPATH=$PATH:/y/bin\n" 644',
       'file 6.sh "unset SOMETHINGIMADEUP\n" 644',
     ], tmp_dir)
     ed = env_dir(tmp_dir)
     self.assertEqual( [ '1.sh', '2.sh', '3.sh', '4.sh', '5.sh', '6.sh' ], ed.files )
     self.assertEqual( [
       ( 'BAR', 'orange', action.SET ),
       ( 'FOO', 'kiwi', action.SET ),
       ( 'PATH', '/a/bin', action.PATH_PREPEND ),
       ( 'PATH', '/b/bin', action.PATH_PREPEND ),
       ( 'PATH', '/my/path', action.PATH_REMOVE ),
       ( 'PATH', '/x/bin', action.PATH_APPEND ),
       ( 'PATH', '/y/bin', action.PATH_APPEND ),
       ( 'SOMETHINGIMADEUP', None, action.UNSET ),
     ], ed.instructions(tmp_env.to_dict()) )
Esempio n. 6
0
 def call_pyinstaller(clazz, args, build_dir = None, replace_env = None):
   check.check_string_seq(args)
   check.check_string(build_dir, allow_none = True)
   check.check_dict(replace_env, check.STRING_TYPES, check.STRING_TYPES)
   
   cmd = command_line.parse_args(args)
   replace_env = replace_env or {}
   env = os_env.clone_current_env(d = {})
   env.update(replace_env)
   clazz._log.log_d('using env: {}'.format(pprint.pformat(env)))
   clazz._log.log_d('calling pyinstaller: {}'.format(' '.join(cmd)))
   if build_dir:
     file_util.mkdir(build_dir)
   dist_dir = path.join(build_dir, 'dist')
   work_dir = path.join(build_dir, 'work')
   spec_dir = path.join(build_dir, 'spec')
   args = args[:]
   args.extend([ '--distpath', dist_dir ])
   args.extend([ '--workpath', work_dir ])
   args.extend([ '--specpath', spec_dir ])
   try:
     with env_override(env = env) as _:
       PyInstaller_run(pyi_args = args, pyi_config = None)
   except Exception as ex:
     raise pyinstaller_error(str(ex))
Esempio n. 7
0
 def test_valid(self):
     cs = CSE({'username': '******', 'password': '******'})
     with env_override({
             'MY_USERNAME': '******',
             'MY_PASSWORD': '******'
     }) as env:
         self.assertEqual(True, cs.is_valid())
         c = cs.credentials()
         self.assertEqual('fred', c.username)
         self.assertEqual('flintpass', c.password)
Esempio n. 8
0
    def test_from_config_file_from_env(self):
        content = '''\
fruit
  username: foo
  password: sekret
  port: 9999
'''
        tmp_config = self.make_temp_file(content=content)
        with env_override(
            {'_BES_CLI_OPTIONS_UNIT_TEST_CONFIG_FILE': tmp_config}) as env:
            o = _test_cli_options()
            self.assertEqual('foo', o.username)
            self.assertEqual('sekret', o.password)
            self.assertEqual(9999, o.port)
Esempio n. 9
0
 def test_env_vars(self):
     cm = credentials_manager()
     cm.add_source(
         credentials_source_env({
             'username': '******',
             'password': '******'
         }))
     with env_override({
             'MY_USERNAME': '******',
             'MY_PASSWORD': '******'
     }) as env:
         self.assertEqual(True, cm.is_valid())
         c = cm.credentials()
         self.assertEqual('fred', c.username)
         self.assertEqual('flintpass', c.password)
Esempio n. 10
0
  def test_env_var(self):
    text = '''\
# This is one
credential
  provider: pcloud
  type: download
  email: [email protected] # one
  password: ${SEKRET1}

# This is two
credential
  provider: pcloud
  type: upload
  email: [email protected] # two
  password: ${SEKRET2}
'''
    with env_override(env = { 'SEKRET1': 'sekret1', 'SEKRET2': 'sekret2' }) as tmp_env:
      s = simple_config.from_text(text)

      sections = s.find_all_sections('credential')
      self.assertEqual( 2, len(sections) )
      self.assertEqual( 'download', sections[0].find_by_key('type') )
      self.assertEqual( 'upload', sections[1].find_by_key('type') )
      self.assertEqual( '${SEKRET1}', sections[0].find_by_key('password', resolve_env_vars = False) )
      self.assertEqual( 'sekret1', sections[0].find_by_key('password', resolve_env_vars = True) )
      self.assertEqual( 'sekret1', sections[0].get_value('password') )
      self.assertEqual( True, sections[0].has_key('password') )
      self.assertEqual( False, sections[0].has_key('missingkey') )

      self.assertEqual( {
        'provider': 'pcloud',
        'type': 'download',
        'email': '*****@*****.**',
        'password': '******',
      }, sections[0].to_dict(resolve_env_vars = False) )

      self.assertEqual( {
        'provider': 'pcloud',
        'type': 'download',
        'email': '*****@*****.**',
        'password': '******',
      }, sections[0].to_dict(resolve_env_vars = True) )
Esempio n. 11
0
    def test_env_override_push_pop(self):
        original_env = os_env.clone_current_env()
        with env_override() as env:
            env.push()
            env.set('FOO', '666')
            self.assertEqual(self._dict_combine(original_env, {'FOO': '666'}),
                             os_env.clone_current_env())
            env.push()
            env.set('BAR', '667')
            self.assertEqual(
                self._dict_combine(original_env, {
                    'FOO': '666',
                    'BAR': '667'
                }), os_env.clone_current_env())
            env.pop()
            self.assertEqual(self._dict_combine(original_env, {'FOO': '666'}),
                             os_env.clone_current_env())
            env.pop()
            self.assertEqual(original_env, os_env.clone_current_env())

        self.assertEqual(original_env, os_env.clone_current_env())
Esempio n. 12
0
    def version_info(clazz, pip_exe, pythonpath=None):
        'Return the version info of a pip executable'
        check.check_string(pip_exe)
        check.check_string_seq(pythonpath, allow_none=True)

        pythonpath = pythonpath or []

        cmd = [pip_exe, '--version']
        env_PYTHONPATH = os.pathsep.join(pythonpath)
        with env_override(env={'PYTHONPATH': env_PYTHONPATH}) as env:
            clazz._log.log_d('version_info: pip_exe={} PYTHONPATH={}'.format(
                pip_exe, env_PYTHONPATH))
            try:
                output_bytes = subprocess.check_output(
                    cmd, stderr=subprocess.STDOUT)
                output = codecs.decode(output_bytes, 'utf-8').strip()
            except subprocess.CalledProcessError as ex:
                output_bytes = ex.output
                output = codecs.decode(output_bytes, 'utf-8').strip()
                msg = 'version_info: Failed to run: "{}" - {}'.format(
                    ' '.join(cmd), output)
                clazz._log.log_w(msg)
                raise python_error(msg, status_code=ex.returncode)
        clazz._log.log_d('version_info: output="{}"'.format(output))
        f = re.findall(clazz._PIP_VERSION_PATTERN, output)
        clazz._log.log_d('version_info: f="{}"'.format(f))
        if not f:
            raise python_error(
                'version_info: not a valid pip version for {}: "{}"'.format(
                    pip_exe, output))
        if len(f[0]) != 3:
            raise python_error(
                'version_info: not a valid pip version for {}: "{}"'.format(
                    pip_exe, output))
        version = f[0][0]
        where = f[0][1]
        python_version = f[0][2]
        return clazz._pip_version_info(version, where, python_version)
Esempio n. 13
0
  def test_extract_alpine_linux_with_docker(self):
    tmp_tar_exe_dir = self.make_temp_dir()
    fail_flag_file = self.make_temp_file(content = 'foo', suffix = '.flag')
    
    fake_tar_content = '''\
#!/bin/bash
${_BES_TAR_EXE} ${1+"$@"}
if [[ -f ${_BES_TAR_FAIL_FLAG} ]]; then
  rm -f ${_BES_TAR_FAIL_FLAG}
  exit 2
fi
rv=$?
exit ${rv}
'''
    tar_exe = file_util.save(path.join(tmp_tar_exe_dir, 'tar'), content = fake_tar_content, mode = 0o0755)
    
    tmp_dir = self.make_temp_dir()
    
    old_path = os_env_var
    with env_override(env = { '_BES_TAR_EXE': tar_util.tar_exe(), '_BES_TAR_FAIL_FLAG': fail_flag_file }) as over:
      os_env_var('PATH').prepend(tmp_tar_exe_dir)
      tar_util.extract(self.data_path('test.tar'), tmp_dir)
      
    expected_files = [
      self.native_filename('1'),
      self.native_filename('1/2'),
      self.native_filename('1/2/3'),
      self.native_filename('1/2/3/4'),
      self.native_filename('1/2/3/4/5'),
      self.native_filename('1/2/3/4/5/apple.txt'),
      self.native_filename('1/2/3/4/5/kiwi.txt'),
      self.native_filename('bar.txt'),
      self.native_filename('empty'),
      self.native_filename('foo.txt'),
      self.native_filename('kiwi_link.txt'),
    ]
    actual_files = file_find.find(tmp_dir, file_type = file_find.ANY)
    self.assertEqual( expected_files, actual_files )
Esempio n. 14
0
 def test_env_override_set(self):
     original_env = os_env.clone_current_env()
     with env_override() as env:
         env.set('FOO', '666')
         env.set('BAR', 'hi')
     self.assertEqual(original_env, os_env.clone_current_env())
Esempio n. 15
0
 def test_invalid(self):
     cs = CSE({'username': '******', 'password': '******'})
     with env_override({'MY_USERNAME': '******'}) as env:
         self.assertEqual(False, cs.is_valid())
Esempio n. 16
0
 def test_env_override_init(self):
     original_env = os_env.clone_current_env()
     with env_override({'FOO': '666', 'BAR': 'hi'}) as env:
         pass
     self.assertEqual(original_env, os_env.clone_current_env())
Esempio n. 17
0
 def test_env_var_one_var(self):
     f = self.fruit('${COLOR}', 'tart')
     with env_override({'COLOR': 'yellow'}) as env:
         self.assertEqual('yellow', f.color)
         self.assertEqual('tart', f.flavor)
Esempio n. 18
0
 def test_env_var_two_vars(self):
     f = self.fruit('${MODIFIER}${COLOR}', 'tart')
     with env_override({'COLOR': 'yellow', 'MODIFIER': 'nice'}) as env:
         self.assertEqual('niceyellow', f.color)
         self.assertEqual('tart', f.flavor)
Esempio n. 19
0
 def test_env_var_tilde_and_var(self):
     f = self.fruit('yellow', '~/${FLAVOR}')
     with env_override({'HOME': '/tmp/foo', 'FLAVOR': 'tart'}) as env:
         self.assertEqual('yellow', f.color)
         self.assertEqual('/tmp/foo/tart', f.flavor)
Esempio n. 20
0
 def test_env_var_multiple_vars(self):
     f = self.fruit('${COLOR}', '${FLAVOR}')
     with env_override({'COLOR': 'yellow', 'FLAVOR': 'tart'}) as env:
         self.assertEqual('yellow', f.color)
         self.assertEqual('tart', f.flavor)