Skip to content

Commit bcf0f5b

Browse files
committed
Merge branch 'release-strategy-docs' into release-process-docs
Brings in the Node 24 buffer fix and the temp-directory race fix so this branch's CI can pass before #518 merges. Once #518 lands, the diff of #519 collapses back to just the process files.
2 parents 21d250c + 1ac61e6 commit bcf0f5b

12 files changed

Lines changed: 434 additions & 89 deletions

RELEASE_PLAN.md

Lines changed: 307 additions & 0 deletions
Large diffs are not rendered by default.

test/adapters.test.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import fs from "fs";
21
import "../src/index.js";
32
import Segmentation_4X from "../src/adapters/Cornerstone/Segmentation_4X";
4-
import { getTestDataset } from "./testUtils.js";
3+
import { getTestDataset, readFileAsArrayBuffer } from "./testUtils.js";
54

65
const mockMetadataProvider = {
76
get: (type, imageId) => {
@@ -31,7 +30,7 @@ it("Can generate tool state (4X) with SEG sourcing MG images without throwing an
3130
const url =
3231
"https://github.com/dcmjs-org/data/releases/download/mg-seg/seg-test-SEG.dcm";
3332
const dcmPath = await getTestDataset(url, "seg-test-SEG.dcm");
34-
const arrayBuffer = fs.readFileSync(dcmPath).buffer;
33+
const arrayBuffer = readFileAsArrayBuffer(dcmPath);
3534

3635
expect(() => {
3736
Segmentation_4X.generateToolState(

test/anonymizer.test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import dcmjs from "../src/index.js";
2-
import fs from "fs";
32
import { validationLog } from "./../src/log.js";
3+
import { readFileAsArrayBuffer } from "./testUtils.js";
44

55
// Ignore validation errors
66
validationLog.setLevel(5);
@@ -14,7 +14,7 @@ it("test_export", () => {
1414

1515
it("test_anonymization", () => {
1616
// given
17-
const arrayBuffer = fs.readFileSync("test/sample-dicom.dcm").buffer;
17+
const arrayBuffer = readFileAsArrayBuffer("test/sample-dicom.dcm");
1818
const dicomDict = DicomMessage.readFile(arrayBuffer);
1919

2020
const tagInfo = dcmjs.data.DicomMetaDictionary.nameMap["PatientName"];
@@ -41,7 +41,7 @@ it("test_anonymization", () => {
4141

4242
it("test_anonymization_no_change_ref", () => {
4343
// given
44-
const arrayBuffer = fs.readFileSync("test/sample-sr.dcm").buffer;
44+
const arrayBuffer = readFileAsArrayBuffer("test/sample-sr.dcm");
4545
const dicomDict = DicomMessage.readFile(arrayBuffer);
4646

4747
// multiple value name
@@ -87,7 +87,7 @@ it("test_anonymization_no_change_ref", () => {
8787

8888
it("test_anonymization_tagtoreplace_param", () => {
8989
// given
90-
const arrayBuffer = fs.readFileSync("test/sample-dicom.dcm").buffer;
90+
const arrayBuffer = readFileAsArrayBuffer("test/sample-dicom.dcm");
9191
const dicomDict = DicomMessage.readFile(arrayBuffer);
9292

9393
const tagInfo = dcmjs.data.DicomMetaDictionary.nameMap["PatientName"];
@@ -120,7 +120,7 @@ it("test_anonymization_tagtoreplace_param", () => {
120120

121121
it("test_anonymization_keep_tag", () => {
122122
// given
123-
const arrayBuffer = fs.readFileSync("test/sample-dicom.dcm").buffer;
123+
const arrayBuffer = readFileAsArrayBuffer("test/sample-dicom.dcm");
124124
const dicomDict = DicomMessage.readFile(arrayBuffer);
125125

126126
const tagInfo = dcmjs.data.DicomMetaDictionary.nameMap["SeriesDescription"];
@@ -148,7 +148,7 @@ it("test_anonymization_keep_tag", () => {
148148

149149
it("test_anonymization_anonymize_tag", () => {
150150
// given
151-
const arrayBuffer = fs.readFileSync("test/sample-dicom.dcm").buffer;
151+
const arrayBuffer = readFileAsArrayBuffer("test/sample-dicom.dcm");
152152
const dicomDict = DicomMessage.readFile(arrayBuffer);
153153

154154
const tagInfo = dcmjs.data.DicomMetaDictionary.nameMap["SeriesInstanceUID"];

test/async-data.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
IMPLICIT_LITTLE_ENDIAN,
66
UNDEFINED_LENGTH
77
} from "../src/constants/dicom";
8-
import { getTestDataset } from "./testUtils.js";
8+
import { getTestDataset, readFileAsArrayBuffer } from "./testUtils.js";
99
import { videoTestMeta, videoTestDict } from "./video-test-dict.js";
1010
import { oddFrameBitData } from "./odd-frame-bit-data.js";
1111
import {
@@ -566,7 +566,7 @@ describe("AsyncDicomReader", () => {
566566

567567
// First, read the file with DicomMessage to identify which private tags exist
568568
// and determine their order relative to PixelData
569-
const syncDict = DicomMessage.readFile(fs.readFileSync(dcmPath).buffer);
569+
const syncDict = DicomMessage.readFile(readFileAsArrayBuffer(dcmPath));
570570

571571
// Get all tags in order (approximate - dict keys may not preserve exact order)
572572
const { dict } = syncDict;

test/data-encoding.test.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { getZippedTestDataset } from "./testUtils.js";
1+
import { getZippedTestDataset, readFileAsArrayBuffer } from "./testUtils.js";
22
import dcmjs from "../src/index.js";
3-
import fs from "fs";
43
import fsPromises from "fs/promises";
54
import path from "path";
65

@@ -34,9 +33,9 @@ it("test_encodings", async () => {
3433

3534
fileNames.forEach(fileName => {
3635
if (fileName in expectedPatientNames) {
37-
const arrayBuffer = fs.readFileSync(
36+
const arrayBuffer = readFileAsArrayBuffer(
3837
path.join(filesPath, fileName)
39-
).buffer;
38+
);
4039
const dicomDict = DicomMessage.readFile(arrayBuffer);
4140
const dataset = DicomMetaDictionary.naturalizeDataset(
4241
dicomDict.dict

test/data-options.test.js

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import dcmjs from "../src/index.js";
2-
import fs from "fs";
32
import path from "path";
4-
import { promisify } from "util";
53
import fsPromises from "fs/promises";
6-
import { getZippedTestDataset, getTestDataset } from "./testUtils.js";
4+
import {
5+
getZippedTestDataset,
6+
getTestDataset,
7+
readFileAsArrayBuffer
8+
} from "./testUtils.js";
79

810
const { DicomMetaDictionary, DicomMessage } = dcmjs.data;
911

@@ -12,20 +14,20 @@ const areEqual = (first, second) =>
1214
first.every((value, index) => value === second[index]);
1315

1416
it("test_untilTag", () => {
15-
const buffer = fs.readFileSync("test/sample-dicom.dcm");
17+
const buffer = readFileAsArrayBuffer("test/sample-dicom.dcm");
1618
console.time("readFile");
17-
const fullData = DicomMessage.readFile(buffer.buffer);
19+
const fullData = DicomMessage.readFile(buffer);
1820
console.timeEnd("readFile");
1921

2022
console.time("readFile without untilTag");
21-
const dicomData = DicomMessage.readFile(buffer.buffer, {
23+
const dicomData = DicomMessage.readFile(buffer, {
2224
untilTag: "7FE00010",
2325
includeUntilTagValue: false
2426
});
2527
console.timeEnd("readFile without untilTag");
2628

2729
console.time("readFile with untilTag");
28-
const dicomData2 = DicomMessage.readFile(buffer.buffer, {
30+
const dicomData2 = DicomMessage.readFile(buffer, {
2931
untilTag: "7FE00010",
3032
includeUntilTagValue: true
3133
});
@@ -49,13 +51,13 @@ it("noCopy multiframe DICOM which has trailing padding", async () => {
4951
"https://github.com/dcmjs-org/data/releases/download/binary-parsing-stressors/multiframe-ultrasound.dcm";
5052
const dcmPath = await getTestDataset(url, "multiframe-ultrasound.dcm");
5153
const dicomDictNoCopy = DicomMessage.readFile(
52-
fs.readFileSync(dcmPath).buffer,
54+
readFileAsArrayBuffer(dcmPath),
5355
{
5456
noCopy: true
5557
}
5658
);
5759

58-
const dicomDict = DicomMessage.readFile(fs.readFileSync(dcmPath).buffer, {
60+
const dicomDict = DicomMessage.readFile(readFileAsArrayBuffer(dcmPath), {
5961
noCopy: false
6062
});
6163

@@ -77,13 +79,13 @@ it("noCopy multiframe DICOM with large private tags before and after the image d
7779
const dcmPath = await getTestDataset(url, "large-private-tags.dcm");
7880

7981
const dicomDictNoCopy = DicomMessage.readFile(
80-
fs.readFileSync(dcmPath).buffer,
82+
readFileAsArrayBuffer(dcmPath),
8183
{
8284
noCopy: true
8385
}
8486
);
8587

86-
const dicomDict = DicomMessage.readFile(fs.readFileSync(dcmPath).buffer, {
88+
const dicomDict = DicomMessage.readFile(readFileAsArrayBuffer(dcmPath), {
8789
noCopy: false
8890
});
8991

@@ -103,13 +105,13 @@ it("noCopy binary data into an ArrayBuffer", async () => {
103105
const url =
104106
"https://github.com/dcmjs-org/data/releases/download/binary-tag/binary-tag.dcm";
105107
const dcmPath = await getTestDataset(url, "binary-tag.dcm");
106-
const fileData = await promisify(fs.readFile)(dcmPath);
108+
const fileData = readFileAsArrayBuffer(dcmPath);
107109

108-
const dicomDictNoCopy = DicomMessage.readFile(fileData.buffer, {
110+
const dicomDictNoCopy = DicomMessage.readFile(fileData, {
109111
noCopy: true
110112
});
111113

112-
const dicomDict = DicomMessage.readFile(fileData.buffer, {
114+
const dicomDict = DicomMessage.readFile(fileData, {
113115
noCopy: false
114116
});
115117

@@ -138,9 +140,9 @@ it("noCopy test_multiframe_1", async () => {
138140
const fileNames = await fsPromises.readdir(mrHeadPath);
139141

140142
fileNames.forEach(fileName => {
141-
const arrayBuffer = fs.readFileSync(
143+
const arrayBuffer = readFileAsArrayBuffer(
142144
path.join(mrHeadPath, fileName)
143-
).buffer;
145+
);
144146
const dicomDictNoCopy = DicomMessage.readFile(arrayBuffer, {
145147
noCopy: true
146148
});
@@ -168,13 +170,13 @@ it("noCopy test_fragment_multiframe", async () => {
168170
url,
169171
"encapsulation-fragment-multiframe-b.dcm"
170172
);
171-
const file = fs.readFileSync(dcmPath);
173+
const file = readFileAsArrayBuffer(dcmPath);
172174

173-
const dicomDict = dcmjs.data.DicomMessage.readFile(file.buffer, {
175+
const dicomDict = dcmjs.data.DicomMessage.readFile(file, {
174176
// ignoreErrors: true,
175177
});
176178

177-
const dicomDictNoCopy = DicomMessage.readFile(file.buffer, {
179+
const dicomDictNoCopy = DicomMessage.readFile(file, {
178180
noCopy: true
179181
});
180182

0 commit comments

Comments
 (0)