Commit | Line | Data |
---|---|---|
0f9675ba FC |
1 | '''Unit tests for lib.build.''' |
2 | from pathlib import Path | |
3 | import sys | |
dc689b39 FC |
4 | if '' in sys.path: |
5 | sys.path.remove('') | |
0f9675ba FC |
6 | sys.path.append(str(Path(__file__).parent.parent.parent.parent)) |
7 | from os import getcwd, makedirs, walk | |
8 | from os.path import basename | |
9 | from shutil import rmtree | |
10 | from unittest import TestCase | |
dc689b39 | 11 | import re |
d3ef798c | 12 | from ya2.build.build import InsideDir, find_file_names, exec_cmd, _branch, _version, \ |
9f095a28 | 13 | to_be_built, FindFileNamesArgs |
0f9675ba FC |
14 | |
15 | ||
16 | class BuildTests(TestCase): | |
17 | ||
18 | def setUp(self): | |
19 | makedirs('test_get_files/a') | |
20 | makedirs('test_get_files/b') | |
21 | makedirs('test_get_files/c') | |
dc689b39 | 22 | with open('test_get_files/a/c.ext1', 'w', encoding='utf8') as ftest: |
0f9675ba | 23 | ftest.write('0123456789') |
dc689b39 FC |
24 | with open('test_get_files/a/d.ext2', 'w', encoding='utf8'): |
25 | pass | |
26 | with open('test_get_files/b/e.ext2', 'w', encoding='utf8') as ftest: | |
0f9675ba | 27 | ftest.write('0123456789') |
dc689b39 FC |
28 | with open('test_get_files/b/f.ext3', 'w', encoding='utf8'): |
29 | pass | |
30 | with open('test_get_files/c/g.ext2', 'w', encoding='utf8'): | |
31 | pass | |
0f9675ba FC |
32 | |
33 | def tearDown(self): | |
34 | rmtree('test_get_files') | |
35 | ||
36 | def test_exec_cmd(self): | |
37 | self.assertEqual(exec_cmd('echo abc'), 'abc') | |
38 | ||
39 | def test_branch(self): | |
40 | self.assertIn(_branch(), ['master', 'rc', 'stable']) | |
41 | ||
42 | def test_version(self): | |
43 | patterns = [ | |
44 | "^0a[0-9]+$", | |
45 | "^0rc[0-9]+$", | |
dc689b39 FC |
46 | r"^0\.[0-9]+$"] |
47 | compiled = [re.compile(pattern) for pattern in patterns] | |
0f9675ba FC |
48 | matches = [pattern.match(_version()) for pattern in compiled] |
49 | self.assertTrue(any(matches)) | |
50 | ||
51 | def test_get_files(self): | |
9f095a28 | 52 | find_info = FindFileNamesArgs(['ext2'], 'c') |
d3ef798c | 53 | _files = find_file_names(find_info) |
0f9675ba FC |
54 | self.assertSetEqual(set(_files), |
55 | set(['./test_get_files/a/d.ext2', | |
56 | './test_get_files/b/e.ext2'])) | |
57 | ||
58 | def test_inside_dir(self): | |
59 | dirs = [basename(x[0]) for x in walk('.')] | |
60 | dirs = [dir_ for dir_ in dirs if dir_ not in ['.', '..']] | |
61 | dirname = dirs[0] | |
62 | self.assertNotEqual(basename(getcwd()), dirname) | |
63 | with InsideDir(dirname): | |
64 | self.assertEqual(basename(getcwd()), dirname) | |
65 | self.assertNotEqual(basename(getcwd()), dirname) | |
66 | ||
67 | def test_to_be_built(self): | |
68 | tgt = 'test_get_files/tgt.txt' | |
dc689b39 | 69 | with open('test_get_files/src.txt', 'w', encoding='utf8') as fsrc: |
0f9675ba | 70 | fsrc.write('src') |
dc689b39 | 71 | with open(tgt, 'w', encoding='utf8') as ftgt: |
0f9675ba FC |
72 | ftgt.write('tgt') |
73 | self.assertTrue(to_be_built(tgt, ['test_get_files/src.txt'])) |