(t *testing.T)
| 15 | } |
| 16 | |
| 17 | func TestParseAgentName(t *testing.T) { |
| 18 | tests := []struct { |
| 19 | name string |
| 20 | input string |
| 21 | want AgentName |
| 22 | wantErr bool |
| 23 | }{ |
| 24 | {name: "valid lowercase", input: "my-agent", want: "my-agent"}, |
| 25 | {name: "valid with underscore", input: "my_agent_v2", want: "my_agent_v2"}, |
| 26 | {name: "valid uppercase", input: "MyAgent", want: "MyAgent"}, |
| 27 | {name: "valid numbers", input: "agent123", want: "agent123"}, |
| 28 | {name: "spaces rejected", input: "my agent", wantErr: true}, |
| 29 | {name: "newline rejected", input: "my\nagent", wantErr: true}, |
| 30 | {name: "carriage return rejected", input: "my\ragent", wantErr: true}, |
| 31 | {name: "null byte rejected", input: "my\x00agent", wantErr: true}, |
| 32 | {name: "dot rejected", input: "my.agent", wantErr: true}, |
| 33 | {name: "slash rejected", input: "my/agent", wantErr: true}, |
| 34 | {name: "empty rejected", input: "", wantErr: true}, |
| 35 | } |
| 36 | |
| 37 | for _, tt := range tests { |
| 38 | t.Run(tt.name, func(t *testing.T) { |
| 39 | got, err := parseAgentName(tt.input) |
| 40 | if tt.wantErr { |
| 41 | require.Error(t, err) |
| 42 | } else { |
| 43 | require.NoError(t, err) |
| 44 | assert.Equal(t, tt.want, got) |
| 45 | } |
| 46 | }) |
| 47 | } |
| 48 | } |
| 49 | |
| 50 | func TestDetectWith(t *testing.T) { |
| 51 | tests := []struct { |
nothing calls this directly
no test coverage detected