Salome HOME
import, formule, param et etc
[tools/eficas.git] / Tests / testastest9 / basetest.py
1 import os,glob,sys
2 import unittest
3 import difflib
4
5 from InterfaceTK import appli
6
7 from config import ASTERDIR
8
9 version="v9"
10
11 def cdiff(text1,text2):
12     return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
13
14 def make_tests(files):
15     class TestCase(unittest.TestCase):
16        app=None
17
18        def setUp(self):
19           if self.app == None:
20              self.app=appli.STANDALONE(version=version)
21           pass
22
23        def tearDown(self):
24           CONTEXT.unset_current_step()
25
26        i=0
27        for f in glob.glob(os.path.join(ASTERDIR[version],files)):
28           ff=open(f)
29           text=ff.read()
30           ff.close()
31           if text.find("VISU_EFICAS='NON'") != -1:continue
32           for o in ('3','2','1','0','m'):
33            f=f[:-1]+o
34            if os.path.isfile(f):break
35           i=i+1
36           name=os.path.splitext(os.path.basename(f))[0]
37     
38           exec """def test_%s(self,file="%s"):
39                       "fichier:%s"
40                       self.commtest(file)
41 """ % (name,f,f)
42        del i,f,ff,text,o,name
43     
44        def commtest(self,file):
45           """ Test generique"""
46           name=os.path.splitext(os.path.basename(file))[0]
47           errfile=os.path.join(os.path.dirname(__file__),name+".err")
48           err=""
49           if os.path.isfile(errfile):
50               f=open(errfile)
51               err=f.read()
52               f.close()
53           try:
54             j=self.app.openJDC(file=file)
55             if err == "":
56               assert j.isvalid(),j.report()
57             else:
58               txt=str(j.report())
59               assert txt == err,cdiff(err,txt)
60               j.supprime()
61               assert sys.getrefcount(j) == 2,sys.getrefcount(j)
62           except ValueError,e:
63             txt=str(e)
64             if err == "":
65                 raise
66             else:
67                 assert txt == err,cdiff(err,txt)
68     
69     return TestCase