0

Here is the code:

 1 #!/usr/bin/env python
  2 
  3 import re, os, sys, jira, subprocess
  4 
  5 class Check_jira:
  6 
  7     def verify_commit_text(self, tags):
  8         for line in tags:
  9             if re.match('^NO-TIK',line):
 10                 return True
 11             elif re.match('^NO-REVIEW', line):
 12                 return True
 13             elif re.match(r'[a-zA-Z]+-\d+', line):
 14                 # Validate the JIRA ID
 15                 m = re.search("([a-zA-Z]+-\d+)",line)
 16                 if m:
 17                     my_args = m.group(1)
 18                     result = Check_jira.CheckForJiraIssueRecord(my_args)
 19                     if result == False:
 20                         util.warn("%s does not exist"%my_args)
 21                     else:
 22                         return True
 23                 return True
 24             else:
 25                 return False
 26 if __name__ == '__main__':
 27     p = Check_jira()
 28     commit_text_verified = p.verify_commit_text(os.popen('hg tip --template "{desc}"'))
 29 
 30     if (commit_text_verified):
 31         sys.exit(0)
 32     else:
 33         print >> sys.stderr, ('[obey the rules!]')
 34         sys.exit(1);
 35     def CheckForJiraIssueRecord(object):
 36    
 37         sys.stdout = os.devnull
 38         sys.stderr = os.devnull
 39 
 40    
 41         try:
 42             com = jira.Commands()
 43             logger = jira.setupLogging()
 44             jira_env = {'home':os.environ['HOME']}
 45             command_cat= "cat"
 46             command_logout= "logout"
 47             #my_args = ["QA-656"]
 48             server = "http://jira.myserver.com:8080/rpc/soap/jirasoapservice-v2?wsdl"
 49         except Exception, e:
 50             sys.exit('config error')
 51 
 52 class Options:
 53     pass
 54 options = Options()
 55 
 56 options.user = 'user'
 57 options.password = 'password'
 58 
 59 try:
 60 
 61     jira.soap = jira.Client(server)
 62     jira.start_login(options, jira_env, command_cat, com, logger)
 63     issue = com.run(command_cat, logger, jira_env, my_args)
 64 except Exception, e:
 65     print sys.exit('data error')

so maybe: 1. if name == 'main': shoudl be at the bottom ? 2. So, i have 2 classes (Check_jira) and (Options) 3. Check_jira has 2 functions verify_commit_text() and CheckForJiraIssueRecord() 4. I pass object as an argument to CheckForJiraIssueRecord since i am passing my_args to it , on its usage. 5. Not sure how to call one function from another function in the same class 6. Error i am getting is :

Traceback (most recent call last):
  File "/home/qa/hook-test/.hg/check_jira.py", line 31, in 
    commit_text_verified = p.verify_commit_text(os.popen('hg tip --template "{desc}"'))
  File "/home/qa/hook-test/.hg/check_jira.py", line 21, in verify_commit_text
    result = Check_jira.CheckForJiraIssueRecord(my_args)
AttributeError: class Check_jira has no attribute 'CheckForJiraIssueRecord'
transaction abort!
rollback completed
abort: pretxncommit.jira hook exited with status 1
0

1 Answer 1

1

class Check_jira ends on line 25 and has only one method. Then you have an if block, and CheckForJiraIssueRecord is just a function defined in this block (that is, the function is defined if __name__ == '__main__'.

Just put the if block outside after the whole class definition.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.