blob: 23f1772273d668ea60dc2790d7abf42a42285bc0 [file] [log] [blame]
// 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());
}