Hi 

I have implemented some functionality that now forces test records to be
stored against the product they were run against.  This is fine however
it was apparent that we needed to bring the legacy records in line with
new format. So I wrote a script that went through each test record and
appended the "Product Run: " field at the end of each test record. This
works however I thought I could try and be a bit clever, as in some
cases previously people have logged the product that the was run against
in a comments field, and take the product name out of the comment field
and place it in the ProductRun field. 

However I have got myself slightly confused as the best way to proceed.
Here is my script  and below a sample test record and what the record i
am ultimately aiming for. I have changed the product names to something
generic. The regular expression actually works and finds all instances
of a test being run against a product but I am confused as to how I can
then further process the information

I will also take code critique as well. 

import os
import re
debug = False

def writeUpdatedRecordsToFile(path,updated_records):

    for x,j in updated_records.iteritems():
        f = open(path+x,"w")
        j.pop()
        for record in j:
            f.write(record)



def findTestDirectories(path):
    os.chdir(path)
    directory_listing = os.listdir(os.getcwd())
    test_record_directories = []
    for directory in directory_listing:
        if "TestRecords" in directory:
            test_record_directories.append(directory)
    return test_record_directories

def findProductFromComments(records_from_record_file):
    '''
        Attempt to find products run against in the comment field
        if we find one. Write it to the newly created product run field
    '''

    searchText = re.compile(r'(<product 1>|<product 2>|<product
3>|<product 4>)', re.IGNORECASE)
    for record in records_from_record_file:
        if searchText.findall(record) !=[]:
            print record.split("\n\n")

def amendProductField(dir):
    fileList = os.listdir(dir)
    currPath =  os.getcwd()+"\\"+dir+"\\"
    dict_of_amended_records = {}
    list_of_amended_records = []
    for file in fileList:
        if "CVS" in file:
            pass
        else:
            f = open(currPath+"\\"+file)
            if debug:
                print "opening %s for reading" %file
            fileContents = f.read()
            fileContents = fileContents.split("\n\n")
            findProductFromComments(fileContents)
            for record in fileContents:

                record+="\nProductRun:\n\n"
                list_of_amended_records.append(record)
                dict_of_amended_records[file] = list_of_amended_records
            list_of_amended_records = []
    #writeUpdatedRecordsToFile(currPath,dict_of_amended_records)


test_dir = findTestDirectories("C:\\Sandbox")
if debug:
    print "Opening %s for amending" %test_dir[0]

#for directory in test_dir:
    #amendProductField(directory)
amendProductField(test_dir[0])

Current Record:

TestedDate: 2005-04-30
TestId: 001591
Branch: xxxx
Version: 3351
SpecId: Specification-0000-0966
Cpu: Pentium 4
OperatingSystem: Windows 2000
CpuCount: Single
Tester: someone
Comment: Run on <product 1>
MinutesTaken: 5
PassOrFail: Pass

Desired Record:

TestedDate: 2005-04-30
TestId: 001591
Branch: xxxx
Version: 3351
SpecId: Specification-0000-0966
Cpu: Pentium 4
OperatingSystem: Windows 2000
CpuCount: Single
Tester: someone
Comment: Run on <product 1>
MinutesTaken: 5
PassOrFail: Pass
Product: <product 1> 


Dean Gardner





DISCLAIMER:
Unless indicated otherwise, the information contained in this message is 
privileged and confidential, and is intended only for the use of the 
addressee(s) named above and others who have been specifically authorized to 
receive it. If you are not the intended recipient, you are hereby notified that 
any dissemination, distribution or copying of this message and/or attachments 
is strictly prohibited. The company accepts no liability for any damage caused 
by any virus transmitted by this email. Furthermore, the company does not 
warrant a proper and complete transmission of this information, nor does it 
accept liability for any delays. If you have received this message in error, 
please contact the sender and delete the message. Thank you.
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to