#!/usr/bin/env python

import os, sys

SAGE_ROOT=os.environ["SAGE_ROOT"]
os.environ["LD_LIBRARY_PATH"] = SAGE_ROOT + "/local/lib"
os.environ["PYTHONPATH"]=SAGE_ROOT + "/local/lib/python/site-packages"
PYTHON=SAGE_ROOT + "/local/bin/python"

DOCTEST="""
    s = doctest.testmod(sys.modules[__name__], optionflags=doctest.NORMALIZE_WHITESPACE)
    sys.exit(s[0])        
"""
TEST_CODE= """
if __name__ ==  '__main__':
    import doctest, sys
""" + DOCTEST


def test_file(file):
    if os.path.exists(file):
        #s = "from sage.all import *\n"
        s =""
        s += open(file).read()
        s = s.replace("sage:", ">>>")
        s = s.replace("sage.:", "\nsage.:")
        
        i = s.rfind("if __name__")
        if i == -1:
            s += TEST_CODE
        else:
            j = s.rfind("doctest.testmod")
            s = s[:j] + DOCTEST
            
        f = "__test_%s"%file
        open(f,"w").write(s)
        cmd = "%s %s"%(PYTHON,f)
        #print cmd
        e = os.system(cmd)
        #os.remove(f)
        return e
    else:
        print "Error running %s, since file %s does not exist."%(sys.argv[0], sys.argv[1])
        return 1
                
if __name__ ==  '__main__':
    if len(sys.argv) == 1:
        print "Usage: %s <filename.pyx>"%(sys.argv[0])
        sys.exit(1)
    else:
        file = sys.argv[1]
        e = test_file(file)
        sys.exit(int(e!=0))




