| // Copyright (c) 2026 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "gn/desc_builder.h" |
| |
| #include "gn/test_with_scope.h" |
| #include "util/test/test.h" |
| |
| TEST(DescBuilder, TargetWithValidations) { |
| TestWithScope setup; |
| Err err; |
| |
| Target validation_target(setup.settings(), Label(SourceDir("//foo/"), "val")); |
| validation_target.set_output_type(Target::ACTION); |
| validation_target.visibility().SetPublic(); |
| validation_target.SetToolchain(setup.toolchain()); |
| validation_target.action_values().set_script(SourceFile("//foo/script.py")); |
| validation_target.action_values().outputs() = |
| SubstitutionList::MakeForTest("//out/Debug/val.out"); |
| ASSERT_TRUE(validation_target.OnResolved(&err)); |
| |
| Target target(setup.settings(), Label(SourceDir("//foo/"), "target")); |
| target.set_output_type(Target::GROUP); |
| target.visibility().SetPublic(); |
| target.SetToolchain(setup.toolchain()); |
| target.validations().push_back(LabelTargetPair(&validation_target)); |
| ASSERT_TRUE(target.OnResolved(&err)); |
| |
| std::unique_ptr<base::DictionaryValue> desc = |
| DescBuilder::DescriptionForTarget(&target, "", false, false, false); |
| |
| base::Value* validations = desc->FindKey("validations"); |
| ASSERT_TRUE(validations); |
| ASSERT_TRUE(validations->is_list()); |
| ASSERT_EQ(1u, validations->GetList().size()); |
| EXPECT_EQ("//foo:val()", validations->GetList()[0].GetString()); |
| } |