Skip to content

Commit 02184f8

Browse files
committed
tests for more things that work
1 parent e745e57 commit 02184f8

File tree

2 files changed

+137
-4
lines changed

2 files changed

+137
-4
lines changed

tests/acceptance/volta_install.rs

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::support::sandbox::{
2-
sandbox, DistroMetadata, NodeFixture, NpmFixture, Sandbox, Yarn1Fixture,
2+
sandbox, DistroMetadata, NodeFixture, NpmFixture, Sandbox, Yarn1Fixture, YarnBerryFixture,
33
};
44
use hamcrest2::assert_that;
55
use hamcrest2::prelude::*;
@@ -147,6 +147,40 @@ const YARN_1_VERSION_FIXTURES: [DistroMetadata; 4] = [
147147
},
148148
];
149149

150+
const YARN_BERRY_VERSION_INFO: &str = r#"{
151+
"name":"@yarnpkg/cli-dist",
152+
"dist-tags": { "latest":"3.12.99" },
153+
"versions": {
154+
"2.4.159": { "version":"2.4.159", "dist": { "shasum":"", "tarball":"" }},
155+
"3.2.42": { "version":"3.2.42", "dist": { "shasum":"", "tarball":"" }},
156+
"3.7.71": { "version":"3.7.71", "dist": { "shasum":"", "tarball":"" }},
157+
"3.12.99": { "version":"3.12.99", "dist": { "shasum":"", "tarball":"" }}
158+
}
159+
}"#;
160+
161+
const YARN_BERRY_VERSION_FIXTURES: [DistroMetadata; 4] = [
162+
DistroMetadata {
163+
version: "2.4.159",
164+
compressed_size: 177,
165+
uncompressed_size: Some(0x0028_0000),
166+
},
167+
DistroMetadata {
168+
version: "3.12.99",
169+
compressed_size: 178,
170+
uncompressed_size: Some(0x0028_0000),
171+
},
172+
DistroMetadata {
173+
version: "3.7.71",
174+
compressed_size: 176,
175+
uncompressed_size: Some(0x0028_0000),
176+
},
177+
DistroMetadata {
178+
version: "3.2.42",
179+
compressed_size: 174,
180+
uncompressed_size: Some(0x0028_0000),
181+
},
182+
];
183+
150184
const NPM_VERSION_INFO: &str = r#"
151185
{
152186
"name":"npm",
@@ -279,3 +313,23 @@ fn install_yarn_without_node_errors() {
279313
)
280314
);
281315
}
316+
317+
#[test]
318+
fn install_yarn_3_without_node_errors() {
319+
let s = sandbox()
320+
.yarn_1_available_versions(YARN_1_VERSION_INFO)
321+
.yarn_berry_available_versions(YARN_BERRY_VERSION_INFO)
322+
.distro_mocks::<Yarn1Fixture>(&YARN_1_VERSION_FIXTURES)
323+
.distro_mocks::<YarnBerryFixture>(&YARN_BERRY_VERSION_FIXTURES)
324+
.env("VOLTA_FEATURE_YARN_3", "true")
325+
.build();
326+
327+
assert_that!(
328+
s.volta("install [email protected]"),
329+
execs()
330+
.with_status(ExitCode::ConfigurationError as i32)
331+
.with_stderr_contains(
332+
"[..]Cannot install Yarn because the default Node version is not set."
333+
)
334+
);
335+
}

tests/acceptance/volta_run.rs

Lines changed: 82 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use crate::support::sandbox::{sandbox, DistroMetadata, NodeFixture, NpmFixture, Yarn1Fixture};
1+
use crate::support::sandbox::{
2+
sandbox, DistroMetadata, NodeFixture, NpmFixture, Yarn1Fixture, YarnBerryFixture,
3+
};
24
use hamcrest2::assert_that;
35
use hamcrest2::prelude::*;
46
use test_support::matchers::execs;
@@ -160,6 +162,40 @@ const YARN_1_VERSION_FIXTURES: [DistroMetadata; 4] = [
160162
},
161163
];
162164

165+
const YARN_BERRY_VERSION_INFO: &str = r#"{
166+
"name":"@yarnpkg/cli-dist",
167+
"dist-tags": { "latest":"3.12.99" },
168+
"versions": {
169+
"2.4.159": { "version":"2.4.159", "dist": { "shasum":"", "tarball":"" }},
170+
"3.2.42": { "version":"3.2.42", "dist": { "shasum":"", "tarball":"" }},
171+
"3.7.71": { "version":"3.7.71", "dist": { "shasum":"", "tarball":"" }},
172+
"3.12.99": { "version":"3.12.99", "dist": { "shasum":"", "tarball":"" }}
173+
}
174+
}"#;
175+
176+
const YARN_BERRY_VERSION_FIXTURES: [DistroMetadata; 4] = [
177+
DistroMetadata {
178+
version: "2.4.159",
179+
compressed_size: 177,
180+
uncompressed_size: Some(0x0028_0000),
181+
},
182+
DistroMetadata {
183+
version: "3.12.99",
184+
compressed_size: 178,
185+
uncompressed_size: Some(0x0028_0000),
186+
},
187+
DistroMetadata {
188+
version: "3.7.71",
189+
compressed_size: 176,
190+
uncompressed_size: Some(0x0028_0000),
191+
},
192+
DistroMetadata {
193+
version: "3.2.42",
194+
compressed_size: 174,
195+
uncompressed_size: Some(0x0028_0000),
196+
},
197+
];
198+
163199
const NPM_VERSION_FIXTURES: [DistroMetadata; 3] = [
164200
DistroMetadata {
165201
version: "1.2.3",
@@ -282,7 +318,7 @@ fn force_bundled_npm() {
282318
}
283319

284320
#[test]
285-
fn command_line_yarn() {
321+
fn command_line_yarn_1() {
286322
let s = sandbox()
287323
.node_available_versions(NODE_VERSION_INFO)
288324
.distro_mocks::<NodeFixture>(&NODE_VERSION_FIXTURES)
@@ -300,7 +336,28 @@ fn command_line_yarn() {
300336
}
301337

302338
#[test]
303-
fn inherited_yarn() {
339+
fn command_line_yarn_3() {
340+
let s = sandbox()
341+
.node_available_versions(NODE_VERSION_INFO)
342+
.distro_mocks::<NodeFixture>(&NODE_VERSION_FIXTURES)
343+
.yarn_1_available_versions(YARN_1_VERSION_INFO)
344+
.yarn_berry_available_versions(YARN_BERRY_VERSION_INFO)
345+
.distro_mocks::<Yarn1Fixture>(&YARN_1_VERSION_FIXTURES)
346+
.distro_mocks::<YarnBerryFixture>(&YARN_BERRY_VERSION_FIXTURES)
347+
.env(VOLTA_LOGLEVEL, "debug")
348+
.env("VOLTA_FEATURE_YARN_3", "true")
349+
.build();
350+
351+
assert_that!(
352+
s.volta("run --node 10.99.1040 --yarn 3.7.71 yarn --version"),
353+
execs()
354+
.with_status(ExitCode::Success as i32)
355+
.with_stderr_contains("[..]Yarn: 3.7.71 from command-line configuration")
356+
);
357+
}
358+
359+
#[test]
360+
fn inherited_yarn_1() {
304361
let s = sandbox()
305362
.node_available_versions(NODE_VERSION_INFO)
306363
.distro_mocks::<NodeFixture>(&NODE_VERSION_FIXTURES)
@@ -318,6 +375,28 @@ fn inherited_yarn() {
318375
);
319376
}
320377

378+
#[test]
379+
fn inherited_yarn_3() {
380+
let s = sandbox()
381+
.node_available_versions(NODE_VERSION_INFO)
382+
.distro_mocks::<NodeFixture>(&NODE_VERSION_FIXTURES)
383+
.yarn_1_available_versions(YARN_1_VERSION_INFO)
384+
.yarn_berry_available_versions(YARN_BERRY_VERSION_INFO)
385+
.distro_mocks::<Yarn1Fixture>(&YARN_1_VERSION_FIXTURES)
386+
.distro_mocks::<YarnBerryFixture>(&YARN_BERRY_VERSION_FIXTURES)
387+
.package_json(&package_json_with_pinned_node_yarn("10.99.1040", "3.2.42"))
388+
.env(VOLTA_LOGLEVEL, "debug")
389+
.env("VOLTA_FEATURE_YARN_3", "true")
390+
.build();
391+
392+
assert_that!(
393+
s.volta("run --node 10.99.1040 yarn --version"),
394+
execs()
395+
.with_status(ExitCode::Success as i32)
396+
.with_stderr_contains("[..]Yarn: 3.2.42 from project configuration")
397+
);
398+
}
399+
321400
#[test]
322401
fn force_no_yarn() {
323402
let s = sandbox()

0 commit comments

Comments
 (0)