blob: 6a1012001e32e52a9ceed8e4ce55705fb1fc9d30 [file] [log] [blame]
// Copyright 2020 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.
#include <errno.h>
#include <lib/fdio/directory.h>
#include <lib/fdio/fd.h>
#include <lib/fdio/fdio.h>
#include <lib/fdio/spawn.h>
#include <lib/zx/process.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <zircon/process.h>
#include <zircon/processargs.h>
#include <zircon/syscalls.h>
#include <zircon/syscalls/object.h>
#include <zxtest/zxtest.h>
TEST(lsusb, DoesNotCrashOrHang) {
zx::process process;
const char* kArgs[] = {"/pkg/bin/lsusb", "-debug", nullptr};
ASSERT_OK(fdio_spawn(0, FDIO_SPAWN_CLONE_ALL, "/pkg/bin/lsusb", kArgs,
process.reset_and_get_address()));
// process.wait_one(ZX_PROCESS_TERMINATED, zx::time::infinite(), nullptr);
process.wait_one(ZX_PROCESS_TERMINATED, zx::deadline_after(zx::sec(2)), nullptr);
zx_info_process_t info;
size_t actual = sizeof(info);
size_t avail = sizeof(info);
zx_status_t status = process.get_info(ZX_INFO_PROCESS, &info, sizeof(info), &actual, &avail);
printf("libusb: get_info returned %d\n", status);
if (status == ZX_OK) {
printf("libusb: exited=%d\n", (info.flags & ZX_INFO_PROCESS_FLAG_EXITED) != 0);
printf("libusb: return_code=%ld\n", info.return_code);
}
// ASSERT_OK(process.get_info(ZX_INFO_PROCESS, &info, sizeof(info), &actual, &avail));
// ASSERT_TRUE(info.flags & ZX_INFO_PROCESS_FLAG_EXITED);
// ASSERT_EQ(info.return_code, 0);
}