Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/xpcom/tests/gtest/TestLogCommandLineHandler.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#include "LogCommandLineHandler.h"
8
9
#include <iterator>
10
#include "nsString.h"
11
#include "nsTArray.h"
12
#include "mozilla/UniquePtr.h"
13
#include "mozilla/UniquePtrExtensions.h"
14
#include "plstr.h"
15
#include "gtest/gtest.h"
16
17
using namespace mozilla;
18
19
template<class T, size_t N>
20
constexpr size_t array_size(T (&)[N])
21
0
{
22
0
  return N;
23
0
}
Unexecuted instantiation: unsigned long array_size<char const*, 1ul>(char const* (&) [1ul])
Unexecuted instantiation: unsigned long array_size<char const*, 3ul>(char const* (&) [3ul])
Unexecuted instantiation: unsigned long array_size<char const*, 2ul>(char const* (&) [2ul])
Unexecuted instantiation: unsigned long array_size<char const*, 5ul>(char const* (&) [5ul])
Unexecuted instantiation: unsigned long array_size<char const*, 7ul>(char const* (&) [7ul])
Unexecuted instantiation: unsigned long array_size<char const*, 4ul>(char const* (&) [4ul])
24
25
TEST(LogCommandLineHandler, Empty)
26
0
{
27
0
  bool callbackInvoked = false;
28
0
  auto callback = [&](nsACString const& env) mutable {
29
0
    callbackInvoked = true;
30
0
  };
31
0
32
0
  mozilla::LoggingHandleCommandLineArgs(0, nullptr, callback);
33
0
  EXPECT_FALSE(callbackInvoked);
34
0
35
0
  char const* argv1[] = { "" };
36
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
37
0
  EXPECT_FALSE(callbackInvoked);
38
0
}
39
40
TEST(LogCommandLineHandler, MOZ_LOG_regular)
41
0
{
42
0
  nsTArray<nsCString> results;
43
0
44
0
  auto callback = [&](nsACString const& env) mutable {
45
0
    results.AppendElement(env);
46
0
  };
47
0
48
0
  char const* argv1[] = { "", "-MOZ_LOG", "module1:5,module2:4,sync,timestamp" };
49
0
  results.Clear();
50
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
51
0
  EXPECT_TRUE(results.Length() == 1);
52
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=module1:5,module2:4,sync,timestamp").Equals(results[0]));
53
0
54
0
  char const* argv2[] = { "", "-MOZ_LOG=modules" };
55
0
  results.Clear();
56
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv2), argv2, callback);
57
0
  EXPECT_TRUE(results.Length() == 1);
58
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
59
0
60
0
  char const* argv3[] = { "", "--MOZ_LOG", "modules" };
61
0
  results.Clear();
62
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv3), argv3, callback);
63
0
  EXPECT_TRUE(results.Length() == 1);
64
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
65
0
66
0
  char const* argv4[] = { "", "--MOZ_LOG=modules" };
67
0
  results.Clear();
68
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv4), argv4, callback);
69
0
  EXPECT_TRUE(results.Length() == 1);
70
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
71
0
}
72
73
TEST(LogCommandLineHandler, MOZ_LOG_and_FILE_regular)
74
0
{
75
0
  nsTArray<nsCString> results;
76
0
77
0
  auto callback = [&](nsACString const& env) mutable {
78
0
    results.AppendElement(env);
79
0
  };
80
0
81
0
  char const* argv1[] = { "", "-MOZ_LOG", "modules", "-MOZ_LOG_FILE", "c:\\file/path" };
82
0
  results.Clear();
83
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
84
0
  EXPECT_TRUE(results.Length() == 2);
85
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
86
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG_FILE=c:\\file/path").Equals(results[1]));
87
0
88
0
  char const* argv2[] = { "", "-MOZ_LOG=modules", "-MOZ_LOG_FILE=file" };
89
0
  results.Clear();
90
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv2), argv2, callback);
91
0
  EXPECT_TRUE(results.Length() == 2);
92
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
93
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG_FILE=file").Equals(results[1]));
94
0
95
0
  char const* argv3[] = { "", "--MOZ_LOG", "modules", "--MOZ_LOG_FILE", "file" };
96
0
  results.Clear();
97
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv3), argv3, callback);
98
0
  EXPECT_TRUE(results.Length() == 2);
99
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
100
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG_FILE=file").Equals(results[1]));
101
0
102
0
  char const* argv4[] = { "", "--MOZ_LOG=modules", "--MOZ_LOG_FILE=file" };
103
0
  results.Clear();
104
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv4), argv4, callback);
105
0
  EXPECT_TRUE(results.Length() == 2);
106
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
107
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG_FILE=file").Equals(results[1]));
108
0
109
0
  char const* argv5[] = { "", "--MOZ_LOG", "modules", "-P", "foo", "--MOZ_LOG_FILE", "file" };
110
0
  results.Clear();
111
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv5), argv5, callback);
112
0
  EXPECT_TRUE(results.Length() == 2);
113
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
114
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG_FILE=file").Equals(results[1]));
115
0
}
116
117
TEST(LogCommandLineHandler, MOZ_LOG_fuzzy)
118
0
{
119
0
  nsTArray<nsCString> results;
120
0
121
0
  auto callback = [&](nsACString const& env) mutable {
122
0
    results.AppendElement(env);
123
0
  };
124
0
125
0
  char const* argv1[] = { "", "-MOZ_LOG" };
126
0
  results.Clear();
127
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
128
0
  EXPECT_TRUE(results.Length() == 0);
129
0
130
0
  char const* argv2[] = { "", "modules" };
131
0
  results.Clear();
132
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv2), argv2, callback);
133
0
  EXPECT_TRUE(results.Length() == 0);
134
0
135
0
  char const* argv3[] = { "", "-MOZ_LOG,modules", "-MOZ_LOG" };
136
0
  results.Clear();
137
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv3), argv3, callback);
138
0
  EXPECT_TRUE(results.Length() == 0);
139
0
140
0
  char const* argv4[] = { "", "-MOZ_LOG", "-MOZ_LOG", "-MOZ_LOG" };
141
0
  results.Clear();
142
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv4), argv4, callback);
143
0
  EXPECT_TRUE(results.Length() == 0);
144
0
145
0
  char const* argv5[] = { "", "-MOZ_LOG", "-diffent_command", "modules" };
146
0
  results.Clear();
147
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv5), argv5, callback);
148
0
  EXPECT_TRUE(results.Length() == 0);
149
0
}
150
151
TEST(LogCommandLineHandler, MOZ_LOG_overlapping)
152
0
{
153
0
  nsTArray<nsCString> results;
154
0
155
0
  auto callback = [&](nsACString const& env) mutable {
156
0
    results.AppendElement(env);
157
0
  };
158
0
159
0
  char const* argv1[] = { "", "-MOZ_LOG=modules1", "-MOZ_LOG=modules2" };
160
0
  results.Clear();
161
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
162
0
  EXPECT_TRUE(results.Length() == 2);
163
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules1").Equals(results[0]));
164
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules2").Equals(results[1]));
165
0
166
0
  char const* argv2[] = { "", "-MOZ_LOG", "--MOZ_LOG", "modules" };
167
0
  results.Clear();
168
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv2), argv2, callback);
169
0
  EXPECT_TRUE(results.Length() == 1);
170
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
171
0
172
0
  char const* argv3[] = { "", "-MOZ_LOG_FILE", "-MOZ_LOG", "modules" };
173
0
  results.Clear();
174
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv3), argv3, callback);
175
0
  EXPECT_TRUE(results.Length() == 1);
176
0
  EXPECT_TRUE(NS_LITERAL_CSTRING("MOZ_LOG=modules").Equals(results[0]));
177
0
178
0
  char const* argv4[] = { "", "-MOZ_LOG", "-MOZ_LOG_FILE", "-MOZ_LOG" };
179
0
  results.Clear();
180
0
  mozilla::LoggingHandleCommandLineArgs(array_size(argv4), argv4, callback);
181
0
  EXPECT_TRUE(results.Length() == 0);
182
0
}