| # 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. |
| |
| import("//build/dist/generated_resource.gni") |
| import("//build/dist/renamed_binary.gni") |
| import("//build/dist/resource.gni") |
| import("//build/test.gni") |
| import("//build/testing/bootfs_test.gni") |
| |
| test("runtests-utils") { |
| sources = [ |
| "fuchsia-run-test.cc", |
| "log-exporter-test.cc", |
| "runtests-utils-test-utils.cc", |
| "runtests-utils-test.cc", |
| ] |
| deps = [ |
| "//sdk/fidl/fuchsia.logger:fuchsia.logger_c", |
| "//third_party/re2", |
| "//zircon/system/ulib/fbl", |
| "//zircon/system/ulib/fidl:fidl_base", |
| "//zircon/system/ulib/runtests-utils", |
| "//zircon/system/ulib/zxtest", |
| ] |
| data_deps = [ |
| ":packaged-profile-helper", |
| ":packaged-publish-data-helper", |
| ":packaged-raw-profile", |
| ":test-data", |
| ":test-scripts", |
| ] |
| |
| # TODO(fxbug.dev/95833): This target uses the deprecated C bindings. |
| # Consider switching to the C++ bindings. See linked bug for details. |
| configs += [ "//build/c:fidl-deprecated-c-bindings" ] |
| } |
| |
| executable("publish-data-helper") { |
| testonly = true |
| visibility = [ ":*" ] |
| sources = [ "helper/publish-data-helper.cc" ] |
| deps = [ |
| "//sdk/lib/fdio", |
| "//zircon/system/ulib/zx", |
| "//zircon/system/ulib/zxtest", |
| ] |
| |
| # TODO: Don't instrument the helper until we have a way to route sinks |
| # from the inner runtests instance to the outer one so they make it |
| # into summary.json. |
| } |
| |
| executable("profile-helper") { |
| testonly = true |
| visibility = [ ":*" ] |
| sources = [ "helper/profile-helper.cc" ] |
| |
| deps = [ |
| "//sdk/lib/fdio", |
| "//zircon/system/ulib/fbl", |
| "//zircon/system/ulib/zx", |
| "//zircon/system/ulib/zxtest", |
| ] |
| } |
| |
| renamed_binary("packaged-publish-data-helper") { |
| testonly = true |
| dest = "test/sys/runtests-utils-testdata/publish-data/publish-data-helper" |
| source = "$root_out_dir/publish-data-helper" |
| source_deps = [ ":publish-data-helper" ] |
| } |
| |
| renamed_binary("packaged-profile-helper") { |
| testonly = true |
| dest = "test/sys/runtests-utils-testdata/profile/profile-helper" |
| source = "$root_out_dir/profile-helper" |
| source_deps = [ ":profile-helper" ] |
| } |
| |
| resource("packaged-raw-profile") { |
| testonly = true |
| outputs = [ |
| "test/sys/runtests-utils-testdata/profile/15822697145192797690.profraw", |
| ] |
| sources = [ "helper/15822697145192797690.profraw" ] |
| } |
| |
| generated_resource("test-data") { |
| testonly = true |
| contents = [ "Hello world!" ] |
| outputs = [ "test/sys/runtests-utils-testdata/test-data" ] |
| } |
| |
| # Generates a build script with a sensible #! depending on what our target is. |
| # We used to generate these at runtime, but that design conflicts with our |
| # goals around verified execution, so now we pregenerate them and include them |
| # as part of a signed package. |
| template("runtests_test_script") { |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "contents", |
| "subdirectory", |
| ]) |
| assert(defined(invoker.contents)) |
| |
| if (!defined(invoker.subdirectory)) { |
| subdirectory = "" |
| } else { |
| subdirectory = "${invoker.subdirectory}/" |
| } |
| |
| genfile = "$target_out_dir/test/sys/runtests-utils-testdata/${subdirectory}${target_name}" |
| rebased_genfile = rebase_path(genfile, root_build_dir) |
| |
| action("${target_name}.txt") { |
| testonly = true |
| script = "/bin/bash" |
| args = [ "-c" ] |
| shebang = "#!/boot/bin/sh" |
| args += [ "printf '${shebang}\n\n${invoker.contents}\n' > $rebased_genfile && chmod a+x $rebased_genfile" ] |
| outputs = [ "$genfile" ] |
| } |
| |
| resource("${target_name}") { |
| testonly = true |
| deps = [ ":${target_name}.txt" ] |
| outputs = |
| [ "test/sys/runtests-utils-testdata/${subdirectory}${target_name}" ] |
| sources = [ genfile ] |
| } |
| } |
| |
| runtests_test_script("succeed.sh") { |
| contents = "exit 0" |
| } |
| |
| runtests_test_script("expect-this-success.sh") { |
| contents = "echo Expect this!" |
| } |
| |
| runtests_test_script("expect-this-failure.sh") { |
| contents = "echo Expect this! 1>&2\nexit 77" |
| } |
| |
| runtests_test_script("a.sh") { |
| contents = "" |
| subdirectory = "runtestsbasicpass" |
| } |
| |
| runtests_test_script("b.sh") { |
| contents = "" |
| subdirectory = "runtestsbasicpass" |
| } |
| |
| runtests_test_script("test-basic-succeed.sh") { |
| contents = "echo Success! \$@" |
| subdirectory = "runtestsbasicfail" |
| } |
| |
| runtests_test_script("test-basic-fail.sh") { |
| contents = "echo Failure! \$@ 1>&2\nexit 77" |
| subdirectory = "runtestsbasicfail" |
| } |
| |
| runtests_test_script("test-globs-root.sh") { |
| contents = "echo Success! \$@" |
| subdirectory = "testglobs" |
| } |
| |
| runtests_test_script("test-globs-one.sh") { |
| contents = "echo Success! \$@" |
| subdirectory = "testglobs/A/B/C" |
| } |
| |
| runtests_test_script("test-globs-two.sh") { |
| contents = "echo Success! \$@" |
| subdirectory = "testglobs/A/D/C" |
| } |
| |
| runtests_test_script("test-with-output-succeed.sh") { |
| contents = "echo Success! \$@" |
| subdirectory = "testwithoutput" |
| } |
| |
| runtests_test_script("test-with-output-fail.sh") { |
| contents = "echo Failure! \$@ 1>&2\nexit 77" |
| subdirectory = "testwithoutput" |
| } |
| |
| runtests_test_script("succeed-with-echo.sh") { |
| contents = "echo Success! \$@" |
| } |
| |
| runtests_test_script("test-root-dir.sh") { |
| # Used by RunTestRootDir. |
| contents = "read line < \$TEST_ROOT_DIR/test/sys/runtests-utils-testdata/test-data\necho \\\"\$line\\\"\n" |
| } |
| |
| runtests_test_script("test-inf-loop.sh") { |
| # Used by RunTestTimeout |
| contents = "while true; do echo \"\"; done" |
| } |
| |
| group("test-scripts") { |
| testonly = true |
| deps = [ |
| # Used by RunTestRootDir in fuchsia-run-test.cc |
| ":test-root-dir.sh", |
| |
| # Used by RunTestSuccess, |
| # DiscoverAndRunTestsFailsWithNoTestGlobsOrDefaultDirs, |
| # RunTestTimeout |
| ":succeed.sh", |
| |
| # Used in RunTestTimeout |
| ":test-inf-loop.sh", |
| |
| # Used by RunTestSuccessWithStdout |
| ":expect-this-success.sh", |
| |
| # Used by RunTestFailureWithStderr |
| ":expect-this-failure.sh", |
| |
| # Used by RunTestsWithVerbosity, RunTestsWithArguments, and |
| # DiscoverAndRunTestsFallsBackToDefaultDirs |
| ":succeed-with-echo.sh", |
| |
| # Used in an isolated directory by DiscoverAndRunTestsBasicPass |
| ":a.sh", |
| ":b.sh", |
| |
| # Used in an isolated directory by DiscoverAndRunTestsBasicFail |
| ":test-basic-fail.sh", |
| ":test-basic-succeed.sh", |
| |
| # Used in an isolated tree by DiscoverAndRunTestsWithGlobs |
| ":test-globs-one.sh", |
| ":test-globs-root.sh", |
| ":test-globs-two.sh", |
| |
| # Used in an isolated directory by DiscoverAndRunTestsWithOutput and |
| # DiscoverAndRunTestsWithSyslogOutput |
| ":test-with-output-fail.sh", |
| ":test-with-output-succeed.sh", |
| ] |
| } |
| |
| bootfs_test("runtests-utils-bootfs-test") { |
| name = "runtests-utils" |
| deps = [ ":runtests-utils" ] |
| } |