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