Global Metrics
path: .metrics.cyclomatic.average
old: 2.489795918367347
new: 1.0
path: .metrics.cyclomatic.sum
old: 122.0
new: 7.0
path: .metrics.nargs.sum
old: 38.0
new: 11.0
path: .metrics.nargs.average
old: 0.8260869565217391
new: 1.0
path: .metrics.nexits.sum
old: 36.0
new: 1.0
path: .metrics.nexits.average
old: 0.782608695652174
new: 0.09090909090909093
path: .metrics.nom.total
old: 46.0
new: 11.0
path: .metrics.nom.closures
old: 0.0
new: 5.0
path: .metrics.nom.functions
old: 46.0
new: 6.0
path: .metrics.mi.mi_sei
old: -55.2261471095111
new: -6.191479607532628
path: .metrics.mi.mi_visual_studio
old: 0.0
new: 22.766895573933414
path: .metrics.mi.mi_original
old: -15.1613787506831
new: 38.931391431426135
path: .metrics.halstead.n1
old: 34.0
new: 15.0
path: .metrics.halstead.time
old: 61673.05443932055
new: 19797.1923429088
path: .metrics.halstead.N1
old: 1405.0
new: 608.0
path: .metrics.halstead.bugs
old: 3.5737490588398555
new: 1.6754423301626444
path: .metrics.halstead.difficulty
old: 54.584664536741215
new: 51.52173913043478
path: .metrics.halstead.purity_ratio
old: 1.1484438322375192
new: 0.4437075290682269
path: .metrics.halstead.length
old: 2410.0
new: 1082.0
path: .metrics.halstead.effort
old: 1110114.97990777
new: 356349.4621723584
path: .metrics.halstead.level
old: 0.0183201638864501
new: 0.019409282700421943
path: .metrics.halstead.vocabulary
old: 347.0
new: 84.0
path: .metrics.halstead.n2
old: 313.0
new: 69.0
path: .metrics.halstead.estimated_program_length
old: 2767.749635692421
new: 480.0915464518215
path: .metrics.halstead.N2
old: 1005.0
new: 474.0
path: .metrics.halstead.volume
old: 20337.48836471361
new: 6916.487451446619
path: .metrics.cognitive.sum
old: 88.0
new: 0.0
path: .metrics.cognitive.average
old: 1.9130434782608696
new: 0.0
path: .metrics.loc.blank
old: 86.0
new: 33.0
path: .metrics.loc.sloc
old: 717.0
new: 184.0
path: .metrics.loc.lloc
old: 216.0
new: 82.0
path: .metrics.loc.ploc
old: 508.0
new: 146.0
path: .metrics.loc.cloc
old: 123.0
new: 5.0
Spaces Data
Minimal test - lines (73, 117)
path: .spaces[3].metrics.nom.closures
old: 0.0
new: 1.0
path: .spaces[3].metrics.nom.total
old: 1.0
new: 2.0
path: .spaces[3].metrics.mi.mi_original
old: 123.4333607810932
new: 69.65941604542324
path: .spaces[3].metrics.mi.mi_sei
old: 102.5794852059376
new: 24.89826194734488
path: .spaces[3].metrics.mi.mi_visual_studio
old: 72.18325191876795
new: 40.73650061135862
path: .spaces[3].metrics.nexits.sum
old: 1.0
new: 0.0
path: .spaces[3].metrics.nexits.average
old: 1.0
new: 0.0
path: .spaces[3].metrics.cognitive.sum
old: 1.0
new: 0.0
path: .spaces[3].metrics.cognitive.average
old: 1.0
new: 0.0
path: .spaces[3].metrics.cyclomatic.sum
old: 2.0
new: 1.0
path: .spaces[3].metrics.cyclomatic.average
old: 2.0
new: 1.0
path: .spaces[3].metrics.loc.lloc
old: 3.0
new: 26.0
path: .spaces[3].metrics.loc.blank
old: 0.0
new: 6.0
path: .spaces[3].metrics.loc.sloc
old: 4.0
new: 45.0
path: .spaces[3].metrics.loc.ploc
old: 4.0
new: 39.0
path: .spaces[3].metrics.halstead.time
old: 36.33300303333635
new: 2825.4394849955256
path: .spaces[3].metrics.halstead.estimated_program_length
old: 52.87076540327685
new: 279.7803006655144
path: .spaces[3].metrics.halstead.N1
old: 20.0
new: 184.0
path: .spaces[3].metrics.halstead.n1
old: 10.0
new: 14.0
path: .spaces[3].metrics.halstead.length
old: 28.0
new: 339.0
path: .spaces[3].metrics.halstead.n2
old: 7.0
new: 42.0
path: .spaces[3].metrics.halstead.effort
old: 653.9940546000543
new: 50857.91072991946
path: .spaces[3].metrics.halstead.vocabulary
old: 17.0
new: 56.0
path: .spaces[3].metrics.halstead.bugs
old: 0.025114697144814475
new: 0.45756320012436774
path: .spaces[3].metrics.halstead.N2
old: 8.0
new: 155.0
path: .spaces[3].metrics.halstead.difficulty
old: 5.714285714285714
new: 25.833333333333332
path: .spaces[3].metrics.halstead.volume
old: 114.4489595550095
new: 1968.6933185775276
path: .spaces[3].metrics.halstead.purity_ratio
old: 1.8882416215456015
new: 0.8253106214321959
path: .spaces[3].metrics.halstead.level
old: 0.175
new: 0.03870967741935484
path: .spaces[3].metrics.nargs.sum
old: 3.0
new: 2.0
path: .spaces[3].metrics.nargs.average
old: 3.0
new: 1.0
Code
TEST(LogCommandLineHandler, MOZ_LOG_and_FILE_regular)
{
nsTArray results;
auto callback = [&](nsACString const& env) mutable {
results.AppendElement(env);
};
char const* argv1[] = {"", "-MOZ_LOG", "modules", "-MOZ_LOG_FILE",
"c:\\file/path"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
EXPECT_TRUE(results.Length() == 2);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
EXPECT_TRUE("MOZ_LOG_FILE=c:\\file/path"_ns.Equals(results[1]));
char const* argv2[] = {"", "-MOZ_LOG=modules", "-MOZ_LOG_FILE=file"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv2), argv2, callback);
EXPECT_TRUE(results.Length() == 2);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
EXPECT_TRUE("MOZ_LOG_FILE=file"_ns.Equals(results[1]));
char const* argv3[] = {"", "--MOZ_LOG", "modules", "--MOZ_LOG_FILE", "file"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv3), argv3, callback);
EXPECT_TRUE(results.Length() == 2);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
EXPECT_TRUE("MOZ_LOG_FILE=file"_ns.Equals(results[1]));
char const* argv4[] = {"", "--MOZ_LOG=modules", "--MOZ_LOG_FILE=file"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv4), argv4, callback);
EXPECT_TRUE(results.Length() == 2);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
EXPECT_TRUE("MOZ_LOG_FILE=file"_ns.Equals(results[1]));
char const* argv5[] = {"", "--MOZ_LOG", "modules", "-P",
"foo", "--MOZ_LOG_FILE", "file"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv5), argv5, callback);
EXPECT_TRUE(results.Length() == 2);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
EXPECT_TRUE("MOZ_LOG_FILE=file"_ns.Equals(results[1]));
}
Minimal test - lines (39, 71)
path: .spaces[2].metrics.cognitive.average
old: 1.0
new: 0.0
path: .spaces[2].metrics.cognitive.sum
old: 1.0
new: 0.0
path: .spaces[2].metrics.nom.closures
old: 0.0
new: 1.0
path: .spaces[2].metrics.nom.total
old: 1.0
new: 2.0
path: .spaces[2].metrics.halstead.N2
old: 10.0
new: 94.0
path: .spaces[2].metrics.halstead.n2
old: 8.0
new: 32.0
path: .spaces[2].metrics.halstead.time
old: 43.806752482386976
new: 1362.9389126570682
path: .spaces[2].metrics.halstead.vocabulary
old: 19.0
new: 46.0
path: .spaces[2].metrics.halstead.estimated_program_length
old: 62.05374780501027
new: 213.3029689088065
path: .spaces[2].metrics.halstead.bugs
old: 0.028450361427303103
new: 0.2814349370904663
path: .spaces[2].metrics.halstead.n1
old: 11.0
new: 14.0
path: .spaces[2].metrics.halstead.difficulty
old: 6.875
new: 20.5625
path: .spaces[2].metrics.halstead.purity_ratio
old: 2.298286955741121
new: 0.987513744948178
path: .spaces[2].metrics.halstead.effort
old: 788.5215446829656
new: 24532.900427827222
path: .spaces[2].metrics.halstead.N1
old: 17.0
new: 122.0
path: .spaces[2].metrics.halstead.volume
old: 114.6940428629768
new: 1193.0893825083149
path: .spaces[2].metrics.halstead.level
old: 0.14545454545454545
new: 0.0486322188449848
path: .spaces[2].metrics.halstead.length
old: 27.0
new: 216.0
path: .spaces[2].metrics.loc.blank
old: 0.0
new: 5.0
path: .spaces[2].metrics.loc.sloc
old: 5.0
new: 33.0
path: .spaces[2].metrics.loc.ploc
old: 5.0
new: 28.0
path: .spaces[2].metrics.loc.lloc
old: 3.0
new: 17.0
path: .spaces[2].metrics.cyclomatic.average
old: 2.0
new: 1.0
path: .spaces[2].metrics.cyclomatic.sum
old: 2.0
new: 1.0
path: .spaces[2].metrics.nargs.sum
old: 0.0
new: 2.0
path: .spaces[2].metrics.nargs.average
old: 0.0
new: 1.0
path: .spaces[2].metrics.mi.mi_original
old: 119.80731177080555
new: 77.28821052707691
path: .spaces[2].metrics.mi.mi_sei
old: 97.34820228077533
new: 35.90428591398775
path: .spaces[2].metrics.mi.mi_visual_studio
old: 70.06275542152373
new: 45.19778393396311
Code
TEST(LogCommandLineHandler, MOZ_LOG_regular)
{
nsTArray results;
auto callback = [&](nsACString const& env) mutable {
results.AppendElement(env);
};
char const* argv1[] = {"", "-MOZ_LOG", "module1:5,module2:4,sync,timestamp"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
EXPECT_TRUE(results.Length() == 1);
EXPECT_TRUE(
"MOZ_LOG=module1:5,module2:4,sync,timestamp"_ns.Equals(results[0]));
char const* argv2[] = {"", "-MOZ_LOG=modules"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv2), argv2, callback);
EXPECT_TRUE(results.Length() == 1);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
char const* argv3[] = {"", "--MOZ_LOG", "modules"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv3), argv3, callback);
EXPECT_TRUE(results.Length() == 1);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
char const* argv4[] = {"", "--MOZ_LOG=modules"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv4), argv4, callback);
EXPECT_TRUE(results.Length() == 1);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
}
Minimal test - lines (20, 22)
path: .spaces[0].metrics.mi.mi_original
old: 67.5189679088077
new: 133.808130442365
path: .spaces[0].metrics.mi.mi_visual_studio
old: 39.48477655485831
new: 78.25036867974562
path: .spaces[0].metrics.mi.mi_sei
old: 57.29074085556441
new: 117.44529408721525
path: .spaces[0].metrics.nom.total
old: 4.0
new: 1.0
path: .spaces[0].metrics.nom.functions
old: 4.0
new: 1.0
path: .spaces[0].metrics.nargs.average
old: 0.25
new: 1.0
path: .spaces[0].metrics.cyclomatic.sum
old: 6.0
new: 1.0
path: .spaces[0].metrics.nexits.average
old: 0.25
new: 1.0
path: .spaces[0].metrics.loc.blank
old: 12.0
new: 0.0
path: .spaces[0].metrics.loc.lloc
old: 3.0
new: 1.0
path: .spaces[0].metrics.loc.cloc
old: 15.0
new: 0.0
path: .spaces[0].metrics.loc.ploc
old: 33.0
new: 3.0
path: .spaces[0].metrics.loc.sloc
old: 60.0
new: 3.0
path: .spaces[0].metrics.halstead.estimated_program_length
old: 327.8440120902635
new: 24.406371956566694
path: .spaces[0].metrics.halstead.vocabulary
old: 64.0
new: 10.0
path: .spaces[0].metrics.halstead.purity_ratio
old: 2.0237284696929847
new: 2.033864329713891
path: .spaces[0].metrics.halstead.length
old: 162.0
new: 12.0
path: .spaces[0].metrics.halstead.volume
old: 972.0
new: 39.86313713864835
path: .spaces[0].metrics.halstead.n1
old: 19.0
new: 7.0
path: .spaces[0].metrics.halstead.n2
old: 45.0
new: 3.0
path: .spaces[0].metrics.halstead.effort
old: 13953.6
new: 186.0279733136923
path: .spaces[0].metrics.halstead.level
old: 0.0696594427244582
new: 0.21428571428571427
path: .spaces[0].metrics.halstead.N1
old: 94.0
new: 8.0
path: .spaces[0].metrics.halstead.bugs
old: 0.19319813277004055
new: 0.010862528153285396
path: .spaces[0].metrics.halstead.difficulty
old: 14.355555555555556
new: 4.666666666666667
path: .spaces[0].metrics.halstead.time
old: 775.2
new: 10.33488740631624
path: .spaces[0].metrics.halstead.N2
old: 68.0
new: 4.0
Code
constexpr size_t array_size(T (&)[N]) {
return N;
}
Minimal test - lines (24, 37)
path: .spaces[1].metrics.nargs.sum
old: 1.0
new: 2.0
path: .spaces[1].metrics.mi.mi_original
old: 101.1897551467902
new: 98.5929156472978
path: .spaces[1].metrics.mi.mi_visual_studio
old: 59.175295407479645
new: 57.656675817133205
path: .spaces[1].metrics.mi.mi_sei
old: 100.14692138600796
new: 66.64047833853209
path: .spaces[1].metrics.halstead.vocabulary
old: 29.0
new: 26.0
path: .spaces[1].metrics.halstead.volume
old: 257.4729927417613
new: 286.7268228066066
path: .spaces[1].metrics.halstead.length
old: 53.0
new: 61.0
path: .spaces[1].metrics.halstead.N1
old: 32.0
new: 36.0
path: .spaces[1].metrics.halstead.effort
old: 2196.566469328151
new: 2240.053303176614
path: .spaces[1].metrics.halstead.time
old: 122.0314705182306
new: 124.44740573203411
path: .spaces[1].metrics.halstead.difficulty
old: 8.53125
new: 7.8125
path: .spaces[1].metrics.halstead.level
old: 0.11721611721611722
new: 0.128
path: .spaces[1].metrics.halstead.estimated_program_length
old: 112.1057163358342
new: 97.21928094887365
path: .spaces[1].metrics.halstead.purity_ratio
old: 2.1152021950157396
new: 1.5937587040798955
path: .spaces[1].metrics.halstead.bugs
old: 0.05632592230887022
new: 0.057066904257208305
path: .spaces[1].metrics.halstead.n1
old: 13.0
new: 10.0
path: .spaces[1].metrics.halstead.N2
old: 21.0
new: 25.0
path: .spaces[1].metrics.cyclomatic.sum
old: 3.0
new: 1.0
path: .spaces[1].metrics.cyclomatic.average
old: 3.0
new: 1.0
path: .spaces[1].metrics.loc.blank
old: 1.0
new: 2.0
path: .spaces[1].metrics.loc.ploc
old: 9.0
new: 12.0
path: .spaces[1].metrics.loc.cloc
old: 2.0
new: 0.0
path: .spaces[1].metrics.loc.lloc
old: 6.0
new: 5.0
path: .spaces[1].metrics.loc.sloc
old: 12.0
new: 14.0
path: .spaces[1].metrics.nom.closures
old: 0.0
new: 1.0
path: .spaces[1].metrics.nom.total
old: 1.0
new: 2.0
path: .spaces[1].metrics.cognitive.sum
old: 2.0
new: 0.0
path: .spaces[1].metrics.cognitive.average
old: 2.0
new: 0.0
Code
TEST(LogCommandLineHandler, Empty)
{
bool callbackInvoked = false;
auto callback = [&](nsACString const& env) mutable {
callbackInvoked = true;
};
mozilla::LoggingHandleCommandLineArgs(0, nullptr, callback);
EXPECT_FALSE(callbackInvoked);
char const* argv1[] = {""};
mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
EXPECT_FALSE(callbackInvoked);
}
Minimal test - lines (119, 151)
path: .spaces[4].metrics.nargs.average
old: 2.0
new: 1.0
path: .spaces[4].metrics.halstead.time
old: 2506.9295531400585
new: 1475.0951852232993
path: .spaces[4].metrics.halstead.purity_ratio
old: 1.7482407369728752
new: 0.8240112750257035
path: .spaces[4].metrics.halstead.estimated_program_length
old: 423.0742583474358
new: 175.51440158047484
path: .spaces[4].metrics.halstead.N1
old: 140.0
new: 126.0
path: .spaces[4].metrics.halstead.bugs
old: 0.42249525461870713
new: 0.29667010067311506
path: .spaces[4].metrics.halstead.level
old: 0.03380662609871535
new: 0.04269293924466338
path: .spaces[4].metrics.halstead.length
old: 242.0
new: 213.0
path: .spaces[4].metrics.halstead.n1
old: 29.0
new: 14.0
path: .spaces[4].metrics.halstead.difficulty
old: 29.58
new: 23.423076923076923
path: .spaces[4].metrics.halstead.N2
old: 102.0
new: 87.0
path: .spaces[4].metrics.halstead.n2
old: 50.0
new: 26.0
path: .spaces[4].metrics.halstead.vocabulary
old: 79.0
new: 40.0
path: .spaces[4].metrics.halstead.volume
old: 1525.514941058859
new: 1133.5706842110085
path: .spaces[4].metrics.halstead.effort
old: 45124.73195652105
new: 26551.713334019387
path: .spaces[4].metrics.cyclomatic.sum
old: 13.0
new: 1.0
path: .spaces[4].metrics.cyclomatic.average
old: 13.0
new: 1.0
path: .spaces[4].metrics.mi.mi_original
old: 67.18008967206356
new: 77.55431280252053
path: .spaces[4].metrics.mi.mi_sei
old: 53.62462939623218
new: 36.28819034713952
path: .spaces[4].metrics.mi.mi_visual_studio
old: 39.28660214740559
new: 45.353399299719605
path: .spaces[4].metrics.loc.sloc
old: 48.0
new: 33.0
path: .spaces[4].metrics.loc.ploc
old: 36.0
new: 27.0
path: .spaces[4].metrics.loc.blank
old: 3.0
new: 6.0
path: .spaces[4].metrics.loc.lloc
old: 15.0
new: 16.0
path: .spaces[4].metrics.loc.cloc
old: 9.0
new: 0.0
path: .spaces[4].metrics.nexits.average
old: 2.0
new: 0.0
path: .spaces[4].metrics.nexits.sum
old: 2.0
new: 0.0
path: .spaces[4].metrics.nom.total
old: 1.0
new: 2.0
path: .spaces[4].metrics.nom.closures
old: 0.0
new: 1.0
path: .spaces[4].metrics.cognitive.sum
old: 13.0
new: 0.0
path: .spaces[4].metrics.cognitive.average
old: 13.0
new: 0.0
Code
TEST(LogCommandLineHandler, MOZ_LOG_fuzzy)
{
nsTArray results;
auto callback = [&](nsACString const& env) mutable {
results.AppendElement(env);
};
char const* argv1[] = {"", "-MOZ_LOG"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
EXPECT_TRUE(results.Length() == 0);
char const* argv2[] = {"", "modules"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv2), argv2, callback);
EXPECT_TRUE(results.Length() == 0);
char const* argv3[] = {"", "-MOZ_LOG,modules", "-MOZ_LOG"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv3), argv3, callback);
EXPECT_TRUE(results.Length() == 0);
char const* argv4[] = {"", "-MOZ_LOG", "-MOZ_LOG", "-MOZ_LOG"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv4), argv4, callback);
EXPECT_TRUE(results.Length() == 0);
char const* argv5[] = {"", "-MOZ_LOG", "-diffent_command", "modules"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv5), argv5, callback);
EXPECT_TRUE(results.Length() == 0);
}
Minimal test - lines (153, 184)
path: .spaces[5].metrics.nom.closures
old: 0.0
new: 1.0
path: .spaces[5].metrics.nom.total
old: 1.0
new: 2.0
path: .spaces[5].metrics.loc.blank
old: 0.0
new: 5.0
path: .spaces[5].metrics.loc.lloc
old: 2.0
new: 17.0
path: .spaces[5].metrics.loc.sloc
old: 8.0
new: 32.0
path: .spaces[5].metrics.loc.ploc
old: 8.0
new: 27.0
path: .spaces[5].metrics.cyclomatic.average
old: 3.0
new: 1.0
path: .spaces[5].metrics.cyclomatic.sum
old: 3.0
new: 1.0
path: .spaces[5].metrics.cognitive.average
old: 1.0
new: 0.0
path: .spaces[5].metrics.cognitive.sum
old: 1.0
new: 0.0
path: .spaces[5].metrics.nargs.sum
old: 1.0
new: 2.0
path: .spaces[5].metrics.halstead.vocabulary
old: 22.0
new: 48.0
path: .spaces[5].metrics.halstead.level
old: 0.1111111111111111
new: 0.049062049062049064
path: .spaces[5].metrics.halstead.effort
old: 1565.2604981416912
new: 25726.636968763116
path: .spaces[5].metrics.halstead.purity_ratio
old: 1.954841819423782
new: 1.0012243606695486
path: .spaces[5].metrics.halstead.n1
old: 12.0
new: 14.0
path: .spaces[5].metrics.halstead.estimated_program_length
old: 76.2388309575275
new: 226.276705511318
path: .spaces[5].metrics.halstead.n2
old: 10.0
new: 34.0
path: .spaces[5].metrics.halstead.difficulty
old: 9.0
new: 20.38235294117647
path: .spaces[5].metrics.halstead.length
old: 39.0
new: 226.0
path: .spaces[5].metrics.halstead.bugs
old: 0.04493690549234803
new: 0.2904919425364953
path: .spaces[5].metrics.halstead.time
old: 86.9589165634273
new: 1429.2576093757286
path: .spaces[5].metrics.halstead.volume
old: 173.9178331268546
new: 1262.2015251629812
path: .spaces[5].metrics.halstead.N1
old: 24.0
new: 127.0
path: .spaces[5].metrics.halstead.N2
old: 15.0
new: 99.0
path: .spaces[5].metrics.mi.mi_sei
old: 83.01023728503063
new: 36.20102190658308
path: .spaces[5].metrics.mi.mi_visual_studio
old: 64.20959977226127
new: 45.318065639599446
path: .spaces[5].metrics.mi.mi_original
old: 109.79841561056676
new: 77.49389224371505
Code
TEST(LogCommandLineHandler, MOZ_LOG_overlapping)
{
nsTArray results;
auto callback = [&](nsACString const& env) mutable {
results.AppendElement(env);
};
char const* argv1[] = {"", "-MOZ_LOG=modules1", "-MOZ_LOG=modules2"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv1), argv1, callback);
EXPECT_TRUE(results.Length() == 2);
EXPECT_TRUE("MOZ_LOG=modules1"_ns.Equals(results[0]));
EXPECT_TRUE("MOZ_LOG=modules2"_ns.Equals(results[1]));
char const* argv2[] = {"", "-MOZ_LOG", "--MOZ_LOG", "modules"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv2), argv2, callback);
EXPECT_TRUE(results.Length() == 1);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
char const* argv3[] = {"", "-MOZ_LOG_FILE", "-MOZ_LOG", "modules"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv3), argv3, callback);
EXPECT_TRUE(results.Length() == 1);
EXPECT_TRUE("MOZ_LOG=modules"_ns.Equals(results[0]));
char const* argv4[] = {"", "-MOZ_LOG", "-MOZ_LOG_FILE", "-MOZ_LOG"};
results.Clear();
mozilla::LoggingHandleCommandLineArgs(array_size(argv4), argv4, callback);
EXPECT_TRUE(results.Length() == 0);
}