Hi Seb,
Which unittest are failing?
Albert
----- Original Message -----
From: "Sebastien Lelong" <[email protected]>
To: <[email protected]>
Sent: Tuesday, September 29, 2009 5:35 PM
Subject: [jallib] Re: r1361 committed - undo unittest changeset
Having commented all JALsPy stuff (a new way to debug...), it seems to work,
though I have some problems running some unittests. It's not related to
jallib.py update, I think I need to update unittests themselves.
There's a small bug when running in verbose mode too, which caused buildbot
to fail:
...
finally:
fout = file(fnout)
ferr = file(fnerr)
clean_compiler_products(filename)
fout.close()
ferr.close()
if verbose:
print fout.read()
print ferr.read()
os.unlink(fnout)
os.unlink(fnerr)
If verbose is on, print fout.read() fails because was previously closed.
Putting close statements after if block works.
Cheers,
Seb
--
Sbastien Lelong
http://www.sirloon.net
http://sirbot.org
2009/9/29 Sebastien Lelong <[email protected]>
> I tried using last picshell from SVN (rev. 78):
>
> - __init__.py is missing in picshell/console directory
> - a new JALsPy dependency has appeared: "No module named
> JALsPy_globals",
> from file: picshell/monitors/DeviceStateMonitors.py . I guess this is
> JALsPy
> from Stef's ? Where can I download it ?
>
>
> Cheers,
> Seb
> --
> Sbastien Lelong
> http://www.sirloon.net
> http://sirbot.org
>
>
> 2009/9/29 Sebastien Lelong <[email protected]>
>
> OK, let's keep SVN as is, I'll retrieve previous version, including
>> PICShell modifications. I may add an SVN externals to retrieve PICShell
>> source: when updating jallib, it checks updates in picshell SVN too.
>> pichsell is then integrated and linked to jallib automatically. It can be
>> handy. What do you think ?
>>
>> Seb
>>
>>
>>
>>
>>
>>
>>> Hi Seb,
>>> Think it is OK to move to the new picshell, I wasn't aware that the
>>> daily build process was depending on it, so therefore I did an undo of
>>> the change set so at least buildbot can do its job
>>> So the next step might be that you grab the latest picshell form SVN,
>>> and try to run it with the modified jallib.py script, please let me
>>> know if there are issues.
>>> Albert
>>>
>>>
>>> On 29 sep, 11:30, Sebastien Lelong <[email protected]> wrote:
>>> > If you think it's ok, we can actually migrate to new PICShell
>>> version...
>>> >
>>> > Seb
>>> >
>>> >
>>> >
>>> > > Revision: 1361
>>> > > Author: [email protected]
>>> > > Date: Tue Sep 29 01:44:14 2009
>>> > > Log: undo unittest changeset
>>> > >http://code.google.com/p/jallib/source/detail?r=1361
>>> >
>>> > > Deleted:
>>> > > /trunk/test/unittest/18f14k50_adc.jalt
>>> > > Modified:
>>> > > /trunk/tools/jallib.py
>>> >
>>> > > =======================================
>>> > > --- /trunk/test/unittest/18f14k50_adc.jalt Mon Sep 28 16:41:33
>>> 2009
>>> > > +++ /dev/null
>>> > > @@ -1,137 +0,0 @@
>>> > > --- Title: unittest to check ADC libs for 18f14k50
>>> > > --- Author: Albert Faber, Copyright (c) 2009, all rights reserved.
>>> > > --- Adapted-by:
>>> > > --- Compiler: >=2.4l
>>> > > ---
>>> > > --- This file is part of jallib (http://jallib.googlecode.com)
>>> > > --- Released under the BSD license
>>> > > (http://www.opensource.org/licenses/bsd-license.php)
>>> > > ---
>>> > > --- Description: this describes multiple unittests (a testcase), to
>>> test
>>> > > the
>>> > > --- many different combination while setting up ADC.
>>> > > ---
>>> > > --- Notes: see jallib wiki page about unit testing to learn how to
>>> use this
>>> > > file
>>> > > ---
>>> > > -
>>> > > -;@jallib section pic
>>> > > -include 18f14k50 ;@no_debug
>>> > > -pragma target OSC HS
>>> > > -pragma target clock 20_000_000
>>> > > -pragma target WDT disabled
>>> > > -enable_digital_io()
>>> > > --- force analog pin/port to be output, so we can check they are
>>> > > --- automagically set as input when configured (else it can be
>>> optimized
>>> > > away)
>>> > > -porta_direction = all_output
>>> > > -portb_direction = all_output
>>> > > -portc_direction = all_output
>>> > > -
>>> > > -
>>> > > -;@jallib section self_test
>>> > > -include unittest
>>> > > -var byte a = 120
>>> > > -test_byte(a) ;@assertEquals 120 test_test
>>> > > -
>>> > > -
>>> > > -;@jallib testcase test_all_analog_pins
>>> > > -;@jallib use pic
>>> > > -;@jallib use self_test
>>> > > -const byte ADC_NVREF = 0
>>> > > -const bit ADC_HIGH_RESOLUTION = false
>>> > > -const word ADC_RSOURCE = 2_500
>>> > > -porta_direction = all_output
>>> > > -portb_direction = all_output
>>> > > -portc_direction = all_output
>>> > > -
>>> > > -include adc
>>> > > -adc_init()
>>> > > -
>>> > > -set_analog_pin(0)
>>> > > --- check pin on PORTA configured as inputs (not supported)
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 0 test_porta_pin_an0_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an0_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 0 test_portb_pin_an0_input
>>> > > -
>>> > > -
>>> > > -set_analog_pin(1)
>>> > > --- check pin on PORTA configured as inputs (not supported)
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 0 test_porta_pin_an01_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an01_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 0 test_portb_pin_an01_input
>>> > > -
>>> > > -set_analog_pin(2)
>>> > > --- check pin on PORTA configured as inputs (not supported)
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 0 test_porta_pin_an012_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an012_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 0 test_portb_pin_an012_input
>>> > > -
>>> > > -
>>> > > -set_analog_pin(3)
>>> > > --- check pin on PORTA configured as inputs (0b_0001_0000 => RA{4})
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an0123_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an0123_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 0 test_portb_pin_an0123_input
>>> > > -
>>> > > -set_analog_pin(4)
>>> > > --- check pin on PORTC configured as inputs (0b_0000_0001 => RC{0} )
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an01234_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an01234_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 1 test_portb_pin_an01234_input
>>> > > -
>>> > > -set_analog_pin(5)
>>> > > --- check pin on PORTC configured as inputs (0b_0000_0011 =>
>>> RC{1},RC{0} )
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an012345_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an012345_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 3 test_portb_pin_an012345_input
>>> > > -
>>> > > -set_analog_pin(6)
>>> > > --- check pin on PORTC configured as inputs (0b_0000_0111 =>
>>> > > RC{2},RC{1},RC{0} )
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an0123456_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an0123456_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 7 test_portb_pin_an0123456_input
>>> > > -
>>> > > -set_analog_pin(7)
>>> > > --- check pin on PORTC configured as inputs (0b_0000_1111 =>
>>> > > RC{3},RC{2},RC{1},RC{0} )
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an01234567_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an01234567_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 15 test_portb_pin_an01234567_input
>>> > > -
>>> > > -set_analog_pin(8)
>>> > > --- check pin on PORTC configured as inputs (0b_0100_1111 =>
>>> > > RC(6),RC{3},RC{2},RC{1},RC{0} )
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 32
>>> > > test_porta_pin_an012345678_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an012345678_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 79
>>> > > test_portb_pin_an012345678_input
>>> > > -
>>> > > -set_analog_pin(9)
>>> > > --- check pin on PORTC configured as inputs (0b_1100_1111 =>
>>> > > RC{7},RC{6},RC{3},RC{2},RC{1},RC{0} )
>>> > > -asm nop
>>> > > -test_byte(TRISA) ;@assertEquals 32
>>> test_porta_pin_an0123456789_input
>>> > > -asm nop
>>> > > -test_byte(TRISB) ;@assertEquals 0
>>> > > test_portb_pin_an0123456789_input
>>> > > -asm nop
>>> > > -test_byte(TRISC) ;@assertEquals 207
>>> test_portb_pin_an0123456789_input
>>> > > =======================================
>>> > > --- /trunk/tools/jallib.py Mon Sep 28 15:23:55 2009
>>> > > +++ /trunk/tools/jallib.py Tue Sep 29 01:44:14 2009
>>> > > @@ -47,6 +47,12 @@
>>> > > except ImportError:
>>> > > has_subprocess = False
>>> >
>>> > > +try:
>>> > > + import picshell.engine.core.PicEngine
>>> > > + has_picshell = True
>>> > > +except ImportError:
>>> > > + has_picshell = False
>>> > > +
>>> >
>>> > > #########
>>> > > # TOOLS #
>>> > > @@ -756,6 +762,81 @@
>>> > > # JALAPI FUNC #
>>> > > #-------------#
>>> >
>>> > > +def picshell_unittest(jalFileName,asmFileName,hexFileName):
>>> > > +
>>> > > + if not has_picshell:
>>> > > + print >> sys.stderr, "Can't find PICShell libraries.
>>> > > Install
>>> > > PICShell and adjust PYTHONPATH"
>>> > > + sys.exit(255)
>>> > > +
>>> > > + # This piece of code is loosely based on PICShell
>>> implementation.
>>> > > + # This is a quick & dirty assembling :)
>>> > > +
>>> > > + from picshell.parser.JalV2AsmParser import JalV2AsmParser
>>> > > + from picshell.parser.AnnotationParser import AnnotationParser
>>> > > + from picshell.engine.core.PicThreadEngine import
>>> > > PicThreadEngine
>>> > > + from picshell.engine.core.PicEngine import PicEngine
>>> > > + from picshell.engine.core.State import State
>>> > > + from picshell.util.AssertUtil import AssertUtil
>>> > > +
>>> > > + from picshell.ui.UIManager import UIManager
>>> > > +
>>> > > + asmParser = JalV2AsmParser()
>>> > > + wholeCode = asmParser.parseAsmFile(asmFileName, [])
>>> > > + varTypeDict = JalV2AsmParser.buildVarTypeDict(wholeCode)
>>> > > +
>>> > > + parseRes = AnnotationParser.parse(file(jalFileName).read())
>>> > > + noDebugList = parseRes["noDebug"]
>>> > > + debugList = parseRes["debug"]
>>> > > + langParser = JalV2AsmParser()
>>> > > + code = langParser.parseAsmFile(asmFileName,
>>> noDebugList,debugList)
>>> > > +
>>> > > + def unittest_callback(address,oracle):
>>> > > + line = langParser.adrToLine[address]
>>> > > + if line != None:
>>> > > + txt = code[line].line
>>> > > + if "@assertEquals" in txt:
>>> > > + res = AssertUtil.parse(txt)
>>> > > + var = res["var"].lower()
>>> > > + label = res["label"]
>>> > > + ref = res["ref"]
>>> > > + if
>>> (langParser.varAdrMapping.has_key("v_"+str(var))):
>>> > > + varAddr =
>>> langParser.varAdrMapping["v_"+str(var)]
>>> > > + varType = type = varTypeDict.get(var,'bit')
>>> > > + val = ui.varValue(varAddr,varType)
>>> > > + res= varType+" "+var+" (@"+str(varAddr)+") =
>>> 0x%X ,
>>> > > expected : 0x%X" %(val,ref)
>>> > > +
>>> > > + print label,
>>> > > + if (ref == val) :
>>> > > + oracle['success'] += 1
>>> > > + print ": OK"
>>> > > + else :
>>> > > + oracle['failure'] += 1
>>> > > + print ": FAIL, %s != %s" % (ref,val)
>>> > > + else:
>>> > > + oracle['notrun'] += 1
>>> > > + print "Can't run test '%s' because var '%s'
>>> can't be
>>> > > found" % (label,var)
>>> > > +
>>> > > + emu = PicEngine.newInstance(State(),hexFileName)
>>> > > + # needed to access varValue function
>>> > > + ui = UIManager()
>>> > > + ui.emu = emu
>>> > > +
>>> > > + # success failure notrun
>>> > > + oracle = {'success' : 0, 'failure' : 0, 'notrun' : 0}
>>> > > + def run(to,emu,unittest_callback):
>>> > > + current_address = emu.runNext()
>>> > > + while current_address != to:
>>> > > + #unit testing ?
>>> > > + if unittest_callback != None:
>>> > > + unittest_callback(current_address,oracle)
>>> > > + current_address = emu.runNext()
>>> > > + # last call on finishing address
>>> > > + unittest_callback(current_address,oracle)
>>> > > +
>>> > > + run(emu.lastAddress,emu,unittest_callback)
>>> > > +
>>> > > + return oracle
>>> > > +
>>> > > def unittest(filename,verbose=False):
>>> > > oracle = {'success' : None, 'failure' : None, 'notrun' : None}
>>> > > content = file(filename).read().splitlines()
>>> > > @@ -766,8 +847,6 @@
>>> > > fout = file(fnout,"w")
>>> > > ferr = file(fnerr,"w")
>>> > > status =
>>> >
>>> > >
>>> do_compile([filename],exitonerror=False,clean=False,stdout=fout,stderr=ferr
>>> )
>>> > > - fout.close()
>>> > > - ferr.close()
>>> > > except Exception,e:
>>> > > print >> sys.stderr, "Error while compiling file '%s':
>>> %s" %
>>> > > (filename,e)
>>> > > raise
>>> > > @@ -778,30 +857,15 @@
>>> > > jal = filename
>>> > > asm = filename.replace(".jal",".asm")
>>> > > hex = filename.replace(".jal",".hex")
>>> > > -
>>> > > -
>>> >
>>> > ...
>>> >
>>> > meer lezen
>>> >>>
>>>
>>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jallib" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/jallib?hl=en
-~----------~----~----~----~------~----~------~--~---