| // Copyright 2018 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. |
| |
| #pragma once |
| |
| #include <fuzz-utils/string-map.h> |
| #include <stdint.h> |
| |
| #include "fixture.h" |
| |
| namespace fuzzing { |
| namespace testing { |
| |
| // |fuzzing::testing::FuzzerFixture| is a fixture that understands fuzzer path locations. It should |
| // not be instantiated directly; use |CreateZircon| or |CreateFuchsia| below. |
| class FuzzerFixture final : public Fixture { |
| public: |
| // Creates a number of temporary, fake directories and files to mimic a deployment of |
| // fuzz-targets on Zircon. The files and directories are automatically deleted when the fixture |
| // is destroyed. |
| bool CreateZircon(); |
| |
| // Creates a number of temporary, fake directories and files to mimic a deployment of |
| // fuzz-packages on Fuchsia. The files and directories are automatically deleted when the |
| // fixture is destroyed. |
| bool CreateFuchsia(); |
| |
| // Returns the maximum version of the given |Package| in the fixture as a C-style string, or |
| // "0" if the package wasn't created by the fixture. |
| const char* max_version(const char* package) const; |
| |
| protected: |
| // Resets the object to a pristine state. |
| void Reset() override; |
| |
| private: |
| // Creates a fake fuzz |target| in the given |version| of a fake Fuchsia |package|. Adds fake |
| // executable and data files as indicated by |flags|. |
| bool CreatePackage(const char* package, long int version, const char* target); |
| |
| // Creates fake data mimicking outputs from a previous run of the fuzzer given by the |package| |
| // and |target|. |
| bool CreateData(const char* package, const char* target); |
| |
| // maps packages to maximum versions. |
| StringMap max_versions_; |
| }; |
| |
| } // namespace testing |
| } // namespace fuzzing |