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])
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([])