Skip to content

Commit a06870c

Browse files
committed
add test
1 parent 80390a2 commit a06870c

File tree

5 files changed

+531
-2
lines changed

5 files changed

+531
-2
lines changed

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,7 @@ impl Lockfile {
596596
// npm resolution just for that part, so for now, clear out all the npm dependencies
597597
// if any patch changes
598598
if has_any_patch_changed {
599+
self.has_content_changed = true;
599600
self.content.packages.npm.clear();
600601
self
601602
.content

src/printer.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ struct SerializedWorkspaceConfigContent<'a> {
9393

9494
impl SerializedWorkspaceConfigContent<'_> {
9595
pub fn is_empty(&self) -> bool {
96-
self.root.is_empty() && self.members.is_empty()
96+
self.root.is_empty() && self.members.is_empty() && self.patches.is_empty()
9797
}
9898
}
9999

tests/spec_test.rs

+15-1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ fn config_changes_test(test: &CollectedTest) {
6969
package_json: LockfilePackageJsonContent,
7070
}
7171

72+
#[derive(Debug, Default, Clone, Deserialize, Hash)]
73+
#[serde(rename_all = "camelCase")]
74+
struct PatchConfigContent {
75+
#[serde(default)]
76+
dependencies: BTreeSet<JsrDepPackageReq>,
77+
}
78+
7279
#[derive(Debug, Default, Clone, Deserialize, Hash)]
7380
#[serde(rename_all = "camelCase")]
7481
struct WorkspaceConfigContent {
@@ -77,6 +84,9 @@ fn config_changes_test(test: &CollectedTest) {
7784
#[serde(skip_serializing_if = "BTreeMap::is_empty")]
7885
#[serde(default)]
7986
members: BTreeMap<String, WorkspaceMemberConfigContent>,
87+
#[serde(skip_serializing_if = "BTreeMap::is_empty")]
88+
#[serde(default)]
89+
patches: BTreeMap<String, PatchConfigContent>,
8090
}
8191

8292
impl WorkspaceConfigContent {
@@ -108,7 +118,11 @@ fn config_changes_test(test: &CollectedTest) {
108118
)
109119
})
110120
.collect(),
111-
patches: Default::default(),
121+
patches: self
122+
.patches
123+
.into_iter()
124+
.map(|(k, v)| (k, v.dependencies.into_iter().collect()))
125+
.collect(),
112126
}
113127
}
114128
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
# original
2+
{
3+
"version": "4",
4+
"specifiers": {
5+
"jsr:@scope/package_a@*": "0.0.1",
6+
"npm:ts-morph@*": "21.0.1"
7+
},
8+
"jsr": {
9+
"@scope/[email protected]": {
10+
"integrity": "09154a97e18c4d6a1692e3b3c8a3b1ec2934f00b7c1caf7491d762d963ada045"
11+
}
12+
},
13+
"npm": {
14+
"@nodelib/[email protected]": {
15+
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
16+
"dependencies": [
17+
"@nodelib/fs.stat",
18+
"run-parallel"
19+
]
20+
},
21+
"@nodelib/[email protected]": {
22+
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
23+
},
24+
"@nodelib/[email protected]": {
25+
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
26+
"dependencies": [
27+
"@nodelib/fs.scandir",
28+
"fastq"
29+
]
30+
},
31+
"@ts-morph/[email protected]": {
32+
"integrity": "sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==",
33+
"dependencies": [
34+
"fast-glob",
35+
"minimatch",
36+
"mkdirp",
37+
"path-browserify"
38+
]
39+
},
40+
41+
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
42+
},
43+
44+
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
45+
"dependencies": [
46+
"balanced-match"
47+
]
48+
},
49+
50+
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
51+
"dependencies": [
52+
"fill-range"
53+
]
54+
},
55+
56+
"integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w=="
57+
},
58+
59+
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
60+
"dependencies": [
61+
"@nodelib/fs.stat",
62+
"@nodelib/fs.walk",
63+
"glob-parent",
64+
"merge2",
65+
"micromatch"
66+
]
67+
},
68+
69+
"integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
70+
"dependencies": [
71+
"reusify"
72+
]
73+
},
74+
75+
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
76+
"dependencies": [
77+
"to-regex-range"
78+
]
79+
},
80+
81+
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
82+
"dependencies": [
83+
"is-glob"
84+
]
85+
},
86+
87+
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
88+
},
89+
90+
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
91+
"dependencies": [
92+
"is-extglob"
93+
]
94+
},
95+
96+
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
97+
},
98+
99+
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
100+
},
101+
102+
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
103+
"dependencies": [
104+
"braces",
105+
"picomatch"
106+
]
107+
},
108+
109+
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
110+
"dependencies": [
111+
"brace-expansion"
112+
]
113+
},
114+
115+
"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="
116+
},
117+
118+
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
119+
},
120+
121+
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
122+
},
123+
124+
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
125+
},
126+
127+
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
128+
},
129+
130+
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
131+
"dependencies": [
132+
"queue-microtask"
133+
]
134+
},
135+
136+
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
137+
"dependencies": [
138+
"is-number"
139+
]
140+
},
141+
142+
"integrity": "sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==",
143+
"dependencies": [
144+
"@ts-morph/common",
145+
"code-block-writer"
146+
]
147+
}
148+
},
149+
"workspace": {
150+
"patches": {
151+
152+
"dependencies": [
153+
"npm:code-block-writer@12"
154+
]
155+
}
156+
}
157+
}
158+
}
159+
160+
# remove
161+
{
162+
"patches": {
163+
164+
"dependencies": [
165+
]
166+
}
167+
}
168+
}
169+
170+
# output
171+
{
172+
"version": "4",
173+
"specifiers": {
174+
"jsr:@scope/package_a@*": "0.0.1"
175+
},
176+
"jsr": {
177+
"@scope/[email protected]": {
178+
"integrity": "09154a97e18c4d6a1692e3b3c8a3b1ec2934f00b7c1caf7491d762d963ada045"
179+
}
180+
},
181+
"workspace": {
182+
"patches": {
183+
184+
}
185+
}
186+
}

0 commit comments

Comments
 (0)