ya2 · news · projects · code · about

gettext: --no-location
[pmachines.git] / tests / ya2 / build / test_build.py
CommitLineData
0f9675ba
FC
1'''Unit tests for lib.build.'''
2from pathlib import Path
3import sys
dc689b39
FC
4if '' in sys.path:
5 sys.path.remove('')
0f9675ba
FC
6sys.path.append(str(Path(__file__).parent.parent.parent.parent))
7from os import getcwd, makedirs, walk
8from os.path import basename
9from shutil import rmtree
10from unittest import TestCase
dc689b39 11import re
d3ef798c 12from ya2.build.build import InsideDir, find_file_names, exec_cmd, _branch, _version, \
9f095a28 13 to_be_built, FindFileNamesArgs
0f9675ba
FC
14
15
16class 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']))