magnusbaeck / logstash-filter-verifier

Apache License 2.0
191 stars 27 forks source link

"fields" field mixed between testcases #155

Closed nicolasreich closed 2 years ago

nicolasreich commented 2 years ago

When there are several testcases, each with their own fields object, it seems only the last one is applied.

Minimal example to reproduce:

Logstash config:

input {
  stdin {
    id => json_lines
    codec => json
  }
}

output {
  tcp {
    id => "stdout"
  }
} 

Test file:

---
ignore:
  - "@timestamp"
input_plugin: "json_lines"
testcases:
  - input:
      - >
        {
          "message": "message1"
        }
    fields:
      hostname: host1
    expected:
      - message: "message1"
        hostname: "host1"
  - input:
      - >
        {
          "message": "message2"
        }
    fields:
      hostname: host2
    expected:
      - message: "message2"
        hostname: "host2"
  - input:
      - >
        {
          "message": "message3"
        }
    fields:
      hostname: host3
    expected:
      - message: "message3"
        hostname: "host3"

Test output:

☐ Comparing message 1 of 3 from fields.test.yaml:
--- /tmp/233222551/fields.test.yaml/1/expected  2021-10-22 14:48:32.116299435 +0200
+++ /tmp/233222551/fields.test.yaml/1/actual    2021-10-22 14:48:32.116299435 +0200
@@ -1,4 +1,4 @@
 {
-  "hostname": "host1",
+  "hostname": "host3",
   "message": "message1"
 }

☐ Comparing message 2 of 3 from fields.test.yaml:
--- /tmp/233222551/fields.test.yaml/2/expected  2021-10-22 14:48:32.116299435 +0200
+++ /tmp/233222551/fields.test.yaml/2/actual    2021-10-22 14:48:32.116299435 +0200
@@ -1,4 +1,4 @@
 {
-  "hostname": "host2",
+  "hostname": "host3",
   "message": "message2"
 }

☑ Comparing message 3 of 3 from fields.test.yaml

Summary: ☐ All tests: 1/3
         ☐ fields.test.yaml: 1/3
logstash-filter-verifier: error: failed test cases