def testSemantic1(self): util.semanticProgram( util.source(''' class NineTest: pass ''') )
def testParse3(self): program = util.source(''' class NineTest: var memberVar ''') result = util.parseProgram(program) assert isinstance(result[0], ClassDecl) return result[0]
def testCodeGen(self): program = util.source(''' class NineTest: var x as int def Method(): pass ''') util.buildProgram('classdecl_codegen_test', program)
def testParse2(self): program = util.source(''' class NineTest: def Method(): pass ''') result = util.parseProgram(program) assert isinstance(result[0], ClassDecl) return result[0]
def testParse1(self): 'Return the ClassDecl so that the testSemanticX methods can use it.' program = util.source(''' class NineTest: pass ''') result = util.parseProgram(program) assert isinstance(result[0], ClassDecl) return result[0]
def testVirtualOverrideKeywords1(self): program = util.source(''' class A_Class: override def Bork(): pass ''') self.assertRaises( error.OverrideError, lambda: util.semanticProgram(program) )
def testVirtualOverrideKeywords3(self): program = util.source(''' class A_Class: virtual def Method(): pass class B_Class(A_Class): override def Method(): pass ''') util.semanticProgram(program)
def testSemantic2(self): program = util.source(''' class NineTest: var x def Method(): pass ''') self.failUnlessRaises( error.SyntaxError, lambda: util.semanticProgram(program) )
def testStaticMethod(self): program = util.source(''' class NineTest: static def Method(): x = x + 1 print x var x = 0 while x < 10: NineTest.Method() ''') util.runProgram('classdecl_static_method_test', program)
def testCircularInheritance(self): program = util.source(''' class A(B): pass class B(A): pass ''') self.assertRaises( error.CircularInheritanceError, lambda: util.semanticProgram(program) )
def testAttributes(self): program = util.source(''' class NineTest: var x as int def Method(): self.x = self.x + 1 print self.x var t = NineTest() while t.x < 10: t.Method() ''') util.runProgram('classdecl_attribute_test', program)
def testStaticFactory(self): # Test a problem that occurred when trying to construct an instance # of a class within methods of that class. program = util.source(''' class Test: static def MakeTest() as Test: var test = Test() return test var t = Test.MakeTest() ''') util.runProgram('classdecl_static_factory_test', program)
def testSealedClass(self): program = util.source(''' sealed class A: virtual def Method(): print 'Hody2!' class B(A): pass ''') self.assertRaises( error.OverrideError, lambda: util.buildProgram('classdecl_sealedclass_test', program) )
def testStaticAttribute(self): program = util.source(''' class NineTest: static var x as int def Method(): self.x = self.x + 1 print self.x var t = NineTest() while NineTest.x < 10: t.Method() ''') util.runProgram('classdecl_static_attr_test', program)
def testSemantic3(self): program = util.source(''' class DuplicateName: pass class DuplicateName: var x def Method(): pass ''') self.failUnlessRaises( error.NameError, lambda: util.semanticProgram(program) )
def testVirtualOverrideKeywords2(self): program = util.source(''' class A_Class: override def Method(): pass class B_Class(A_Class): override def Method(x as int): pass ''' ) self.assertRaises( error.OverrideError, lambda: util.semanticProgram(program) )
def testGetMethod(self): "testGetMethod: Test ClassDecl.getMethod()" from ast import vartypes program = util.source(''' class A_Class: virtual def Method(): pass class B_Class(A_Class): override def Method(): pass ''') result = util.semanticProgram(program).pop() assert isinstance(result, ClassDecl) assert result.getMethod("Method", (), vartypes.VoidType) is not None
def testOverride(self): program = util.source(''' class Base: var x as int def NonVirtual(): print 'nonvirtual' print self.x self.x += 1 virtual def Method(): print 'Base!' def wuzzah(): print 'wuzzah!' print self.x class Child1(Base): override def Method(): print 'Child1!' class Child2(Base): override def Method(): print 'Child2!' var t = Base() t.Method() t.NonVirtual() t.wuzzah() t = Child1() t.Method() t.NonVirtual() t.wuzzah() t = Child2() t.Method() t.NonVirtual() t.wuzzah() ''') util.runProgram('classdecl_override_test', program)
def testSealedMethod(self): program = util.source(''' class A: virtual def Method(): print 'A' class B(A): sealed override def Method(): print 'B' class C(B): override def Method(): print 'C' ''') self.assertRaises( error.OverrideError, lambda: util.semanticProgram(program) )
def testAbstractClass(self): program = util.source(''' abstract class A: abstract def Foo() class B(A): override def Foo(): print 'B.Foo' class C(A): override def Foo(): print 'C.Foo' var a as A a = B() a.Foo() a = C() a.Foo() ''') util.runProgram('classdecl_abstract_class_test', program, ['mscorlib'])
def testGetMethods(self): 'testGetMethods: ClassDecl.getMethods' program = util.source(''' class AClass: def a(): pass def b(): pass var c def d(): pass virtual def e(): pass ''') decl = util.parseProgram(program).pop() assert isinstance(decl, ClassDecl) names = [func.name for func in decl.getMethods()] self.assertEqual(names, ['a', 'b', 'd', 'e'])
subst["RCM_DEPLOY_ROOTPATH"] = root_dir subst["RCM_DEPLOY_INSTALLPATH"] = install subst["RCM_DEPLOY_SPACKPATH"] = dest for p in config_path_list: logger.info("config_dir-->" + p + "<-- ") for f in glob.glob( p + "/*.yaml"): # generator, search immediate subdirectories outfile = os.path.basename(f) target = os.path.join(dest, 'etc', 'spack', outfile) logger.info("config_file " + outfile + " -->" + f + "<-- ") if not os.path.exists(target): templ = mytemplate.stringtemplate(open(f).read()) out = templ.safe_substitute(subst) logger.info("WRITING config_file " + outfile + " -->" + target + "<-- ") open(target, "w").write(out) util.source(os.path.join(dest, 'share', 'spack', 'setup-env.sh')) for p in config_path_list: initfile = os.path.join(p, 'config.sh') if os.path.exists(initfile): logger.info("parsing init file-->" + initfile + "<-- ") f = open(initfile, 'r') for line in f: if len(line) > 0: if not line[0] == '#': templ = mytemplate.stringtemplate(line) cmd = templ.safe_substitute(subst) (ret, out, err) = util.run(cmd.split(), logger=logger) logger.info(" " + out)
subst["RCM_DEPLOY_ROOTPATH"] = root_dir subst["RCM_DEPLOY_INSTALLPATH"] = install subst["RCM_DEPLOY_SPACKPATH"] = dest for p in config_path_list: logger.info("config_dir-->"+p+"<-- ") for f in glob.glob(p+ "/*.yaml"): # generator, search immediate subdirectories outfile=os.path.basename(f) target=os.path.join(dest,'etc','spack',outfile) logger.info("config_file "+outfile+" -->"+f+"<-- ") if not os.path.exists(target): templ= mytemplate.stringtemplate(open(f).read()) out=templ.safe_substitute(subst) logger.info("WRITING config_file "+outfile+" -->"+target+"<-- ") open(target,"w").write(out) util.source(os.path.join(dest,'share','spack','setup-env.sh')) for p in config_path_list: initfile=os.path.join(p,'config.sh') if os.path.exists(initfile): logger.info("parsing init file-->" + initfile + "<-- ") f=open(initfile,'r') for line in f: if len(line)>0: if not line[0] == '#': templ= mytemplate.stringtemplate(line) cmd=templ.safe_substitute(subst) (ret,out,err)=util.run(cmd.split(),logger=logger) logger.info(" " + out )
def testBlankFirstLine(self): util.buildProgram('classdecl_blank_first_line_test', util.source(''' class Test: pass '''))