diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-03-08 00:46:06 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-08 05:46:06 +0000 |
commit | 40089b37c0a98fdcfc5b44c5ecb2c390cd16e66c (patch) | |
tree | fc6c36219d338066f789798689244a7a402d837e /tests/integration/publish_tests.rs | |
parent | 2c6e9107b6bd85acb249cbc802571a1c55b96227 (diff) |
fix(publish): include explicitly specified .gitignored files and directories (#22790)
This allows explicitly overriding a .gitignore by specifying files and
directories in "include". This does not apply to globs in an include as
files matching those will still be gitignored. Additionally,
individually gitignored files within an included directory will still be
ignored.
Diffstat (limited to 'tests/integration/publish_tests.rs')
-rw-r--r-- | tests/integration/publish_tests.rs | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/tests/integration/publish_tests.rs b/tests/integration/publish_tests.rs index 53bb6a376..28046d047 100644 --- a/tests/integration/publish_tests.rs +++ b/tests/integration/publish_tests.rs @@ -409,7 +409,7 @@ fn ignores_directories() { } #[test] -fn not_include_gitignored_file_even_if_matched_in_include() { +fn not_include_gitignored_file_unless_exact_match_in_include() { let context = publish_context_builder().build(); let temp_dir = context.temp_dir().path(); temp_dir.join("deno.json").write_json(&json!({ @@ -417,22 +417,45 @@ fn not_include_gitignored_file_even_if_matched_in_include() { "version": "1.0.0", "exports": "./main.ts", "publish": { - // won't match ignored because it needs to be + // won't match ignored.ts because it needs to be // unexcluded via a negated glob in exclude - "include": [ "deno.json", "*.ts" ] + "include": [ + "deno.json", + "*.ts", + "exact_include.ts", + "sub" + ] } })); - temp_dir.join(".gitignore").write("ignored.ts"); + temp_dir + .join(".gitignore") + .write("ignored.ts\nexact_include.ts\nsub/\nsub/ignored\n/sub_ignored\n"); temp_dir.join("main.ts").write(""); temp_dir.join("ignored.ts").write(""); + temp_dir.join("exact_include.ts").write(""); + let sub_dir = temp_dir.join("sub"); + sub_dir.create_dir_all(); + sub_dir.join("sub_included.ts").write(""); + sub_dir.join("ignored.ts").write(""); // this one is gitignored + sub_dir.join("ignored").create_dir_all(); + sub_dir.join("ignored").join("ignored_also.ts").write(""); + let sub_ignored_dir = temp_dir.join("sub_ignored"); + sub_ignored_dir.create_dir_all(); + sub_ignored_dir.join("sub_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"); + // will match this exact match + assert_contains!(output, "exact_include.ts"); + // will include this because the sub directory is included + assert_contains!(output, "sub_included.ts"); // it's gitignored assert_not_contains!(output, "ignored.ts"); + assert_not_contains!(output, "ignored_also.ts"); + assert_not_contains!(output, "sub_ignored.ts"); } #[test] |