blob: 3271ab8120dd74372c7e6b19416ca27b97ec11e8 [file] [log] [blame]
Avi Drissman505076bc2022-10-06 21:15:301// Copyright 2022 The Chromium Authors
Victor Costand4993a72022-01-04 17:53:192// Use of this source code is governed by a BSD-style license that can be
Avi Drissman505076bc2022-10-06 21:15:303// found in the LICENSE file.
Victor Costand4993a72022-01-04 17:53:194
David Benjamin4e47ccd362024-07-11 21:29:505#include <optional>
6
Reilly Grantd6c56532023-04-06 03:13:037#include "base/test/launcher/unit_test_launcher.h"
Victor Costand4993a72022-01-04 17:53:198#include "base/test/task_environment.h"
Reilly Grantd6c56532023-04-06 03:13:039#include "base/test/test_suite.h"
Reilly Grantd6c56532023-04-06 03:13:0310
11namespace {
12
13class LevelDbTestSuite : public base::TestSuite {
14 public:
15 LevelDbTestSuite(int argc, char** argv) : base::TestSuite(argc, argv) {}
16
17 LevelDbTestSuite(const LevelDbTestSuite&) = delete;
18 LevelDbTestSuite& operator=(const LevelDbTestSuite&) = delete;
19
20 ~LevelDbTestSuite() override = default;
21
22 void Initialize() override {
23 base::TestSuite::Initialize();
24 task_environment_.emplace();
25 }
26
27 void Shutdown() override {
28 task_environment_.reset();
29 base::TestSuite::Shutdown();
30 }
31
32 private:
33 // Chromium's leveldb::Env uses PostTask.
David Benjamin4e47ccd362024-07-11 21:29:5034 std::optional<base::test::TaskEnvironment> task_environment_;
Reilly Grantd6c56532023-04-06 03:13:0335};
36
37} // namespace
Victor Costand4993a72022-01-04 17:53:1938
39int main(int argc, char** argv) {
Reilly Grantd6c56532023-04-06 03:13:0340 LevelDbTestSuite test_suite(argc, argv);
Victor Costand4993a72022-01-04 17:53:1941
Reilly Grantd6c56532023-04-06 03:13:0342 // Many tests reuse the same database path and so must run serially.
43 return base::LaunchUnitTestsSerially(
44 argc, argv,
45 base::BindOnce(&LevelDbTestSuite::Run, base::Unretained(&test_suite)));
Victor Costand4993a72022-01-04 17:53:1946}