• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (C) 2022 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #include <sys/types.h>
17 #include <unistd.h>
18 
19 #include "host/commands/cvd/unittests/selector/parser_names_helper.h"
20 
21 namespace cuttlefish {
22 namespace selector {
23 
TEST_P(ValidNamesTest,ValidInputs)24 TEST_P(ValidNamesTest, ValidInputs) {
25   const uid_t uid = getuid();
26   auto parser = StartSelectorParser::ConductSelectFlagsParser(
27       uid, selector_args_, cvd_common::Args{}, cvd_common::Envs{});
28 
29   ASSERT_TRUE(parser.ok());
30 }
31 
32 /**
33  * Note that invalid inputs must be tested at the InstanceDatabase level
34  */
TEST_P(ValidNamesTest,FieldsNoSubstring)35 TEST_P(ValidNamesTest, FieldsNoSubstring) {
36   const uid_t uid = getuid();
37 
38   auto parser = StartSelectorParser::ConductSelectFlagsParser(
39       uid, selector_args_, cvd_common::Args{}, cvd_common::Envs{});
40 
41   ASSERT_TRUE(parser.ok());
42   ASSERT_EQ(parser->GroupName(), expected_output_.group_name);
43   ASSERT_EQ(parser->PerInstanceNames(), expected_output_.per_instance_names);
44 }
45 
46 INSTANTIATE_TEST_SUITE_P(
47     CvdParser, ValidNamesTest,
48     testing::Values(
49         InputOutput{.input = "--group_name=cf",
50                     .expected = ExpectedOutput{.group_name = "cf"}},
51         InputOutput{.input = "--instance_name=cvd,cf",
52                     .expected = ExpectedOutput{.per_instance_names =
53                                                    std::vector<std::string>{
54                                                        "cvd", "cf"}}},
55         InputOutput{.input = "--instance_name=09-1,tv-2 --group_name cf",
56                     .expected = ExpectedOutput{.group_name = "cf",
57                                                .per_instance_names =
58                                                    std::vector<std::string>{
59                                                        "09-1", "tv-2"}}},
60         InputOutput{
61             .input = "--group_name=cf --instance_name 09",
62             .expected = ExpectedOutput{.group_name = "cf",
63                                        .per_instance_names =
64                                            std::vector<std::string>{"09"}}},
65         InputOutput{.input = "--group_name=my_cool --instance_name=phone-1,tv",
66                     .expected = ExpectedOutput{.group_name = "my_cool",
67                                                .per_instance_names =
68                                                    std::vector<std::string>{
69                                                        "phone-1", "tv"}}},
70         InputOutput{
71             .input = "--instance_name=my-cool",
72             .expected = ExpectedOutput{
73                 .per_instance_names = std::vector<std::string>{"my-cool"}}}));
74 
TEST_P(InvalidNamesTest,InvalidInputs)75 TEST_P(InvalidNamesTest, InvalidInputs) {
76   const uid_t uid = getuid();
77 
78   auto parser = StartSelectorParser::ConductSelectFlagsParser(
79       uid, selector_args_, cvd_common::Args{}, cvd_common::Envs{});
80 
81   ASSERT_FALSE(parser.ok());
82 }
83 
84 INSTANTIATE_TEST_SUITE_P(CvdParser, InvalidNamesTest,
85                          testing::Values("--group_name", "--group_name=?34",
86                                          "--group_name=ab-cd",
87                                          "--group_name=3a", "--instance_name",
88                                          "--instance_name=*7a"));
89 
90 }  // namespace selector
91 }  // namespace cuttlefish
92