summaryrefslogtreecommitdiff
path: root/tests/integration/publish_tests.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-03-07 20:16:32 -0500
committerGitHub <noreply@github.com>2024-03-07 20:16:32 -0500
commit2dfc0aca7c6a04d54fe6f9a73be70fc4c591d552 (patch)
tree58fb01c46364e4888097e7135b2f829f38ce990c /tests/integration/publish_tests.rs
parent2ed984ba3aa638c3f088ac1edc5c779c7d9195d1 (diff)
fix(publish): make include and exclude work (#22720)
1. Stops `deno publish` using some custom include/exclude behaviour from other sub commands 2. Takes ancestor directories into account when resolving gitignore 3. Backards compatible change that adds ability to unexclude an exclude by using a negated glob at a more specific level for all sub commands (see https://github.com/denoland/deno_config/pull/44).
Diffstat (limited to 'tests/integration/publish_tests.rs')
-rw-r--r--tests/integration/publish_tests.rs81
1 files changed, 64 insertions, 17 deletions
diff --git a/tests/integration/publish_tests.rs b/tests/integration/publish_tests.rs
index 2c3bf9ff6..4d2db8635 100644
--- a/tests/integration/publish_tests.rs
+++ b/tests/integration/publish_tests.rs
@@ -408,7 +408,7 @@ fn ignores_directories() {
}
#[test]
-fn includes_directories_with_gitignore() {
+fn not_include_gitignored_file_even_if_matched_in_include() {
let context = publish_context_builder().build();
let temp_dir = context.temp_dir().path();
temp_dir.join("deno.json").write_json(&json!({
@@ -416,23 +416,75 @@ fn includes_directories_with_gitignore() {
"version": "1.0.0",
"exports": "./main.ts",
"publish": {
- "include": [ "deno.json", "main.ts" ]
+ // won't match ignored because it needs to be
+ // unexcluded via a negated glob in exclude
+ "include": [ "deno.json", "*.ts" ]
}
}));
- temp_dir.join(".gitignore").write("main.ts");
+ temp_dir.join(".gitignore").write("ignored.ts");
temp_dir.join("main.ts").write("");
temp_dir.join("ignored.ts").write("");
- let output = context
- .new_command()
- .arg("publish")
- .arg("--token")
- .arg("sadfasdf")
- .run();
+ let output = context.new_command().arg("publish").arg("--dry-run").run();
output.assert_exit_code(0);
let output = output.combined_output();
assert_contains!(output, "main.ts");
+ // it's gitignored
+ assert_not_contains!(output, "ignored.ts");
+}
+
+#[test]
+fn includes_directories_with_gitignore_when_unexcluded() {
+ let context = publish_context_builder().build();
+ let temp_dir = context.temp_dir().path();
+ temp_dir.join("deno.json").write_json(&json!({
+ "name": "@foo/bar",
+ "version": "1.0.0",
+ "exports": "./main.ts",
+ "publish": {
+ "include": [ "deno.json", "*.ts" ],
+ "exclude": [ "!ignored.ts" ]
+ }
+ }));
+
+ temp_dir.join(".gitignore").write("ignored.ts");
+ temp_dir.join("main.ts").write("");
+ temp_dir.join("ignored.ts").write("");
+
+ let output = context.new_command().arg("publish").arg("--dry-run").run();
+ output.assert_exit_code(0);
+ let output = output.combined_output();
+ assert_contains!(output, "main.ts");
+ assert_contains!(output, "ignored.ts");
+}
+
+#[test]
+fn includes_unexcluded_sub_dir() {
+ let context = publish_context_builder().build();
+ let temp_dir = context.temp_dir().path();
+ temp_dir.join("deno.json").write_json(&json!({
+ "name": "@foo/bar",
+ "version": "1.0.0",
+ "exports": "./included1.ts",
+ "publish": {
+ "exclude": [
+ "ignored",
+ "!ignored/unexcluded",
+ ]
+ }
+ }));
+
+ temp_dir.join("included1.ts").write("");
+ temp_dir.join("ignored/unexcluded").create_dir_all();
+ temp_dir.join("ignored/ignored.ts").write("");
+ temp_dir.join("ignored/unexcluded/included2.ts").write("");
+
+ let output = context.new_command().arg("publish").arg("--dry-run").run();
+ output.assert_exit_code(0);
+ let output = output.combined_output();
+ assert_contains!(output, "included1.ts");
+ assert_contains!(output, "included2.ts");
assert_not_contains!(output, "ignored.ts");
}
@@ -465,7 +517,7 @@ fn includes_directories() {
}
#[test]
-fn includes_dotenv() {
+fn not_includes_gitignored_dotenv() {
let context = publish_context_builder().build();
let temp_dir = context.temp_dir().path();
temp_dir.join("deno.json").write_json(&json!({
@@ -476,14 +528,9 @@ fn includes_dotenv() {
temp_dir.join("main.ts").write("");
temp_dir.join(".env").write("FOO=BAR");
+ temp_dir.join(".gitignore").write(".env");
- let output = context
- .new_command()
- .arg("publish")
- .arg("--token")
- .arg("sadfasdf")
- .arg("--dry-run")
- .run();
+ let output = context.new_command().arg("publish").arg("--dry-run").run();
output.assert_exit_code(0);
let output = output.combined_output();
assert_contains!(output, "main.ts");