bids-standard / legacy-validator

Validator for the Brain Imaging Data Structure
https://bids-standard.github.io/legacy-validator/
MIT License
186 stars 111 forks source link

test: Add unit tests for valid and invalid filenames #2079

Closed effigies closed 3 months ago

effigies commented 3 months ago

Currently failing:

Failures ```console ❯ deno test -A src/validators/validateFiles.test.ts --parallel | grep FAILED ./src/validators/validateFiles.test.ts => test valid paths ... /dataset_description.json ... FAILED (2ms) ./src/validators/validateFiles.test.ts => test valid paths ... /phenotype/measurement_tool_name.tsv ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /phenotype/measurement_tool_name.json ... FAILED (1ms) ./src/validators/validateFiles.test.ts => test valid paths ... FAILED (due to 3 failed steps) (10ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /dataset_descrption.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /participnts.tsv ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /particpants.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-02/sub-01_sessions.tsv ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01_sessions.tsv ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_sesions.tsv ... FAILED (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-ses/sub-01_dwi.bval ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_acq-23-singleband_dwi.bvec ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub_01/sub-01_acq-singleband_run-01_dwi.bvec ... FAILED (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_acq-singleband__run-01_dwi.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-01_ses-test_dw.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-01_run-01_dwi.bvec ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/ses-test_run-01_dwi.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /ses-test/sub-01/sub-01_ses-test_acq_singleband_dwi.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-02_ses-test_acq-singleband_run-01_dwi.bval ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_ses-test_acq-singleband_run-01_dwi.bvec ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /ses-test/sub-01_ses-test_acq-singleband_run-01_dwi.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /measurement_tool_name.tsv ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... FAILED (due to 18 failed steps) (11ms) FAILED | 0 passed (52 steps) | 2 failed (21 steps) (23ms) error: Test failed ```
Full listing ```console ❯ deno test -A src/validators/validateFiles.test.ts --parallel Check file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts ./src/validators/validateFiles.test.ts => test valid paths ... /README ... ok (1ms) ./src/validators/validateFiles.test.ts => test valid paths ... /CHANGES ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /dataset_description.json ... FAILED (2ms) ./src/validators/validateFiles.test.ts => test valid paths ... /participants.tsv ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /participants.json ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_sessions.tsv ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_sessions.json ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_dwi.json ... ok (1ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_run-01_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_run-01_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_run-01_dwi.json ... ok (1ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_dwi.json ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_run-01_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_run-01_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_run-01_dwi.json ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_dwi.json ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_run-01_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_run-01_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_run-01_dwi.json ... ok (1ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_dwi.json ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_run-01_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_run-01_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_run-01_dwi.json ... ok (1ms) ./src/validators/validateFiles.test.ts => test valid paths ... /phenotype/measurement_tool_name.tsv ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test valid paths ... /phenotype/measurement_tool_name.json ... FAILED (1ms) ./src/validators/validateFiles.test.ts => test valid paths ... FAILED (due to 3 failed steps) (12ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /RADME ... ok (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /CANGES ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /dataset_descrption.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /dataset_description.jon ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /participants.sv ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /participnts.tsv ... FAILED (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /particpants.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /participants.son ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-02/sub-01_sessions.tsv ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01_sessions.tsv ... FAILED (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_sesions.tsv ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_sesions.ext ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_sessions.jon ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-ses/sub-01_dwi.bval ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/01_dwi.bvec ... ok (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub_dwi.json ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_23_run-01_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_run-01_dwi.vec ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_run-01_dwi.jsn ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_acq_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_acq-23-singleband_dwi.bvec ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/anat/sub-01_acq-singleband_dwi.json ... ok (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_recrod-record_acq-singleband_run-01_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub_01/sub-01_acq-singleband_run-01_dwi.bvec ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_acq-singleband__run-01_dwi.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-01_ses_test_dwi.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sb-01_ses-test_dwi.bvec ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-01_ses-test_dw.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-01_ses-test_run-01_dwi.val ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-01_run-01_dwi.bvec ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/ses-test_run-01_dwi.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband.bval ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_dwi ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /ses-test/sub-01/sub-01_ses-test_acq_singleband_dwi.json ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/ses-test/sub-02_ses-test_acq-singleband_run-01_dwi.bval ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /sub-01/sub-01_ses-test_acq-singleband_run-01_dwi.bvec ... FAILED (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /ses-test/sub-01_ses-test_acq-singleband_run-01_dwi.json ... FAILED (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /measurement_tool_name.tsv ... FAILED (1ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /phentype/measurement_tool_name.josn ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... /phenotype/measurement_tool_name.jsn ... ok (0ms) ./src/validators/validateFiles.test.ts => test invalid paths ... FAILED (due to 18 failed steps) (11ms) ```
effigies commented 3 months ago

Adding a console.log for the failing valid files:

------- output -------
DatasetIssues {
  issues: [
    {
      code: "ENTITY_WITH_NO_LABEL",
      location: "/dataset_description.json",
      issueMessage: "dataset",
      severity: "error"
    }
  ],
  codeMessages: Map(1) { "ENTITY_WITH_NO_LABEL" => "Found an entity with no label." }
}
----- output end -----
./src/validators/validateFiles.test.ts => test valid paths ... /dataset_description.json ... FAILED (2ms)
./src/validators/validateFiles.test.ts => test valid paths ... /participants.tsv ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /participants.json ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_sessions.tsv ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_sessions.json ... ok (1ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_dwi.bval ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_dwi.bvec ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_dwi.json ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_run-01_dwi.bval ... ok (1ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_run-01_dwi.bvec ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_run-01_dwi.json ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_dwi.bval ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_dwi.bvec ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_dwi.json ... ok (1ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_run-01_dwi.bval ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_run-01_dwi.bvec ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/sub-01_acq-singleband_run-01_dwi.json ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_dwi.bval ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_dwi.bvec ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_dwi.json ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_run-01_dwi.bval ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_run-01_dwi.bvec ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_run-01_dwi.json ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_dwi.bval ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_dwi.bvec ... ok (1ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_dwi.json ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_run-01_dwi.bval ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_run-01_dwi.bvec ... ok (0ms)
./src/validators/validateFiles.test.ts => test valid paths ... /sub-01/ses-test/sub-01_ses-test_acq-singleband_run-01_dwi.json ... ok (0ms)
------- output -------
DatasetIssues {
  issues: [
    {
      code: "ENTITY_WITH_NO_LABEL",
      location: "/phenotype/measurement_tool_name.tsv",
      issueMessage: "measurement, tool",
      severity: "error"
    }
  ],
  codeMessages: Map(1) { "ENTITY_WITH_NO_LABEL" => "Found an entity with no label." }
}
----- output end -----
./src/validators/validateFiles.test.ts => test valid paths ... /phenotype/measurement_tool_name.tsv ... FAILED (0ms)
------- output -------
DatasetIssues {
  issues: [
    {
      code: "ENTITY_WITH_NO_LABEL",
      location: "/phenotype/measurement_tool_name.json",
      issueMessage: "measurement, tool",
      severity: "error"
    }
  ],
  codeMessages: Map(1) { "ENTITY_WITH_NO_LABEL" => "Found an entity with no label." }
}
codecov[bot] commented 3 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 87.52%. Comparing base (44130b2) to head (e791697). Report is 10 commits behind head on master.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #2079 +/- ## ========================================== + Coverage 85.69% 87.52% +1.83% ========================================== Files 91 139 +48 Lines 3782 6824 +3042 Branches 1220 1612 +392 ========================================== + Hits 3241 5973 +2732 - Misses 455 759 +304 - Partials 86 92 +6 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

effigies commented 3 months ago

Update:

------- post-test output -------
    issue key                        filename                                   schema path                         
  ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ eeg_ds003645s_hed_demo                                                                                         │
  └────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    ALL_FILENAME_RULES_HAVE_ISSUES   /sub-004/ses-1/sub-004_ses-1_task-FacePe   Rules that matched with issues:     
                                     rception_coordsystem.json                  rules.files.raw.channels.coords     
                                                                                ystem,                              
                                                                                rules.files.raw.channels.coords     
                                                                                ystem__eeg                          
./src/tests/local/bids_examples.test.ts => validate bids-examples ...----- post-test output end -----
./src/tests/local/bids_examples.test.ts => validate bids-examples ... FAILED (due to 1 failed step) (16s)

 ERRORS 

validate bids-examples ... tests/data/bids-examples/eeg_ds003645s_hed_demo has no issues => ./src/tests/local/bids_examples.test.ts:57:13
error: AssertionError: Values are not equal.

    [Diff] Actual / Expected

-   1
+   0

  throw new AssertionError(message);
        ^
    at Module.assertEquals (https://deno.land/std@0.217.0/assert/assert_equals.ts:52:9)
    at assertEquals (https://deno.land/std@0.217.0/testing/asserts.ts:101:11)
    at file:///home/chris/Projects/bids/validator/bids-validator/src/tests/local/bids_examples.test.ts:58:7
    at innerWrapped (ext:cli/40_test.js:191:11)
    at exitSanitizer (ext:cli/40_test.js:107:33)
    at Object.outerWrapped [as fn] (ext:cli/40_test.js:134:20)
    at TestContext.step (ext:cli/40_test.js:492:37)
    at file:///home/chris/Projects/bids/validator/bids-validator/src/tests/local/bids_examples.test.ts:57:13

test missingLabel ... File with underscore and no hyphens errors out. => ./src/validators/filenameValidate.test.ts:16:11
error: AssertionError: Values are not equal.

    [Diff] Actual / Expected

-   0
+   1

  throw new AssertionError(message);
        ^
    at Module.assertEquals (https://deno.land/std@0.217.0/assert/assert_equals.ts:52:9)
    at assertEquals (https://deno.land/std@0.217.0/testing/asserts.ts:101:11)
    at file:///home/chris/Projects/bids/validator/bids-validator/src/validators/filenameValidate.test.ts:27:5
    at async innerWrapped (ext:cli/40_test.js:191:5)
    at async exitSanitizer (ext:cli/40_test.js:107:27)
    at async Object.outerWrapped [as fn] (ext:cli/40_test.js:134:14)
    at async TestContext.step (ext:cli/40_test.js:492:22)
    at async file:///home/chris/Projects/bids/validator/bids-validator/src/validators/filenameValidate.test.ts:16:3

test invalid paths ... /sub-01/ses-ses/sub-01_dwi.bval => ./src/validators/validateFiles.test.ts:128:13
error: AssertionError: Matching filename rules: rules.files.raw.dwi.dwi
    throw new AssertionError(msg);
          ^
    at Module.assert (https://deno.land/std@0.217.0/assert/assert.ts:17:11)
    at assert (https://deno.land/std@0.217.0/testing/asserts.ts:608:11)
    at file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts:132:7
    at async innerWrapped (ext:cli/40_test.js:191:5)
    at async exitSanitizer (ext:cli/40_test.js:107:27)
    at async Object.outerWrapped [as fn] (ext:cli/40_test.js:134:14)
    at async TestContext.step (ext:cli/40_test.js:492:22)
    at async file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts:128:5

test invalid paths ... /sub-01/sub-01_acq_dwi.bval => ./src/validators/validateFiles.test.ts:128:13
error: AssertionError: Matching filename rules: rules.files.raw.dwi.dwi
    throw new AssertionError(msg);
          ^
    at Module.assert (https://deno.land/std@0.217.0/assert/assert.ts:17:11)
    at assert (https://deno.land/std@0.217.0/testing/asserts.ts:608:11)
    at file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts:132:7
    at async innerWrapped (ext:cli/40_test.js:191:5)
    at async exitSanitizer (ext:cli/40_test.js:107:27)
    at async Object.outerWrapped [as fn] (ext:cli/40_test.js:134:14)
    at async TestContext.step (ext:cli/40_test.js:492:22)
    at async file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts:128:5

test invalid paths ... /sub-01/sub-01_acq-23-singleband_dwi.bvec => ./src/validators/validateFiles.test.ts:128:13
error: AssertionError: Matching filename rules: rules.files.raw.dwi.dwi
    throw new AssertionError(msg);
          ^
    at Module.assert (https://deno.land/std@0.217.0/assert/assert.ts:17:11)
    at assert (https://deno.land/std@0.217.0/testing/asserts.ts:608:11)
    at file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts:132:7
    at async innerWrapped (ext:cli/40_test.js:191:5)
    at async exitSanitizer (ext:cli/40_test.js:107:27)
    at async Object.outerWrapped [as fn] (ext:cli/40_test.js:134:14)
    at async TestContext.step (ext:cli/40_test.js:492:22)
    at async file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts:128:5

test invalid paths ... /sub-01/ses-test/sub-01_run-01_dwi.bvec => ./src/validators/validateFiles.test.ts:128:13
error: AssertionError: Matching filename rules: rules.files.raw.dwi.dwi
    throw new AssertionError(msg);
          ^
    at Module.assert (https://deno.land/std@0.217.0/assert/assert.ts:17:11)
    at assert (https://deno.land/std@0.217.0/testing/asserts.ts:608:11)
    at file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts:132:7
    at async innerWrapped (ext:cli/40_test.js:191:5)
    at async exitSanitizer (ext:cli/40_test.js:107:27)
    at async Object.outerWrapped [as fn] (ext:cli/40_test.js:134:14)
    at async TestContext.step (ext:cli/40_test.js:492:22)
    at async file:///home/chris/Projects/bids/validator/bids-validator/src/validators/validateFiles.test.ts:128:5

 FAILURES 

validate bids-examples ... tests/data/bids-examples/eeg_ds003645s_hed_demo has no issues => ./src/tests/local/bids_examples.test.ts:57:13
test missingLabel ... File with underscore and no hyphens errors out. => ./src/validators/filenameValidate.test.ts:16:11
test invalid paths ... /sub-01/ses-ses/sub-01_dwi.bval => ./src/validators/validateFiles.test.ts:128:13
test invalid paths ... /sub-01/sub-01_acq_dwi.bval => ./src/validators/validateFiles.test.ts:128:13
test invalid paths ... /sub-01/sub-01_acq-23-singleband_dwi.bvec => ./src/validators/validateFiles.test.ts:128:13
test invalid paths ... /sub-01/ses-test/sub-01_run-01_dwi.bvec => ./src/validators/validateFiles.test.ts:128:13

FAILED | 38 passed (591 steps) | 3 failed (6 steps) (16s)

error: Test failed
effigies commented 3 months ago

The only failure now is an example file that was being accidentally permitted before (not sure why).

When we've encountered situations like this in the past, we've relaxed the spec and added a warning. I've opened https://github.com/bids-standard/bids-specification/pull/1888.

rwblair commented 3 months ago

The only failure now is an example file that was being accidentally permitted before (not sure why).

It was being allowed by the phenotype rule.

effigies commented 3 months ago

Well, I've dramatically pared down where that can be applied.