Skip to content

Commit 9704784

Browse files
committed
Updated test
1 parent f0070cd commit 9704784

File tree

10 files changed

+145
-54
lines changed

10 files changed

+145
-54
lines changed

crates/turborepo-lib/src/boundaries/mod.rs

+9-13
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ use turborepo_ui::{color, ColorConfig, BOLD_GREEN, BOLD_RED};
3636
use crate::{
3737
boundaries::{imports::DependencyLocations, tags::ProcessedRulesMap, tsconfig::TsConfigLoader},
3838
run::Run,
39-
turbo_json::TurboJson,
4039
};
4140

4241
#[derive(Clone, Debug, Error, Diagnostic)]
@@ -339,18 +338,15 @@ impl Run {
339338
)
340339
.await?;
341340

342-
if let Ok(TurboJson {
343-
tags: Some(tags), ..
344-
}) = self.turbo_json_loader().load(package_name)
345-
{
346-
if let Some(tag_rules) = tag_rules {
347-
result.diagnostics.extend(self.check_package_tags(
348-
PackageNode::Workspace(package_name.clone()),
349-
&package_info.package_json,
350-
tags,
351-
tag_rules,
352-
)?);
353-
} else {
341+
if let Ok(turbo_json) = self.turbo_json_loader().load(package_name) {
342+
result.diagnostics.extend(self.check_package_tags(
343+
PackageNode::Workspace(package_name.clone()),
344+
&package_info.package_json,
345+
turbo_json.tags.as_ref(),
346+
tag_rules.as_ref(),
347+
)?);
348+
349+
if turbo_json.tags.is_some() && tag_rules.is_none() {
354350
// NOTE: if we use tags for something other than boundaries, we should remove
355351
// this warning
356352
warn!(

crates/turborepo-lib/src/boundaries/tags.rs

+37-34
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,14 @@ impl Run {
228228
&self,
229229
pkg: PackageNode,
230230
package_json: &PackageJson,
231-
current_package_tags: &Spanned<Vec<Spanned<String>>>,
232-
tags_rules: &ProcessedRulesMap,
231+
current_package_tags: Option<&Spanned<Vec<Spanned<String>>>>,
232+
tags_rules: Option<&ProcessedRulesMap>,
233233
) -> Result<Vec<BoundariesDiagnostic>, Error> {
234234
let mut diagnostics = Vec::new();
235-
let package_boundaries = self
236-
.turbo_json_loader()
237-
.load(pkg.as_package_name())
235+
let package_turbo_json = self.turbo_json_loader().load(pkg.as_package_name());
236+
eprintln!("{}", pkg.as_package_name());
237+
eprintln!("{:?}", package_turbo_json);
238+
let package_boundaries = package_turbo_json
238239
.ok()
239240
.and_then(|turbo_json| turbo_json.boundaries.as_ref());
240241

@@ -261,37 +262,39 @@ impl Run {
261262
)?;
262263
}
263264

264-
// We don't allow tags to share the same name as the package because
265-
// we allow package names to be used as a tag
266-
if let Some(rule) = tags_rules.get(pkg.as_package_name().as_str()) {
267-
let (tag_span, tag_text) = rule.span.span_and_text("turbo.json");
268-
let (package_span, package_text) = package_json
269-
.name
270-
.as_ref()
271-
.map(|name| name.span_and_text("package.json"))
272-
.unwrap_or_else(|| (None, NamedSource::new("package.json", "".into())));
273-
diagnostics.push(BoundariesDiagnostic::TagSharesPackageName {
274-
tag: pkg.as_package_name().to_string(),
275-
package: pkg.as_package_name().to_string(),
276-
tag_span,
277-
tag_text,
278-
secondary: [SecondaryDiagnostic::PackageDefinedHere {
265+
if let Some(tags_rules) = tags_rules {
266+
// We don't allow tags to share the same name as the package because
267+
// we allow package names to be used as a tag
268+
if let Some(rule) = tags_rules.get(pkg.as_package_name().as_str()) {
269+
let (tag_span, tag_text) = rule.span.span_and_text("turbo.json");
270+
let (package_span, package_text) = package_json
271+
.name
272+
.as_ref()
273+
.map(|name| name.span_and_text("package.json"))
274+
.unwrap_or_else(|| (None, NamedSource::new("package.json", "".into())));
275+
diagnostics.push(BoundariesDiagnostic::TagSharesPackageName {
276+
tag: pkg.as_package_name().to_string(),
279277
package: pkg.as_package_name().to_string(),
280-
package_span,
281-
package_text,
282-
}],
283-
});
284-
}
278+
tag_span,
279+
tag_text,
280+
secondary: [SecondaryDiagnostic::PackageDefinedHere {
281+
package: pkg.as_package_name().to_string(),
282+
package_span,
283+
package_text,
284+
}],
285+
});
286+
}
285287

286-
for tag in current_package_tags.iter() {
287-
if let Some(rule) = tags_rules.get(tag.as_inner()) {
288-
self.check_tag(
289-
&mut diagnostics,
290-
rule.dependencies.as_ref(),
291-
rule.dependents.as_ref(),
292-
&pkg,
293-
package_json,
294-
)?;
288+
for tag in current_package_tags.into_iter().flatten().flatten() {
289+
if let Some(rule) = tags_rules.get(tag.as_inner()) {
290+
self.check_tag(
291+
&mut diagnostics,
292+
rule.dependencies.as_ref(),
293+
rule.dependents.as_ref(),
294+
&pkg,
295+
package_json,
296+
)?;
297+
}
295298
}
296299
}
297300

crates/turborepo/tests/snapshots/boundaries__boundaries_tags_get_boundaries_lints_([email protected]).snap

+4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ expression: query_output
1010
"message": "Package `@vercel/allowed-and-denied-tag` found with tag listed in denylist for `@vercel/my-app`: `unsafe`",
1111
"import": "@vercel/allowed-and-denied-tag"
1212
},
13+
{
14+
"message": "Package `@vercel/not-allowed-dependency` found with tag listed in denylist for `@vercel/package-with-boundaries-rules`: `@vercel/not-allowed-dependency`",
15+
"import": "@vercel/not-allowed-dependency"
16+
},
1317
{
1418
"message": "Package `@vercel/not-allowed-dependent` found without any tag listed in allowlist for `@vercel/allowed-and-denied-tag`",
1519
"import": "@vercel/not-allowed-dependent"

turborepo-tests/integration/fixtures/boundaries_tags/package-lock.json

+77
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

turborepo-tests/integration/fixtures/boundaries_tags/package.json

-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
"scripts": {
44
"something": "turbo run build"
55
},
6-
"dependencies": {
7-
"module-package": "*"
8-
},
96
"packageManager": "[email protected]",
107
"workspaces": [
118
"apps/*",

turborepo-tests/integration/fixtures/boundaries_tags/packages/allowed-and-denied-tag/package.json

-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,5 @@
22
"name": "@vercel/allowed-and-denied-tag",
33
"scripts": {
44
"dev": "echo building"
5-
},
6-
"dependencies": {
7-
"utils": "*"
85
}
96
}

turborepo-tests/integration/fixtures/boundaries_tags/packages/allowed-tag/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"name": "@vercel/allowed-tag",
33
"module": "my-module.mjs",
44
"dependencies": {
5-
"@vercel/no-allowlist": "*",
65
"@vercel/package-as-tag": "*"
76
}
87
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"name": "@vercel/not-allowed-dependency"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"name": "@vercel/package-with-boundaries-rules",
3+
"dependencies": {
4+
"@vercel/not-allowed-dependency": "*"
5+
}
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"boundaries": {
3+
"dependencies": {
4+
"deny": [
5+
"@vercel/not-allowed-dependency"
6+
]
7+
}
8+
}
9+
}

0 commit comments

Comments
 (0)