def testNormalizeAndValidateDirectoriesToPullList_SucceedsWithValidList(self):
   dirs_orig = [
       '/sdcard/tempUno', '/sdcard/tempDos', '//sdcard/tempQuatro'
       '/data/local/tmp/temp-Dir_Cin.co/Cin+co/Se is'
   ]
   dirs = dirs_orig[:]
   arg_validate.NormalizeAndValidateDirectoriesToPullList(dirs)
   self.assertEquals(sorted(dirs_orig), sorted(dirs))
   dirs = ['/sdcard/spam/', '//sdcard/spam/']
   arg_validate.NormalizeAndValidateDirectoriesToPullList(dirs)
   # Same as before normalization, but trailing slash is removed
   self.assertEqual(['/sdcard/spam', '//sdcard/spam'], dirs)
 def testNormalizeAndValidateDirectoriesToPullList_FailsWithNonWhitelistedPath(
     self):
   tests = ('/', '/default.prop', '/sdcard/../etc/hosts', '/sdcardFakeDir',
            '/data/local', '/sdcard/../spam', '~/sdcard', '~sdcard')
   for test_dir in tests:
     with self.assertRaises(exceptions.InvalidArgumentException):
       arg_validate.NormalizeAndValidateDirectoriesToPullList([test_dir])
  def testNormalizeAndValidateDirectoriesToPullList_CollapsesFSModifiers(self):
    dirs_orig = [
        '/sdcard/../data/local/tmp', '/sdcard/./spam', '//sdcard//spam//'
    ]
    dirs_expect = ['/data/local/tmp', '/sdcard/spam', '//sdcard/spam']

    arg_validate.NormalizeAndValidateDirectoriesToPullList(dirs_orig)
    self.assertEqual(dirs_expect, dirs_orig)
 def testNormalizeAndValidateDirectoriesToPullList_FailsWithInvalidPath(self):
   tests = (
       'noforwardslash',
       'relative/path',
       '~/homedir',
       'gs://gcspath',
       '',  # blank
   )
   for test_dir in tests:
     with self.assertRaises(exceptions.InvalidArgumentException):
       arg_validate.NormalizeAndValidateDirectoriesToPullList([test_dir])
示例#5
0
    def Prepare(self, args):
        """Load, apply defaults, and perform validation on test arguments.

    Args:
      args: an argparse namespace. All the arguments that were provided to this
        gcloud command invocation (i.e. group and command arguments combined).
        Arg values from an optional arg-file and/or arg default values may be
        added to this argparse namespace.

    Raises:
      InvalidArgumentException: If an argument name is unknown, an argument does
        not contain a valid value, or an argument is not valid when used with
        the given type of test.
      RequiredArgumentException: If a required arg is missing.
    """
        all_test_args_set = arg_util.GetSetOfAllTestArgs(
            self._typed_arg_rules, self._shared_arg_rules)
        args_from_file = arg_file.GetArgsFromArgFile(args.argspec,
                                                     all_test_args_set)
        arg_util.ApplyLowerPriorityArgs(args, args_from_file, True)

        test_type = self.GetTestTypeOrRaise(args)
        self._CheckForConflictingArgs(args)

        typed_arg_defaults = self._typed_arg_rules[test_type]['defaults']
        shared_arg_defaults = self._shared_arg_rules['defaults']
        arg_util.ApplyLowerPriorityArgs(args, typed_arg_defaults)
        arg_util.ApplyLowerPriorityArgs(args, shared_arg_defaults)
        self._ApplyLegacyMatrixDimensionDefaults(args)

        arg_validate.ValidateArgsForTestType(args, test_type,
                                             self._typed_arg_rules,
                                             self._shared_arg_rules,
                                             all_test_args_set)
        arg_validate.ValidateOsVersions(args, self._catalog_mgr)
        arg_validate.ValidateDeviceList(args, self._catalog_mgr)
        arg_validate.ValidateResultsBucket(args)
        arg_validate.ValidateResultsDir(args)
        arg_validate.NormalizeAndValidateObbFileNames(args.obb_files)
        arg_validate.ValidateRoboDirectivesList(args)
        arg_validate.ValidateEnvironmentVariablesList(args)
        arg_validate.ValidateTestTargetsForShard(args)
        arg_validate.NormalizeAndValidateDirectoriesToPullList(
            args.directories_to_pull)
        arg_validate.ValidateScenarioNumbers(args)
 def testNormalizeAndValidateDirectoriesToPullList_FailsWithInvalidCharacter(
     self):
   dirs = ['/sdcard/Pretty%Fly', '/sdcard/For@', '/data/local/tmp/$WhiteGuy']
   with self.assertRaises(exceptions.InvalidArgumentException):
     arg_validate.NormalizeAndValidateDirectoriesToPullList(dirs)
 def testNormalizeAndValidateDirectoriesToPullList_NoExceptionIfNoneSpecified(
     self):
   arg_validate.NormalizeAndValidateDirectoriesToPullList(None)
   arg_validate.NormalizeAndValidateDirectoriesToPullList([])