|  | // Copyright 2019 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | package testsharder | 
|  |  | 
|  | import ( | 
|  | "fmt" | 
|  | ) | 
|  |  | 
|  | // Mode is a mode in which the testsharder can be run. | 
|  | type Mode int | 
|  |  | 
|  | const ( | 
|  | // Normal is the default mode in which all tests are sharded, except | 
|  | // those excluded by differing tags. | 
|  | Normal Mode = iota | 
|  |  | 
|  | // Restricted is the mode in which auth-needing tests (i.e., those that | 
|  | // specify service accounts) are ignored. This mode is useful for | 
|  | // running untrusted code. | 
|  | Restricted | 
|  | ) | 
|  |  | 
|  | // String implements flag.Var.String. | 
|  | func (m *Mode) String() string { | 
|  | switch *m { | 
|  | case Normal: | 
|  | return "normal" | 
|  | case Restricted: | 
|  | return "restricted" | 
|  | } | 
|  | return "" | 
|  | } | 
|  |  | 
|  | // Set implements flag.Var.Set. | 
|  | func (m *Mode) Set(s string) error { | 
|  | switch s { | 
|  | case "normal": | 
|  | *m = Normal | 
|  | case "restricted": | 
|  | *m = Restricted | 
|  | default: | 
|  | return fmt.Errorf("%s is not a valid mode", s) | 
|  | } | 
|  | return nil | 
|  | } |