Skip to content

Commit

Permalink
feat: Implement SIDECAR_WITHOUT_DATAFILE
Browse files Browse the repository at this point in the history
  • Loading branch information
effigies committed Aug 7, 2024
1 parent a3da81f commit e5aeeca
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 1 deletion.
4 changes: 4 additions & 0 deletions bids-validator/src/issues/list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,10 @@ export const bidsIssues: IssueDefinitionRecord = {
reason:
'There are files in the /stimuli directory that are not utilized in any _events.tsv file.',
},
SIDECAR_WITHOUT_DATAFILE: {
severity: 'error',
reason: 'A json sidecar file was found without a corresponding data file',
},
}

const hedIssues: IssueDefinitionRecord = {
Expand Down
3 changes: 2 additions & 1 deletion bids-validator/src/validators/bids.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { filenameIdentify } from './filenameIdentify.ts'
import { filenameValidate } from './filenameValidate.ts'
import { DatasetIssues } from '../issues/datasetIssues.ts'
import { emptyFile } from './internal/emptyFile.ts'
import { unusedStimulus } from './internal/unusedFile.ts'
import { sidecarWithoutDatafile, unusedStimulus } from './internal/unusedFile.ts'
import { BIDSContext, BIDSContextDataset } from '../schema/context.ts'
import { parseOptions } from '../setup/options.ts'
import { hedValidate } from './hed.ts'
Expand All @@ -32,6 +32,7 @@ const perContextChecks: ContextCheckFunction[] = [

const perDSChecks: DSCheckFunction[] = [
unusedStimulus,
sidecarWithoutDatafile,
]

/**
Expand Down
15 changes: 15 additions & 0 deletions bids-validator/src/validators/internal/unusedFile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,18 @@ export async function unusedStimulus(
dsContext.issues.addNonSchemaIssue('UNUSED_STIMULUS', unusedStimuli)
}

Check warning on line 29 in bids-validator/src/validators/internal/unusedFile.ts

View check run for this annotation

Codecov / codecov/patch

bids-validator/src/validators/internal/unusedFile.ts#L28-L29

Added lines #L28 - L29 were not covered by tests
}

const standalone_json = ['dataset_description.json', 'genetic_info.json']

export async function sidecarWithoutDatafile(
schema: GenericSchema,
dsContext: BIDSContextDataset,
) {
const unusedSidecars = [...walkFileTree(dsContext.tree)].filter(
(file) => (!file.viewed && file.name.endsWith('.json') &&
!standalone_json.includes(file.name)),
)
if (unusedSidecars.length) {
dsContext.issues.addNonSchemaIssue('SIDECAR_WITHOUT_DATAFILE', unusedSidecars)
}

Check warning on line 44 in bids-validator/src/validators/internal/unusedFile.ts

View check run for this annotation

Codecov / codecov/patch

bids-validator/src/validators/internal/unusedFile.ts#L43-L44

Added lines #L43 - L44 were not covered by tests
}

0 comments on commit e5aeeca

Please sign in to comment.