mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-11-29 16:20:35 +00:00
133 lines
2.9 KiB
Python
133 lines
2.9 KiB
Python
# encoding: utf-8
|
|
"""
|
|
This script tests ``PathSpec``.
|
|
"""
|
|
|
|
try:
|
|
import unittest2 as unittest
|
|
except ImportError:
|
|
import unittest
|
|
|
|
import pathspec
|
|
|
|
|
|
class PathSpecTest(unittest.TestCase):
|
|
"""
|
|
The ``PathSpecTest`` class tests the ``PathSpec`` class.
|
|
"""
|
|
|
|
def test_01_current_dir_paths(self):
|
|
"""
|
|
Tests that paths referencing the current directory will be properly
|
|
normalized and matched.
|
|
"""
|
|
spec = pathspec.PathSpec.from_lines('gitwildmatch', [
|
|
'*.txt',
|
|
'!test1/',
|
|
])
|
|
results = set(spec.match_files([
|
|
'./src/test1/a.txt',
|
|
'./src/test1/b.txt',
|
|
'./src/test1/c/c.txt',
|
|
'./src/test2/a.txt',
|
|
'./src/test2/b.txt',
|
|
'./src/test2/c/c.txt',
|
|
]))
|
|
self.assertEqual(results, set([
|
|
'./src/test2/a.txt',
|
|
'./src/test2/b.txt',
|
|
'./src/test2/c/c.txt',
|
|
]))
|
|
|
|
def test_01_match_files(self):
|
|
"""
|
|
Tests that matching files one at a time yields the same results as
|
|
matching multiples files at once.
|
|
"""
|
|
spec = pathspec.PathSpec.from_lines('gitwildmatch', [
|
|
'*.txt',
|
|
'!test1/',
|
|
])
|
|
test_files = [
|
|
'src/test1/a.txt',
|
|
'src/test1/b.txt',
|
|
'src/test1/c/c.txt',
|
|
'src/test2/a.txt',
|
|
'src/test2/b.txt',
|
|
'src/test2/c/c.txt',
|
|
]
|
|
single_results = set(filter(spec.match_file, test_files))
|
|
multi_results = set(spec.match_files(test_files))
|
|
self.assertEqual(single_results, multi_results)
|
|
|
|
def test_01_windows_current_dir_paths(self):
|
|
"""
|
|
Tests that paths referencing the current directory will be properly
|
|
normalized and matched.
|
|
"""
|
|
spec = pathspec.PathSpec.from_lines('gitwildmatch', [
|
|
'*.txt',
|
|
'!test1/',
|
|
])
|
|
results = set(spec.match_files([
|
|
'.\\src\\test1\\a.txt',
|
|
'.\\src\\test1\\b.txt',
|
|
'.\\src\\test1\\c\\c.txt',
|
|
'.\\src\\test2\\a.txt',
|
|
'.\\src\\test2\\b.txt',
|
|
'.\\src\\test2\\c\\c.txt',
|
|
], separators=('\\',)))
|
|
self.assertEqual(results, set([
|
|
'.\\src\\test2\\a.txt',
|
|
'.\\src\\test2\\b.txt',
|
|
'.\\src\\test2\\c\\c.txt',
|
|
]))
|
|
|
|
def test_01_windows_paths(self):
|
|
"""
|
|
Tests that Windows paths will be properly normalized and matched.
|
|
"""
|
|
spec = pathspec.PathSpec.from_lines('gitwildmatch', [
|
|
'*.txt',
|
|
'!test1/',
|
|
])
|
|
results = set(spec.match_files([
|
|
'src\\test1\\a.txt',
|
|
'src\\test1\\b.txt',
|
|
'src\\test1\\c\\c.txt',
|
|
'src\\test2\\a.txt',
|
|
'src\\test2\\b.txt',
|
|
'src\\test2\\c\\c.txt',
|
|
], separators=('\\',)))
|
|
self.assertEqual(results, set([
|
|
'src\\test2\\a.txt',
|
|
'src\\test2\\b.txt',
|
|
'src\\test2\\c\\c.txt',
|
|
]))
|
|
|
|
def test_02_eq(self):
|
|
"""
|
|
Tests equality.
|
|
"""
|
|
first_spec = pathspec.PathSpec.from_lines('gitwildmatch', [
|
|
'*.txt',
|
|
'!test1/',
|
|
])
|
|
second_spec = pathspec.PathSpec.from_lines('gitwildmatch', [
|
|
'*.txt',
|
|
'!test1/',
|
|
])
|
|
self.assertEqual(first_spec, second_spec)
|
|
|
|
def test_02_ne(self):
|
|
"""
|
|
Tests equality.
|
|
"""
|
|
first_spec = pathspec.PathSpec.from_lines('gitwildmatch', [
|
|
'*.txt',
|
|
])
|
|
second_spec = pathspec.PathSpec.from_lines('gitwildmatch', [
|
|
'!*.txt',
|
|
])
|
|
self.assertNotEqual(first_spec, second_spec)
|