#1 Adding CI tests
Closed 4 years ago by vishalvvr. Opened 4 years ago by vishalvvr.
rpms/ vishalvvr/shobhika-fonts master  into  master

update font package name
vvijayra • 4 years ago  
Adding ci test
vvijayra • 4 years ago  
file added
+82
@@ -0,0 +1,82 @@ 

+ import subprocess

+ import sys

+ 

+ class fonttest:

+ 

+     def __init__(self, fontname, coverage_lang_list="en"):

+         self.fontname = fontname

+         self.coverage_lang_list = coverage_lang_list

+         self.out = dict()

+         self.out["err"] = list()

+         self.test_init()

+         

+     def execute_command(self, command_str):

+         out, err = subprocess.Popen(command_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

+         return (str(out, 'utf-8'), str(err, 'utf-8'))

+ 

+     def get_font_family(self):

+         # get font family

+         font_family, err = self.execute_command("fc-list | grep {0} | cut -d':' -f2".format(self.fontname)) 

+         #get all font file path

+         font_filepath, err = self.execute_command("fc-list | grep {0} | cut -d':' -f1".format(self.fontname))

+         font_filepath = font_filepath.split("\n")

+         self.out["font file list"] = list(filter(None, font_filepath))

+ 

+         # if font file exist create a font family list

+         if not err and font_family:

+             font_family = set(font_family.split("\n"))

+             font_family = map(str.strip, font_family)

+             self.out["font family list"] = list(filter(None, font_family))

+             # return self.out_font_family

+         else:

+             self.out["err"].append("invalid test or parameter in font family test")

+             self.out["err"].append(err)

+             sys.stdout.write("invalid test or parameter in font family test")

+         

+     def get_font_conf(self):

+         # get list of font conf files 

+         font_conflist, err = self.execute_command("fc-conflist | grep {0}".format(self.fontname))

+         

+         if not err and font_conflist: 

+             font_conflist = font_conflist.split("\n")

+             self.out["font conf list"] = list(filter(None, font_conflist))

+         else:

+             self.out["err"].append("invalid test or parameter in font conf test")

+             self.out["err"].append(err)

+             sys.stdout.write("invalid test or parameter in font conf test")

+ 

+     def get_lang_coverage(self):

+         self.out["lang covarage"] = dict()

+         for font_file_path in self.out["font file list"]:

+             font_langlist, err = self.execute_command("fc-query -f 'lang: %{lang}' "+font_file_path) 

+             

+             if not err and font_langlist: 

+                 font_langlist = font_langlist.split("|")

+                 font_langlist[0] = font_langlist[0].replace("lang: ","")

+                 out_lang_dict = dict()

+                 for lang in self.coverage_lang_list:

+                     out_lang_dict[lang] = lang in font_langlist

+                 

+                 self.out["lang covarage"][font_file_path] = out_lang_dict

+ 

+                 if False in out_lang_dict.values():

+                     self.out["err"].append("one or more lang coverage failed for font file:{0}".format(font_file_path))

+                     self.out["err"].append(out_lang_dict)

+                     sys.stdout.write("fail")

+             else:

+                 self.out["err"].append("invalid test or parameter in font lang coverage test")

+                 self.out["err"].append(err)

+                 sys.stdout.write("invalid test or parameter in font lang coverage test")

+ 

+     def test_init(self):

+         self.get_font_family()

+         self.get_font_conf()

+         self.get_lang_coverage()

+         if self.out["err"]:

+             sys.stderr.write("Test failed\n")

+         else:

+             sys.stdout.write("All Test Passed\n")

+ 

+ if __name__ == "__main__":

+     obj = fonttest(fontname="shobhika", coverage_lang_list=["en","mr","hi"])

+     print(obj.out)

@@ -0,0 +1,24 @@ 

+ - hosts: localhost

+   vars:

+   - artifacts: ./artifacts

+   - testfilename: fonttest.py

+   - testfilepath: /usr/local/bin

+   tags:

+   - classic

+   remote_user: root

+   tasks:

+   

+   - name: Install required package

+     dnf:

+       name: 

+       - shobhika-fonts

+       - python3

+       state: latest

+   

+   - name: Install the test files

+     copy: src={{ testfilename }} dest={{ testfilepath }}/{{ testfilename }} mode=0755

+ 

+   - name: Test Execution

+     block:

+       - name: Execute the tests

+         command: python3 {{ testfilepath }}/{{ testfilename }} 

\ No newline at end of file

file added
+1
@@ -0,0 +1,1 @@ 

+ - import_playbook: fonttest_playbook.yml 

\ No newline at end of file

Pull-Request has been closed by vishalvvr

4 years ago