Ejemplo n.º 1
0
def BuildTargetUnitTest(input_proto, output_proto, _config):
    """Run a build target's ebuild unit tests."""
    # Required args.
    result_path = input_proto.result_path

    # Method flags.
    # An empty sysroot means build packages was not run. This is used for
    # certain boards that need to use prebuilts (e.g. grunt's unittest-only).
    was_built = not input_proto.flags.empty_sysroot

    # Packages to be tested.
    packages_package_info = input_proto.packages
    packages = []
    for package_info_msg in packages_package_info:
        packages.append(controller_util.PackageInfoToString(package_info_msg))

    # Skipped tests.
    # TODO: Remove blacklist when we fully switch to blocklist.
    blocklisted_package_info = (input_proto.package_blacklist
                                or input_proto.package_blocklist)
    blocklist = []
    for package_info_msg in blocklisted_package_info:
        blocklist.append(controller_util.PackageInfoToString(package_info_msg))

    # Allow call to succeed if no tests were found.
    testable_packages_optional = input_proto.flags.testable_packages_optional

    build_target = controller_util.ParseBuildTarget(input_proto.build_target)
    chroot = controller_util.ParseChroot(input_proto.chroot)

    code_coverage = input_proto.flags.code_coverage

    result = test.BuildTargetUnitTest(
        build_target,
        chroot,
        packages=packages,
        blocklist=blocklist,
        was_built=was_built,
        code_coverage=code_coverage,
        testable_packages_optional=testable_packages_optional)

    if not result.success:
        # Failed to run tests or some tests failed.
        # Record all failed packages.
        for cpv in result.failed_cpvs:
            package_info_msg = output_proto.failed_packages.add()
            controller_util.CPVToPackageInfo(cpv, package_info_msg)
        if result.failed_cpvs:
            return controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE
        else:
            return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY

    sysroot = sysroot_lib.Sysroot(build_target.root)
    tarball = test.BuildTargetUnitTestTarball(chroot, sysroot, result_path)
    if tarball:
        output_proto.tarball_path = tarball
    deserialize_metrics_log(output_proto.events, prefix=build_target.name)
Ejemplo n.º 2
0
    def testSuccess(self):
        """Test success handling."""
        result = cros_build_lib.CommandResult(returncode=0)
        self.PatchObject(cros_build_lib, 'CreateTarball', return_value=result)

        path = test.BuildTargetUnitTestTarball(self.chroot, self.sysroot,
                                               self.result_path)

        self.assertStartsWith(path, self.result_path)
Ejemplo n.º 3
0
    def testFailure(self):
        """Test failure creating tarball."""
        result = cros_build_lib.CommandResult(returncode=1)
        self.PatchObject(cros_build_lib, 'CreateTarball', return_value=result)

        path = test.BuildTargetUnitTestTarball(self.chroot, self.sysroot,
                                               self.result_path)

        self.assertIsNone(path)
Ejemplo n.º 4
0
def BuildTargetUnitTest(input_proto, output_proto, _config):
    """Run a build target's ebuild unit tests."""
    # Required args.
    board = input_proto.build_target.name
    result_path = input_proto.result_path

    # Method flags.
    # An empty sysroot means build packages was not run. This is used for
    # certain boards that need to use prebuilts (e.g. grunt's unittest-only).
    was_built = not input_proto.flags.empty_sysroot

    # Skipped tests.
    blacklisted_package_info = input_proto.package_blacklist
    blacklist = []
    for package_info in blacklisted_package_info:
        blacklist.append(controller_util.PackageInfoToString(package_info))

    build_target = build_target_util.BuildTarget(board)
    chroot = controller_util.ParseChroot(input_proto.chroot)

    result = test.BuildTargetUnitTest(build_target,
                                      chroot,
                                      blacklist=blacklist,
                                      was_built=was_built)

    if not result.success:
        # Failed to run tests or some tests failed.
        # Record all failed packages.
        for cpv in result.failed_cpvs:
            package_info = output_proto.failed_packages.add()
            controller_util.CPVToPackageInfo(cpv, package_info)
        if result.failed_cpvs:
            return controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE
        else:
            return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY

    sysroot = sysroot_lib.Sysroot(build_target.root)
    tarball = test.BuildTargetUnitTestTarball(chroot, sysroot, result_path)
    if tarball:
        output_proto.tarball_path = tarball
    deserialize_metrics_log(output_proto.events, prefix=build_target.name)
Ejemplo n.º 5
0
 def testNotExists(self):
     """Test creating the tarball for a path that doesn't exist."""
     path = test.BuildTargetUnitTestTarball(
         self.chroot, sysroot_lib.Sysroot('/invalid/sysroot'),
         self.result_path)
     self.assertIsNone(path)