// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:io';

import 'package:pub/src/ignore.dart';
import 'package:test/test.dart';

void main() {
  group('Ignore.ignores', () {
    // just for sanity checking
    test('simple case', () {
      final ig = Ignore(['*.dart']);

      expect(ig.ignores('file.dart'), isTrue);
      expect(ig.ignores('lib/file.dart'), isTrue);
      expect(ig.ignores('README.md'), isFalse);
    });
  });

  group('pub', () {
    void testIgnorePath(
      TestData c,
      String path,
      bool expected,
      bool ignoreCase,
    ) {
      final casing = 'with ignoreCase = $ignoreCase';
      test('${c.name}: Ignore.ignores("$path") == $expected $casing', () {
        var hasWarning = false;
        final pathWithoutSlash =
            path.endsWith('/') ? path.substring(0, path.length - 1) : path;

        Iterable<String> listDir(String dir) {
          // List the next part of path:
          if (dir == pathWithoutSlash) return [];
          final nextSlash = path.indexOf('/', dir == '.' ? 0 : dir.length + 1);
          return [path.substring(0, nextSlash == -1 ? path.length : nextSlash)];
        }

        Ignore? ignoreForDir(String dir) => c.patterns[dir] == null
            ? null
            : Ignore(
                c.patterns[dir]!,
                onInvalidPattern: (_, __) => hasWarning = true,
                ignoreCase: ignoreCase,
              );

        bool isDir(String candidate) =>
            candidate == '.' ||
            path.length > candidate.length && path[candidate.length] == '/';

        final r = Ignore.listFiles(
          beneath: pathWithoutSlash,
          includeDirs: true,
          listDir: listDir,
          ignoreForDir: ignoreForDir,
          isDir: isDir,
        );
        if (expected) {
          expect(
            r,
            isEmpty,
            reason: 'Expected "$path" to be ignored, it was NOT!',
          );
        } else {
          expect(
            r,
            [pathWithoutSlash],
            reason: 'Expected "$path" to NOT be ignored, it was IGNORED!',
          );
        }

        // Also test that the logic of walking the tree works.
        final r2 = Ignore.listFiles(
          includeDirs: true,
          listDir: listDir,
          ignoreForDir: ignoreForDir,
          isDir: isDir,
        );
        if (expected) {
          expect(
            r2,
            isNot(contains(pathWithoutSlash)),
            reason: 'Expected "$path" to be ignored, it was NOT!',
          );
        } else {
          expect(
            r2,
            contains(pathWithoutSlash),
            reason: 'Expected "$path" to NOT be ignored, it was IGNORED!',
          );
        }
        expect(hasWarning, c.hasWarning);
      });
    }

    for (final c in testData) {
      c.paths.forEach((path, expected) {
        final ignoreCase = c.ignoreCase;
        if (ignoreCase == null) {
          testIgnorePath(c, path, expected, false);
          testIgnorePath(c, path, expected, true);
        } else {
          testIgnorePath(c, path, expected, ignoreCase);
        }
      });
    }
  });

  ProcessResult runGit(List<String> args, {String? workingDirectory}) {
    final executable = Platform.isWindows ? 'cmd' : 'git';
    args = Platform.isWindows ? ['/c', 'git', ...args] : args;
    return Process.runSync(
      executable,
      args,
      workingDirectory: workingDirectory,
    );
  }

  group('git', () {
    Directory? tmp;

    setUpAll(() async {
      tmp = await Directory.systemTemp.createTemp('package-ignore-test-');

      final ret = runGit(['init'], workingDirectory: tmp!.path);
      expect(
        ret.exitCode,
        equals(0),
        reason:
            'Running "git init" failed. StdErr: ${ret.stderr} StdOut: ${ret.stdout}',
      );
    });

    tearDownAll(() async {
      await tmp!.delete(recursive: true);
      tmp = null;
    });

    tearDown(() async {
      runGit(['clean', '-f', '-d', '-x'], workingDirectory: tmp!.path);
    });

    void testIgnorePath(
      TestData c,
      String path,
      bool expected,
      bool ignoreCase,
    ) {
      final casing = 'with ignoreCase = $ignoreCase';
      final result = expected ? 'IGNORED' : 'NOT ignored';
      test(
        '${c.name}: git check-ignore "$path" is $result $casing',
        () async {
          expect(
            runGit(
              ['config', '--local', 'core.ignoreCase', ignoreCase.toString()],
              workingDirectory: tmp!.path,
            ).exitCode,
            anyOf(0, 1),
            reason: 'Running "git config --local core.ignoreCase ..." failed',
          );

          for (final directory in c.patterns.keys) {
            final resolvedDirectory =
                directory == '' ? tmp!.uri : tmp!.uri.resolve('$directory/');
            Directory.fromUri(resolvedDirectory).createSync(recursive: true);
            final gitIgnore =
                File.fromUri(resolvedDirectory.resolve('.gitignore'));
            gitIgnore.writeAsStringSync(
              '${c.patterns[directory]!.join('\n')}\n',
            );
          }
          final process = runGit(
            ['-C', tmp!.path, 'check-ignore', '--no-index', path],
            workingDirectory: tmp!.path,
          );
          expect(
            process.exitCode,
            anyOf(0, 1),
            reason: 'Running "git check-ignore" failed',
          );
          final ignored = process.exitCode == 0;
          if (expected != ignored) {
            if (expected) {
              fail('Expected "$path" to be ignored, it was NOT!');
            }
            fail('Expected "$path" to NOT be ignored, it was IGNORED!');
          }
        },
        skip: Platform.isMacOS || // System `git` on mac has issues...
            c.skipOnWindows && Platform.isWindows,
      );
    }

    for (final c in testData) {
      c.paths.forEach((path, expected) {
        final ignoreCase = c.ignoreCase;
        if (ignoreCase == null) {
          testIgnorePath(c, path, expected, false);
          testIgnorePath(c, path, expected, true);
        } else {
          testIgnorePath(c, path, expected, ignoreCase);
        }
      });
    }
  });
}

class TestData {
  /// Name of the test case.
  final String name;

  /// Patterns for the test case.
  final Map<String, List<String>> patterns;

  /// Map from path to `true` if ignored by [patterns], and `false` if not
  /// ignored by `patterns`.
  final Map<String, bool> paths;

  final bool hasWarning;

  /// Many of the tests don't play well on windows. Simply skip them.
  final bool skipOnWindows;

  /// Test with `core.ignoreCase` set to `true`, `false` or both (if `null`).
  final bool? ignoreCase;

  TestData(
    this.name,
    this.patterns,
    this.paths, {
    this.hasWarning = false,
    this.skipOnWindows = false,
    this.ignoreCase,
  });

  TestData.single(
    String pattern,
    this.paths, {
    this.hasWarning = false,
    this.skipOnWindows = false,
    this.ignoreCase,
  })  : name = '"${pattern.replaceAll('\n', '\\n')}"',
        patterns = {
          '.': [pattern],
        };
}

final testData = [
  // Simple test case
  TestData('simple', {
    '.': [
      '/.git/',
      '*.o',
    ],
  }, {
    '.git/config': true,
    '.git/': true,
    'README.md': false,
    'main.c': false,
    'main.o': true,
  }),
  // Test empty lines
  TestData('empty', {
    '.': [''],
  }, {
    'README.md': false,
  }),
  // Patterns given in multiple lines with comments
  TestData('multiple lines LF', {
    '.': [
      '#comment\n/.git/ \n*.o\n',
      // Using CR CR LF doesn't work
      '#comment\n*.md\r\r\n',
      // Tab is not ignored
      '#comment\nLICENSE\t\n',
      // Trailing comments not allowed
      '#comment\nLICENSE  # ignore license\n',
    ],
  }, {
    '.git/config': true,
    '.git/': true,
    'README.md': false,
    'LICENSE': false,
    'main.c': false,
    'main.o': true,
  }),
  TestData('multiple lines CR LF', {
    '.': [
      '#comment\r\n/.git/ \r\n*.o\r\n',
      // Using CR CR LF doesn't work
      '#comment\r\n*.md\r\r\n',
      // Tab is not ignored
      '#comment\r\nLICENSE\t\r\n',
      // Trailing comments not allowed
      '#comment\r\nLICENSE  # ignore license\r\n',
    ],
  }, {
    '.git/config': true,
    '.git/': true,
    'README.md': false,
    'LICENSE': false,
    'main.c': false,
    'main.o': true,
  }),
  // Test simple patterns
  TestData.single('file.txt', {
    'file.txt': true,
    'other.txt': false,
    'src/file.txt': true,
    '.obj/file.txt': true,
    'sub/folder/file.txt': true,
  }),
  TestData.single('/file.txt', {
    'file.txt': true,
    'other.txt': false,
    'src/file.txt': false,
    '.obj/file.txt': false,
    'sub/folder/file.txt': false,
  }),
  // Test comments and escaping
  TestData.single('#file.txt', {
    'file.txt': false,
    '#file.txt': false,
  }),
  TestData.single(r'\#file.txt', {
    '#file.txt': true,
    'other.txt': false,
    'src/#file.txt': true,
    '.obj/#file.txt': true,
    'sub/folder/#file.txt': true,
  }),
  // Test ! and escaping
  TestData.single('!file.txt', {
    'file.txt': false,
    '!file.txt': false,
  }),
  TestData(
    'negation',
    {
      '.': ['f*', '!file.txt'],
    },
    {
      'file.txt': false,
      '!file.txt': false,
      'filter.txt': true,
    },
  ),
  TestData.single(r'\!file.txt', {
    '!file.txt': true,
    'other.txt': false,
    'src/!file.txt': true,
    '.obj/!file.txt': true,
    'sub/folder/!file.txt': true,
  }),
  // Test trailing spaces and escaping
  TestData.single('file.txt   ', {
    'file.txt': true,
    'other.txt': false,
    'src/file.txt': true,
    '.obj/file.txt': true,
    'sub/folder/file.txt': true,
  }),
  TestData.single(r'file.txt\ \     ', {
    'file.txt  ': true,
    'file.txt': false,
    'other.txt  ': false,
    'src/file.txt  ': true,
    'src/file.txt': false,
    '.obj/file.txt  ': true,
    '.obj/file.txt': false,
    'sub/folder/file.txt  ': true,
    'sub/folder/file.txt': false,
  }),
  // Test ending in a slash or not
  TestData.single('folder/', {
    'file.txt': false,
    'folder': false,
    'folder/': true,
    'folder/file.txt': true,
    'sub/folder/': true,
    'sub/folder': false,
    'sub/file.txt': false,
  }),
  TestData.single('folder.txt/', {
    'file.txt': false,
    'folder.txt': false,
    'folder.txt/': true,
    'folder.txt/file.txt': true,
    'sub/folder.txt/': true,
    'sub/folder.txt': false,
    'sub/file.txt': false,
  }),
  TestData.single('folder', {
    'file.txt': false,
    'folder': true,
    'folder/': true,
    'folder/file.txt': true,
    'sub/folder/': true,
    'sub/folder': true,
    'sub/file.txt': false,
  }),
  TestData.single('folder.txt', {
    'file.txt': false,
    'folder.txt': true,
    'folder.txt/': true,
    'folder.txt/file.txt': true,
    'sub/folder.txt/': true,
    'sub/folder.txt': true,
    'sub/file.txt': false,
  }),
  // Test contains a slash makes it relative root
  TestData.single('/folder/', {
    'file.txt': false,
    'folder': false,
    'folder/': true,
    'folder/file.txt': true,
    'sub/folder/': false,
    'sub/folder': false,
    'sub/file.txt': false,
  }),
  TestData.single('/folder', {
    'file.txt': false,
    'folder': true,
    'folder/': true,
    'folder/file.txt': true,
    'sub/folder/': false,
    'sub/folder': false,
    'sub/file.txt': false,
  }),
  TestData.single('sub/folder/', {
    'file.txt': false,
    'folder': false,
    'folder/': false,
    'folder/file.txt': false,
    'sub/folder/': true,
    'sub/folder/file.txt': true,
    'sub/folder': false,
    'sub/file.txt': false,
  }),
  TestData.single('sub/folder', {
    'file.txt': false,
    'folder': false,
    'folder/': false,
    'folder/file.txt': false,
    'sub/folder/': true,
    'sub/folder/file.txt': true,
    'sub/folder': true,
    'sub/file.txt': false,
  }),
  // Special characters from RegExp that are not special in .gitignore
  for (final c in r'(){}+.^$|'.split('')) ...[
    TestData.single(
      '${c}file.txt',
      {
        '${c}file.txt': true,
        'file.txt': false,
        'file.txt$c': false,
      },
      skipOnWindows: c == '^' || c == '|',
    ),
    TestData.single(
      'file.txt$c',
      {
        'file.txt$c': true,
        'file.txt': false,
        '${c}file.txt': false,
      },
      skipOnWindows: c == '^' || c == '|',
    ),
    TestData.single(
      'fi${c}l)e.txt',
      {
        'fi${c}l)e.txt': true,
        'f${c}il)e.txt': false,
        'fil)e.txt': false,
      },
      skipOnWindows: c == '^' || c == '|',
    ),
    TestData.single(
      'fi${c}l}e.txt',
      {
        'fi${c}l}e.txt': true,
        'f${c}il}e.txt': false,
        'fil}e.txt': false,
      },
      skipOnWindows: c == '^' || c == '|',
    ),
  ],
  // Special characters from RegExp that are also special in .gitignore
  // can be escaped.
  for (final c in r'[]*?\'.split('')) ...[
    TestData.single(
      '\\${c}file.txt',
      {
        '${c}file.txt': true,
        'file.txt': false,
        'file.txt$c': false,
      },
      skipOnWindows: c == r'\',
    ),
    TestData.single(
      'file.txt\\$c',
      {
        'file.txt$c': true,
        'file.txt': false,
        '${c}file.txt': false,
      },
      skipOnWindows: c == r'\',
    ),
    TestData.single(
      'fi\\${c}l)e.txt',
      {
        'fi${c}l)e.txt': true,
        'f${c}il)e.txt': false,
        'fil)e.txt': false,
      },
      skipOnWindows: c == r'\',
    ),
    TestData.single(
      'fi\\${c}l}e.txt',
      {
        'fi${c}l}e.txt': true,
        'f${c}il}e.txt': false,
        'fil}e.txt': false,
      },
      skipOnWindows: c == r'\',
    ),
  ],
  // Special characters from RegExp can always be escaped
  for (final c in r'()[]{}*+?.^$|\'.split('')) ...[
    TestData.single(
      '\\${c}file.txt',
      {
        '${c}file.txt': true,
        'file.txt': false,
        'file.txt$c': false,
      },
      skipOnWindows: c == '^' || c == '|' || c == r'\',
    ),
    TestData.single(
      'file.txt\\$c',
      {
        'file.txt$c': true,
        'file.txt': false,
        '${c}file.txt': false,
      },
      skipOnWindows: c == '^' || c == '|' || c == r'\',
    ),
    TestData.single(
      'file\\$c.txt',
      {
        'file$c.txt': true,
        'file.txt': false,
        '${c}file.txt': false,
      },
      skipOnWindows: c == '^' || c == '|' || c == r'\',
    ),
  ],
  // Ending in backslash (unescaped)
  TestData.single(
    'file.txt\\',
    {
      'file.txt\\': false,
      'file.txt ': false,
      'file.txt\n': false,
      'file.txt': false,
    },
    hasWarning: true,
    skipOnWindows: true,
  ),
  TestData.single(r'file.txt\n', {
    'file.txt\\\n': false,
    'file.txt ': false,
    'file.txt\n': false,
    'file.txt': false,
  }),
  TestData.single(
    '**\\',
    {
      'file.txt\\\n': false,
      'file.txt ': false,
      'file.txt\n': false,
      'file.txt': false,
    },
    hasWarning: true,
  ),
  TestData.single(
    '*\\',
    {
      'file.txt\\\n': false,
      'file.txt ': false,
      'file.txt\n': false,
      'file.txt': false,
    },
    hasWarning: true,
  ),
  // ? matches anything except /
  TestData.single('?', {
    'f': true,
    'file.txt': false,
  }),
  TestData.single('a?c', {
    'abc': true,
    'abcd': false,
    'a/b': false,
    'ab/': false,
    'folder': false,
    'folder/': false,
    'folder/abc': true,
    'folder/abcd': false,
    'folder/aac': true,
    'abc/': true,
    'abc/file.txt': true,
  }),
  TestData.single('???', {
    'abc': true,
    'abcd': false,
    'a/b': false,
    'ab/': false,
    'folder': false,
    'folder/': false,
    'folder/abc': true,
    'folder/abcd': false,
    'folder/aaa': true,
    'abc/': true,
    'abc/file.txt': true,
  }),
  TestData.single('/???', {
    'abc': true,
    'abcd': false,
    'a/b': false,
    'ab/': false,
    'folder': false,
    'folder/': false,
    'folder/abc': false,
    'folder/abcd': false,
    'folder/aaa': false,
    'abc/': true,
    'abc/file.txt': true,
  }),
  TestData.single('???/', {
    'abc': false,
    'abcd': false,
    'a/b': false,
    'ab/': false,
    'folder': false,
    'folder/': false,
    'folder/abc': false,
    'folder/abcd': false,
    'folder/aaa': false,
    'abc/': true,
    'abc/file.txt': true,
  }),
  TestData.single('???/file.txt', {
    'abc': false,
    'folder': false,
    'folder/': false,
    'folder/abc': false,
    'folder/abcd': false,
    'folder/aaa': false,
    'abc/': false,
    'abc/file.txt': true,
  }),
  // Empty character classes
  TestData.single(
    'a[]c',
    {
      'abc': false,
      'ac': false,
      'a': false,
      'a[]c': false,
      'c': false,
    },
    hasWarning: true,
  ),
  TestData.single(
    'a[]',
    {
      'abc': false,
      'ac': false,
      'a': false,
      'a[]': false,
      'c': false,
    },
    hasWarning: true,
  ),
  // Invalid character classes
  TestData.single(
    r'a[\]',
    {
      'abc': false,
      'ac': false,
      'a': false,
      'a\\': false,
      'a[]': false,
      'a[': false,
      'a[\\]': false,
      'c': false,
    },
    hasWarning: true,
    skipOnWindows: true,
  ),
  TestData.single(
    r'a[\\\]',
    {
      'abc': false,
      'ac': false,
      'a': false,
      'a[]': false,
      'a[': false,
      'a[\\]': false,
      'c': false,
    },
    hasWarning: true,
    skipOnWindows: true,
  ),
  // Character classes with special characters
  TestData.single(
    r'a[\\]',
    {
      'a': false,
      'ab': false,
      'a[]': false,
      'a[': false,
      'a\\': true,
    },
    skipOnWindows: true,
  ),
  TestData.single(
    r'a[^b]',
    {
      'a': false,
      'ab': false,
      'ac': true,
      'a[': true,
      'a\\': true,
    },
    skipOnWindows: true,
  ),
  TestData.single(
    r'a[!b]',
    {
      'a': false,
      'ab': false,
      'ac': true,
      'a[': true,
      'a\\': true,
    },
    skipOnWindows: true,
  ),
  TestData.single(r'a[[]', {
    'a': false,
    'ab': false,
    'a[': true,
    'a]': false,
  }),
  TestData.single(r'a[]]', {
    'a': false,
    'ab': false,
    'a[': false,
    'a]': true,
  }),
  TestData.single(r'a[?]', {
    'a': false,
    'ab': false,
    'a??': false,
    'a?': true,
  }),
  // Character classes with characters
  TestData.single(r'a[abc]', {
    'a': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
  }),
  // Character classes with ranges
  TestData.single(r'a[a-c]', {
    'a': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
    'ae': false,
  }),
  TestData.single(r'a[a-cf]', {
    'a': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
    'ae': false,
    'af': true,
  }),
  TestData.single(r'a[a-cx-z]', {
    'a': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
    'ae': false,
    'af': false,
    'ax': true,
    'ay': true,
    'az': true,
  }),
  // Character classes with weird-ranges
  TestData.single(r'a[a-c-e]', {
    'a': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
    'af': false,
    'ae': true,
    'a-': true,
  }),
  TestData.single(r'a[--0]', {
    'a': false,
    'a-': true,
    'a.': true,
    'a0': true,
    'a1': false,
  }),
  TestData.single(r'a[+--]', {
    'a': false,
    'a-': true,
    'a+': true,
    'a,': true,
    'a0': false,
  }),
  TestData.single(r'a[a-c]', {
    'a': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
    'a-': false,
  }),
  TestData.single(r'a[\a-c]', {
    'a': false,
    'a\\': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
    'a-': false,
  }),
  TestData.single(r'a[a-\c]', {
    'a': false,
    'a\\': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
    'a-': false,
  }),
  TestData.single(r'a[\a-\c]', {
    'a': false,
    'a\\': false,
    'aa': true,
    'ab': true,
    'ac': true,
    'ad': false,
    'a-': false,
  }),
  TestData.single(r'a[\a\-\c]', {
    'a': false,
    'a\\': false,
    'aa': true,
    'ab': false,
    'a-': true,
    'ac': true,
    'ad': false,
  }),
  // Character classes with dashes
  TestData.single(r'a[-]', {
    'a-': true,
    'a': false,
  }),
  TestData.single(r'a[a-]', {
    'a-': true,
    'aa': true,
    'ab': false,
  }),
  TestData.single(r'a[-a]', {
    'a-': true,
    'aa': true,
    'ab': false,
  }),
  // TODO: test slashes in character classes
  // Test **, *, [, and [...] cases
  TestData.single('x[a-c-e]', {
    'xa': true,
    'xb': true,
    'xc': true,
    'cd': false,
    'xe': true,
    'x-': true,
  }),
  TestData.single('*', {
    'file.txt': true,
    'other.txt': true,
    'src/file.txt': true,
    '.obj/file.txt': true,
    'sub/folder/file.txt': true,
  }),
  TestData.single('f*', {
    'file.txt': true,
    'otherf.txt': false,
    'src/file.txt': true,
    'folder/other.txt': true,
    'sub/folder/file.txt': true,
  }),
  TestData.single('*f', {
    'file.txt': false,
    'otherf.txt': false,
    'otherf.paf': true,
    'src/file.txt': false,
    'folder/other.txt': false,
    'sub/folderf/file.txt': true,
  }),
  TestData.single('sub/**/f*', {
    'file.txt': false,
    'otherf.txt': false,
    'other.paf': false,
    'src/file.txt': false,
    'folder/other.txt': false,
    'sub/file.txt': true,
    'sub/f.txt': true,
    'sub/pile.txt': false,
    'sub/other.paf': false,
    'sub/folder/file.txt': true,
    'sub/folder/': true,
    'sub/folder/pile.txt': true,
    'sub/folder/other.paf': true,
    'sub/bolder/': false,
    'sub/bolder/file.txt': true,
    'sub/bolder/pile.txt': false,
    'sub/bolder/other.paf': false,
    'subblob/file.txt': false,
  }),
  TestData.single('sub/', {
    'sub/': true,
    'mop/': false,
    'sup': false,
  }),
  TestData.single('sub/**/', {
    'file.txt': false,
    'otherf.txt': false,
    'other.paf': false,
    'src/file.txt': false,
    'folder/other.txt': false,
    'sub/file.txt': false,
    'sub/f.txt': false,
    'sub/pile.txt': false,
    'sub/other.paf': false,
    'sub/folder/': true,
    'sub/sub/folder/': true,
    'sub/folder/file.txt': true,
    'sub/folder/pile.txt': true,
    'sub/folder/other.paf': true,
    'sub/bolder/': true,
    'sub/': false,
    'sub/bolder/file.txt': true,
    'sub/bolder/pile.txt': true,
    'sub/bolder/other.paf': true,
    'subblob/file.txt': false,
  }),
  TestData.single('**/bolder/', {
    'file.txt': false,
    'otherf.txt': false,
    'other.paf': false,
    'src/file.txt': false,
    'sub/folder/bolder': false,
    'sub/folder/other.paf': false,
    'sub/bolder/': true,
    'sub/': false,
    'bolder/': true,
    'bolder': false,
    'sub/bolder/file.txt': true,
    'sub/bolder/pile.txt': true,
    'sub/bolder/other.paf': true,
    'subblob/file.txt': false,
  }),
  TestData('ignores in subfolders only target those', {
    '.': ['a.txt'],
    'folder': ['b.txt'],
    'folder/sub': ['c.txt'],
  }, {
    'a.txt': true,
    'b.txt': false,
    'c.txt': false,
    'folder/a.txt': true,
    'folder/b.txt': true,
    'folder/c.txt': false,
    'folder/sub/a.txt': true,
    'folder/sub/b.txt': true,
    'folder/sub/c.txt': true,
  }),
  TestData('Cannot negate folders that were excluded', {
    '.': ['sub/', '!sub/foo.txt'],
  }, {
    'sub/a.txt': true,
    'sub/foo.txt': true,
  }),
  TestData('Can negate the exclusion of folders', {
    '.': ['*.txt', 'sub', '!sub', '!foo.txt'],
  }, {
    'sub/a.txt': true,
    'sub/foo.txt': false,
  }),
  TestData('Can negate the exclusion of folders 2', {
    '.': ['sub/', '*.txt'],
    'folder': ['!sub/', '!foo.txt'],
  }, {
    'folder/sub/a.txt': true,
    'folder/sub/foo.txt': false,
    'folder/foo.txt': false,
    'folder/a.txt': true,
  }),

  TestData('folder/* does not ignore `folder` itself', {
    '.': ['folder/*', '!folder/a.txt'],
  }, {
    'folder/a.txt': false,
    'folder/b.txt': true,
  }),

  // Case sensitivity
  TestData(
    'simple',
    {
      '.': [
        '/.git/',
        '*.o',
      ],
    },
    {
      '.git/config': true,
      '.git/': true,
      'README.md': false,
      'main.c': false,
      'main.o': true,
      'main.O': false,
    },
    ignoreCase: false,
  ),
  // Test simple patterns
  TestData.single(
    'file.txt',
    {
      'file.TXT': false,
      'file.txT': false,
      'file.txt': true,
      'other.txt': false,
      'src/file.txt': true,
      '.obj/file.txt': true,
      'sub/folder/file.txt': true,
      'src/file.TXT': false,
      '.obj/file.TXT': false,
      'sub/folder/file.TXT': false,
    },
    ignoreCase: false,
  ),

  // Case insensitivity
  TestData(
    'simple',
    {
      '.': [
        '/.git/',
        '*.o',
      ],
    },
    {
      '.git/config': true,
      '.git/': true,
      'README.md': false,
      'main.c': false,
      'main.o': true,
      'main.O': true,
    },
    ignoreCase: true,
  ),
  TestData.single(
    'file.txt',
    {
      'file.TXT': true,
      'file.txT': true,
      'file.txt': true,
      'other.txt': false,
      'src/file.txt': true,
      '.obj/file.txt': true,
      'sub/folder/file.txt': true,
      'src/file.TXT': true,
      '.obj/file.TXT': true,
      'sub/folder/file.TXT': true,
    },
    ignoreCase: true,
  ),
];
