Skip to content

common path algorithm calculates parts wrong with / inside part #79

@jxn-30

Description

@jxn-30

Given a nested file structure:

Click me to open file tree
.
├── a
│   ├── e
│   │   ├── h
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── i
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── j
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── n.txt
│   │   ├── o.txt
│   │   └── p.txt
│   ├── f
│   │   ├── h
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── i
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── j
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── n.txt
│   │   ├── o.txt
│   │   └── p.txt
│   ├── g
│   │   ├── h
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── i
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── j
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── n.txt
│   │   ├── o.txt
│   │   └── p.txt
│   ├── q.txt
│   ├── r.txt
│   └── s.txt
├── b
│   ├── e
│   │   ├── h
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── i
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── j
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── n.txt
│   │   ├── o.txt
│   │   └── p.txt
│   ├── f
│   │   ├── h
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── i
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── j
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── n.txt
│   │   ├── o.txt
│   │   └── p.txt
│   ├── g
│   │   ├── h
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── i
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── j
│   │   │   ├── k.txt
│   │   │   ├── l.txt
│   │   │   └── m.txt
│   │   ├── n.txt
│   │   ├── o.txt
│   │   └── p.txt
│   ├── q.txt
│   ├── r.txt
│   └── s.txt

When running the glob ./{a/e,b/f}/{n,o,k}.txt, I expect to match the files ./a/e/n.txt, ./a/e/o.txt, ./b/f/n.txt, ./b/f/o.txt. tinyglobby however does not match any files.
When running the glob ./{a/e,b/f,**/*}/{n,o,k}.txt, I expect to match a total of 30 files. tinyglobby however does not match any files.

I've created a minimal reproduction example in https://github.com/jxn-30/tinyglobby-brace-expansion that shows how tinyglobby differs from fast-glob/globby at this point.
Glob tester also shows how minimatch produces the same result as fast-glob/globby.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions