Skip to content

[IDE related] On Case-Insensitive FS, using libraries with unmatched Sketch name case causes issues #1174

Closed
@ubidefeo

Description

@ubidefeo

Bug Report

Only applies to Mac OS with Case-Insensitive HFS+ / APFS or other case insensitive File Systems (basically nowhere else)

If one or more libraries contain Sketch examples whose names have case mismatch with the containing folder,
the example is considered to be valid, but the IDE breaks because unable to find the file (strict case rules)

To Reproduce

  1. Install WiFiManager and/or M5Stack libraries
  2. list examples
  3. check that all examples will be available

Current behavior

arduino-cli lib examples WiFiManager

the output will be

Examples for library WiFiManager
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/Advanced
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/AutoConnect/AutoConnectWithFeedbackLED
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/AutoConnect/AutoConnectWithFSParameters
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/AutoConnect/AutoConnectWithFSParametersAndCustomIP
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/Basic
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/DEV/OnDemandConfigPortal
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/NonBlocking/AutoConnectNonBlocking
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/NonBlocking/AutoConnectNonBlockingwParams
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/NonBlocking/OnDemandNonBlocking
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/Old_examples/AutoConnectWithFeedback
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/Old_examples/AutoConnectWithReset
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/Old_examples/AutoConnectWithStaticIP
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/Old_examples/AutoConnectWithTimeout
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/OnDemand/OnDemandConfigPortal
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/OnDemand/OnDemandWebPortal
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/ParamsChildClass
  - /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/Tests

the listed example /data/Dropbox/AppsDocuments/Arduino2/libraries/WiFiManager/examples/OnDemand/OnDemandWebPortal should not be present, because the .ino file name has a case mismatch on the filename initial o: onDemandWebPortal vs OnDemandWebPortal
Essentially when listing examples and traversing the tree, the CLI queries the file system to check wether a file name OnDemandWebPortal with extension .ino is present, and the Mac OS FS returns true, because for this FS MYweirdFile is equal to myWEIRDfile.

Expected behavior

The CLI should ALWAYS test for exact case match, not rely on the weird user-accommodating File System

Environment

  • CLI version 0.15.0
  • OS and platform: Mac OS Mojave

Additional context

This issue causes the bug in arduino/arduino-pro-ide#418

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions