def test_get_opened_date_with_timeline_class(self): '''This test case is for input that has the reported date of the bug inside an a tag with class "timeline" and the div with "date" class is missing''' tbp = TracBugParser( bug_url='https://projects.forum.nokia.com/ndg/ticket/92') # Add data to avoid the network hit # (This is a file you can get by calling 'wget' on the above ticket URL.) # (You might have to add --no-check-certificate to override the certificate common name error) cached_html_filename = os.path.join(HERE, 'sample-data', 'ndg-ticket-92') tbp.set_bug_html_data( unicode(open(cached_html_filename).read(), 'utf-8')) # This CSV data comes from visiting # https://projects.forum.nokia.com/ndg/ticket/92 and clicking # "Comma-delimited text" at the bottom. tbp.set_bug_csv_data( open(os.path.join(HERE, 'sample-data', 'ndg-ticket-92.csv')).read()) # Provide a fake "tracker model", which is a little bit of data that # corresponds to information about the open source project in question # and how its bug tracker is configured. tm = TrackerModel() # Now, actually look at the data returned by the BugParser object # and verify its output through assertions. returned_data = tbp.get_parsed_data_dict(tm) assert returned_data['title'] == 'Enhanced GPS setting' assert returned_data['date_reported']
def test_create_bug_with_link_in_reported_by_field(self): tbp = TracBugParser('https://code.djangoproject.com/query?id=18937') cached_csv_filename = os.path.join(HERE, 'sample-data', 'django-trac-18937.csv') tbp.set_bug_csv_data(unicode( open(cached_csv_filename).read(), 'utf-8')) cached_html_filename = os.path.join(HERE, 'sample-data', 'django-trac-18937.html') tbp.set_bug_html_data(unicode( open(cached_html_filename).read(), 'utf-8')) got = tbp.get_parsed_data_dict(self.tm4) del got['last_polled'] wanted = { '_project_name': 'Tango', 'as_appears_in_distribution': '', 'canonical_bug_link': 'https://code.djangoproject.com/query?id=18937', 'concerns_just_documentation': False, 'date_reported': printable_datetime( datetime.datetime(2012, 9, 10, 3, 17, 54)), 'description': u'Add a PKG-INFO file as fitting with [http://www.python.org/dev/peps/pep-0345/ PEP 345].\r\rSee [http://blog.ziade.org/2012/09/10/dear-django-help-python-packaging/ this blog post] for reference.\r\rSeems to me we can add this metadata file without too much difficulty and make new packaging happy :D\r\r', 'good_for_newcomers': False, 'importance': '', 'last_touched': printable_datetime( datetime.datetime(2012, 9, 10, 3, 27, 13)), 'looks_closed': False, 'people_involved': 3, 'status': 'new', 'submitter_realname': '', 'submitter_username': '******', 'title': 'Use modern Python packaging metadata standard (1.2, PEP 345)', } self.assertEqual(wanted, got)
def test_get_opened_date_with_timeline_class(self): '''This test case is for input that has the reported date of the bug inside an a tag with class "timeline" and the div with "date" class is missing''' tbp = TracBugParser( bug_url='https://projects.forum.nokia.com/ndg/ticket/92') # Add data to avoid the network hit # (This is a file you can get by calling 'wget' on the above ticket URL.) # (You might have to add --no-check-certificate to override the certificate common name error) cached_html_filename = os.path.join(HERE, 'sample-data', 'ndg-ticket-92') tbp.set_bug_html_data(unicode( open(cached_html_filename).read(), 'utf-8')) # This CSV data comes from visiting # https://projects.forum.nokia.com/ndg/ticket/92 and clicking # "Comma-delimited text" at the bottom. tbp.set_bug_csv_data(open(os.path.join(HERE, 'sample-data', 'ndg-ticket-92.csv')).read()) # Provide a fake "tracker model", which is a little bit of data that # corresponds to information about the open source project in question # and how its bug tracker is configured. tm = TrackerModel() # Now, actually look at the data returned by the BugParser object # and verify its output through assertions. returned_data = tbp.get_parsed_data_dict(tm) assert returned_data['title'] == 'Enhanced GPS setting' assert returned_data['date_reported']
def test_create_bug_with_link_in_reported_by_field(self): tbp = TracBugParser('https://code.djangoproject.com/query?id=18937') cached_csv_filename = os.path.join(HERE, 'sample-data', 'django-trac-18937.csv') tbp.set_bug_csv_data(unicode( open(cached_csv_filename).read(), 'utf-8')) cached_html_filename = os.path.join(HERE, 'sample-data', 'django-trac-18937.html') tbp.set_bug_html_data( unicode(open(cached_html_filename).read(), 'utf-8')) got = tbp.get_parsed_data_dict(self.tm4) del got['last_polled'] wanted = { '_project_name': 'Tango', 'as_appears_in_distribution': '', 'canonical_bug_link': 'https://code.djangoproject.com/query?id=18937', 'concerns_just_documentation': False, 'date_reported': printable_datetime(datetime.datetime(2012, 9, 10, 3, 17, 54)), 'description': u'Add a PKG-INFO file as fitting with [http://www.python.org/dev/peps/pep-0345/ PEP 345].\r\rSee [http://blog.ziade.org/2012/09/10/dear-django-help-python-packaging/ this blog post] for reference.\r\rSeems to me we can add this metadata file without too much difficulty and make new packaging happy :D\r\r', 'good_for_newcomers': False, 'importance': '', 'last_touched': printable_datetime(datetime.datetime(2012, 9, 10, 3, 27, 13)), 'looks_closed': False, 'people_involved': 3, 'status': 'new', 'submitter_realname': '', 'submitter_username': '******', 'title': 'Use modern Python packaging metadata standard (1.2, PEP 345)', } self.assertEqual(wanted, got)
def test_bug_with_difficulty_easy_is_bitesize(self): tbp = TracBugParser( bug_url='http://hackage.haskell.org/trac/ghc/ticket/4268') cached_html_filename = os.path.join(HERE, 'sample-data', 'ghc-trac-4268.html') tbp.set_bug_html_data(unicode( open(cached_html_filename).read(), 'utf-8')) cached_csv_filename = os.path.join(HERE, 'sample-data', 'ghc-trac-4268.csv') tbp.set_bug_csv_data(open(cached_csv_filename).read()) tm = HaskellTrackerModel() returned_data = tbp.get_parsed_data_dict(tm) assert returned_data['good_for_newcomers'], '''The bug is considered
def test_bug_with_difficulty_easy_is_bitesize(self): tbp = TracBugParser( bug_url='http://hackage.haskell.org/trac/ghc/ticket/4268') cached_html_filename = os.path.join(HERE, 'sample-data', 'ghc-trac-4268.html') tbp.set_bug_html_data( unicode(open(cached_html_filename).read(), 'utf-8')) cached_csv_filename = os.path.join(HERE, 'sample-data', 'ghc-trac-4268.csv') tbp.set_bug_csv_data(open(cached_csv_filename).read()) tm = HaskellTrackerModel() returned_data = tbp.get_parsed_data_dict(tm) assert returned_data['good_for_newcomers'], '''The bug is considered
def test_bug_parser(self): ### As an aside: # TracBugParser is amusing, as it pulls data from two different sources. # 1. Data pulled from the Trac API, which is stored for the parser's # benefit in csv_data. # 2. Data that must be scraped from the Trac web app, since the API # doesn't expose everything. This gets stored in html_data. # In this test, we provide versions of that data that we downloaded # in the past so that we can make this test run fast and reliably. # By providing the data here, we permit the test to run without # accessing the network. # Create a new TracBugParser that is aware of the URL it refers to tbp = TracBugParser( bug_url='http://twistedmatrix.com/trac/ticket/4298') # Add data to avoid the network hit # (This is a file you can get by calling 'wget' on the above ticket URL.) cached_html_filename = os.path.join( HERE, 'sample-data', 'twisted-trac-4298-on-2010-04-02.html') tbp.set_bug_html_data( unicode(open(cached_html_filename).read(), 'utf-8')) # This CSV data comes from visiting # http://twistedmatrix.com/trac/ticket/4298 and clicking # "Comma-delimited text" at the bottom. tbp.set_bug_csv_data( open( os.path.join(HERE, 'sample-data', 'twisted-trac-4298-csv-export')).read()) # Provide a fake "tracker model", which is a little bit of data that # corresponds to information about the open source project in question # and how its bug tracker is configured. tm = TrackerModel() # Now, actually look at the data returned by the BugParser object # and verify its output through assertions. returned_data = tbp.get_parsed_data_dict(tm) assert returned_data['title'] == 'Deprecate twisted.persisted.journal' assert returned_data['good_for_newcomers']
def test_bug_parser(self): ### As an aside: # TracBugParser is amusing, as it pulls data from two different sources. # 1. Data pulled from the Trac API, which is stored for the parser's # benefit in csv_data. # 2. Data that must be scraped from the Trac web app, since the API # doesn't expose everything. This gets stored in html_data. # In this test, we provide versions of that data that we downloaded # in the past so that we can make this test run fast and reliably. # By providing the data here, we permit the test to run without # accessing the network. # Create a new TracBugParser that is aware of the URL it refers to tbp = TracBugParser( bug_url='http://twistedmatrix.com/trac/ticket/4298') # Add data to avoid the network hit # (This is a file you can get by calling 'wget' on the above ticket URL.) cached_html_filename = os.path.join( HERE, 'sample-data', 'twisted-trac-4298-on-2010-04-02.html') tbp.set_bug_html_data( unicode(open(cached_html_filename).read(), 'utf-8')) # This CSV data comes from visiting # http://twistedmatrix.com/trac/ticket/4298 and clicking # "Comma-delimited text" at the bottom. tbp.set_bug_csv_data( open( os.path.join(HERE, 'sample-data', 'twisted-trac-4298-csv-export')).read()) # Provide a fake "tracker model", which is a little bit of data that # corresponds to information about the open source project in question # and how its bug tracker is configured. tm = TrackerModel() # Now, actually look at the data returned by the BugParser object # and verify its output through assertions. returned_data = tbp.get_parsed_data_dict(tm) assert returned_data['title'] == 'Deprecate twisted.persisted.journal' assert returned_data['good_for_newcomers']