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);
}