edf2csv 0.4.15 → 0.4.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,46 @@
3
3
  Notable changes to edf2csv. Versions follow [semantic versioning](https://semver.org); while the
4
4
  major version is 0, a minor bump may contain breaking changes.
5
5
 
6
+ ## 0.4.16
7
+
8
+ ### Added: `npm run fuzz:batch`, which builds folder trees and converts them
9
+
10
+ ```bash
11
+ npm run fuzz:batch
12
+ ```
13
+
14
+ ```
15
+ 12 folder trees, 49 recordings, 49 conversions (seed 1).
16
+ Serial and parallel agreed, and every batch matched converting alone.
17
+ ```
18
+
19
+ Converting a folder is the hardest part of this tool to reason about. The tree is walked, links
20
+ are followed, destinations are derived from file names, and the conversions may run in any order
21
+ across several processes. Every batch bug so far came from an arrangement nobody thought to
22
+ write a test for, so this builds arrangements instead — nesting, names with spaces and non-ASCII
23
+ characters, mixed-case extensions, symlinks, files that are not recordings — and checks four
24
+ things that must hold whatever comes out:
25
+
26
+ 1. **Serial and parallel produce the same directories.** A difference between them is what a
27
+ race looks like from outside.
28
+ 2. **Each recording's output equals converting it alone.** A batch may reorder the work; it may
29
+ not change a byte of it.
30
+ 3. **The closing count matches the directories produced**, so "Converted 5 of 5" is a fact
31
+ rather than a hope.
32
+ 4. **A non-zero exit comes with a message**, never a silent half-conversion.
33
+
34
+ The first of those is not hypothetical: it is how 0.4.14 was found two versions ago. One run
35
+ produced `<out>/rec` and another `<out>/rec/inner` from the same command over the same files,
36
+ which is the whole signature of that bug. Putting it back makes this fail in two independent
37
+ rounds and exit 1 — so the check is known to work rather than assumed to.
38
+
39
+ Runs are deterministic: the same seed builds the same tree, so a failure reproduces on another
40
+ machine. Like the other two harnesses it is opt-in and not part of `npm test`, which stays fast
41
+ and dependency-free.
42
+
43
+ There are now three: `npm run crossvalidate` for the arithmetic, `npm run fuzz` for damaged
44
+ files, and this one for batches.
45
+
6
46
  ## 0.4.15
7
47
 
8
48
  ### Fixed: two recordings differing only in filename case merged into one directory
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edf2csv",
3
- "version": "0.4.15",
3
+ "version": "0.4.16",
4
4
  "description": "Convert EDF, EDF+ and BDF biosignal recordings (European Data Format) to CSV from the command line. Local, streaming, and never resamples or alters units.",
5
5
  "keywords": [
6
6
  "edf",
@@ -62,7 +62,8 @@
62
62
  "typecheck": "tsc -p tsconfig.json --noEmit",
63
63
  "prepublishOnly": "npm run clean && npm run build && npm test",
64
64
  "crossvalidate": "npm run build && node test/crossvalidate/generate.mjs && python3 test/crossvalidate/compare.py",
65
- "fuzz": "npm run build && npm run fixtures && node test/fuzz/mutate.mjs"
65
+ "fuzz": "npm run build && npm run fixtures && node test/fuzz/mutate.mjs",
66
+ "fuzz:batch": "npm run build && npm run fixtures && node test/fuzz/trees.mjs"
66
67
  },
67
68
  "devDependencies": {
68
69
  "@types/node": "^22.10.0",