* * * * *

             I can't believe I didn't think of that—clarification

Over on MeLinkedInstaMyFaceInGramSpaceBookWe, my friend Brian commented
“Cool! (Whatever it was exactly you did!!!)” about my work issue [1].
Rereading that post, I think I can clarify a bit what I did. But first, a
disclaimer: I'm not revealing any personal information here as all the data
for the regression test is randomly generated. Names, numbers, it's all
generated data.

So I ran the test and the output from that is a file that looks like (feature
names changed to protect me):

-----[ data ]-----
ERR CNAM feature8 failed: wanted "VINCENZA GALJOUR" got ""
testcase =
{
 id = "3.0037",
 orig =
 {
   number = "2012013877",
   person =
   {
     business = "-",
     first = "VINCENZA",
     name = "VINCENZA GALJOUR",
     last = "GALJOUR",
   },
   feature9 = false,
   cnam = true,
   extcnam = false,
   feature4 = true,
   feature10 = false,
   feature7 = false,
   feature8 = true,
 },
 term =
 {
   feature10 = true,
   feature1 = false,
   feature2 = false,
   feature3 = false,
   feature4 = true,
   feature5 = false,
   feature6 = false,
   number = "6012013877",
   feature7 = false,
   feature8 = false,
 },
}

ERR CNAM feature8 failed: wanted "TERINA SCHUPP" got ""
testcase =
{
 id = "3.0039",
 orig =
 {
   number = "2012013879",
   person =
   {
     business = "-",
     first = "TERINA",
     name = "TERINA SCHUPP",
     last = "SCHUPP",
   },
   feature9 = false,
   cnam = true,
   extcnam = false,
   feature4 = true,
   feature10 = false,
   feature7 = false,
   feature8 = true,
 },
 term =
 {
   feature10 = true,
   feature1 = false,
   feature2 = false,
   feature3 = false,
   feature4 = true,
   feature5 = false,
   feature6 = false,
   number = "6012013879",
   feature7 = false,
   feature8 = false,
 },
}
-----[ END OF LINE ]-----

Since the regression test is written in Lua [2], I found it easy to just dump
the structure holding the test data to the file, given I already have have a
function to do so [3]. I also print out what failed just before the data for
that particular test case. The code that prints the structure outputs valid
Lua code. All I changed was adding an array declaration around the output,
turned the error message into a comment, and changed testcase to a valid
array index:

-----[ Lua ]-----
testcase = {
-- ERR CNAM feature8 failed: wanted "VINCENZA GALJOUR" got ""
[1] =
{
 id = "3.0037",
 orig =
 {
   number = "2012013877",
   person =
   {
     business = "-",
     first = "VINCENZA",
     name = "VINCENZA GALJOUR",
     last = "GALJOUR",
   },
   feature9 = false,
   cnam = true,
   extcnam = false,
   feature4 = true,
   feature10 = false,
   feature7 = false,
   feature8 = true,
 },
 term =
 {
   feature10 = true,
   feature1 = false,
   feature2 = false,
   feature3 = false,
   feature4 = true,
   feature5 = false,
   feature6 = false,
   number = "6012013877",
   feature7 = false,
   feature8 = false,
 },
}

-- ERR CNAM feature8 failed: wanted "TERINA SCHUPP" got ""
[2] =
{
 id = "3.0039",
 orig =
 {
   number = "2012013879",
   person =
   {
     business = "-",
     first = "TERINA",
     name = "TERINA SCHUPP",
     last = "SCHUPP",
   },
   feature9 = false,
   cnam = true,
   extcnam = false,
   feature4 = true,
   feature10 = false,
   feature7 = false,
   feature8 = true,
 },
 term =
 {
   feature10 = true,
   feature1 = false,
   feature2 = false,
   feature3 = false,
   feature4 = true,
   feature5 = false,
   feature6 = false,
   number = "6012013879",
   feature7 = false,
   feature8 = false,
 },
}
}
-----[ END OF LINE ]-----

That way, I can verify my hypothesis with some simple Lua code:

-----[ Lua ]-----
dofile "errorlog.txt"
for _,result in ipairs(testcase) do
 if not (result.feature10 and (result.feature8 or result.feature4)) then
   print("hypothesis failed")
 end
end
-----[ END OF LINE ]-----

[1] gopher://gopher.conman.org/0Phlog:2020/07/29.1
[2] https://www.lua.org/
[3] https://github.com/spc476/lua-conmanorg/blob/0993e149dfd42934b6dad2784abe7e3eb12b2219/lua/table.lua#L132

Email author at [email protected]