Skip to content

Update the class-directories-check.php#486

Open
carolinan wants to merge 2 commits intomasterfrom
update/directories_check
Open

Update the class-directories-check.php#486
carolinan wants to merge 2 commits intomasterfrom
update/directories_check

Conversation

@carolinan
Copy link
Collaborator

@carolinan carolinan commented Mar 12, 2026

Closes #403
Replaces #414

Fixes a bug where disallowed directories were not detected because only the filename was checked, not the full path.
Adds __MACOSX to the list of directories.
Updates the error message.

Does not detect empty folders, it seems unlikely that empty folders would be included.
It is kind of backwards to check for files and then check what folder they are in... But we already have the list of files.
This is only one way to solve this, but it is the smallest change. I don't feel strongly for or against this versus a directory scan.

Testing Instructions

You need at least two themes installed.

  1. In one of the themes, add a new folder with the name __MACOSX and add a file inside it (hello.txt or whatever). (Or install a theme that has been actually zipped on a Mac: I don't have a Mac, so I cheated)
  2. Run the theme check on the theme with the folder, and confirm that the correct error message shows.
  3. Run the theme check on the theme without the folder and confirm that the error message does not show.

Try some of the other folder names as well.

AI Usage: I argued back and forward with Copilot.

Fix a bug where excluded directories were not detected because only the filename was checked, not the full path.
Add __MACOSX to the list of excluded directories.
Update error message.
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the Theme Check “Directories” check to correctly detect disallowed directories by inspecting full file paths (not just basenames), and adds __MACOSX to the disallowed directory list to help catch macOS ZIP artifacts.

Changes:

  • Detect disallowed directories by checking path segments across full file paths.
  • Add __MACOSX to the excluded/disallowed directories list.
  • Update the required-message text shown when an excluded directory is found.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

'<span class="tc-lead tc-required">%s</span>: %s',
__( 'REQUIRED', 'theme-check' ),
__( 'Please remove any extraneous directories like .git or .svn from the ZIP file before uploading it.', 'theme-check' )
__( 'Please remove any extraneous directories like <strong>.git</strong>, <strong>.svn</strong> or <strong>__MACOSX</strong> from the ZIP file before uploading it.', 'theme-check' )
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The error message hard-codes examples (".git", ".svn", "__MACOSX"), but the actual disallowed list also includes ".hg" and ".bzr". This can become misleading/out-of-sync if the list changes. Consider generating the displayed directory list from $excluded_directories (or wording the message generically without enumerating specific names).

Copilot uses AI. Check for mistakes.
$path_segments = explode( '/', str_replace( '\\', '/', $path ) );

if ( in_array( $filename, $excluded_directories, true ) ) {
if ( array_intersect( $path_segments, $excluded_directories ) ) {
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

array_intersect() returns an array; relying on its truthiness is a bit implicit. For readability, consider checking it explicitly (e.g., assign to a variable and/or use ! empty(...)) so it’s clear the condition is “any disallowed segment matched”.

Suggested change
if ( array_intersect( $path_segments, $excluded_directories ) ) {
$matched_directories = array_intersect( $path_segments, $excluded_directories );
if ( ! empty( $matched_directories ) ) {

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add check for __MACOSX folder

2 participants