def test_store_comments_2(self, mock_people, mock_request): mock_people.return_value = ObjectId('5899f79cfc263613115e5ccb') mock_request.return_value = self.comments_issue_6050 gh_backend = GithubBackend(self.conf, self.issues_system_id, self.project_id) gh_backend.store_issue(self.issue_6050) mongo_issue = Issue.objects(external_id='6050').get() gh_backend._process_comments('6131', mongo_issue) mongo_comments = IssueComment.objects.order_by('+created_at', '+external_id') self.assertEqual(2, len(mongo_comments)) comment = mongo_comments[0] self.assertEqual(271799582, comment.external_id) self.assertEqual(mongo_issue.id, comment.issue_id) self.assertEqual(datetime.datetime(2017, 1, 11, 7, 41, 1), comment.created_at) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), comment.author_id) self.assertEqual("No, the `autoload-dev` and `require-dev` are root only attributes, meaning that they only " "are read from your root composer.json, not your dependencies.", comment.comment) comment = mongo_comments[1] self.assertEqual(271805655, comment.external_id) self.assertEqual(mongo_issue.id, comment.issue_id) self.assertEqual(datetime.datetime(2017, 1, 11, 8, 17, 12), comment.created_at) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), comment.author_id) self.assertEqual("That's what I thought :(\r\n\r\nHow do you use your approach local packages tests then?", comment.comment)
def test_store_events_2(self, mock_people, mock_request): mock_people.return_value = ObjectId('5899f79cfc263613115e5ccb') mock_request.return_value = self.events_issue_6050 gh_backend = GithubBackend(self.conf, self.issues_system_id, self.project_id) gh_backend.store_issue(self.issue_6050) gh_backend._process_events('6050', Issue.objects(external_id='6050').get()) mongo_issue = Issue.objects(external_id='6050').get() mongo_events = Event.objects.order_by('+created_at', '+external_id') self.assertEqual(3, len(mongo_events)) event = mongo_events[0] self.assertEqual(datetime.datetime(2017, 1, 7, 13, 2, 14), event.created_at) self.assertEqual(914944953, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('closed', event.status) event = mongo_events[1] self.assertEqual(datetime.datetime(2017, 1, 10, 11, 3, 36), event.created_at) self.assertEqual(917330267, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('reopened', event.status) event = mongo_events[2] self.assertEqual(datetime.datetime(2017, 1, 11, 7, 41, 25), event.created_at) self.assertEqual(918698316, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('labeled', event.status) self.assertEqual(None, event.old_value) self.assertEqual('Support', event.new_value)
def test_store_events(self, mock_people, mock_request): mock_people.return_value = ObjectId('5899f79cfc263613115e5ccb') mock_request.return_value = self.events_issue_6131 gh_backend = GithubBackend(self.conf, self.issues_system_id, self.project_id) gh_backend.store_issue(self.issue_6131) gh_backend._process_events('6131', Issue.objects(external_id='6131').get()) mongo_issue = Issue.objects(external_id='6131').get() mongo_events = Event.objects.order_by('+created_at', '+external_id') self.assertEqual(6, len(mongo_events)) event = mongo_events[0] self.assertEqual(datetime.datetime(2017, 2, 4, 14, 35, 53), event.created_at) self.assertEqual(949130826, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('renamed', event.status) self.assertEqual('Inexplainable', event.old_value) self.assertEqual('Inexplainable dependency conflict', event.new_value) event = mongo_events[1] self.assertEqual(datetime.datetime(2017, 2, 5, 11, 25, 57), event.created_at) self.assertEqual(949403950, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('labeled', event.status) self.assertEqual(None, event.old_value) self.assertEqual('Solver', event.new_value) event = mongo_events[2] self.assertEqual(datetime.datetime(2017, 2, 5, 11, 25, 57), event.created_at) self.assertEqual(949403951, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('labeled', event.status) self.assertEqual(None, event.old_value) self.assertEqual('Support', event.new_value) event = mongo_events[3] self.assertEqual(datetime.datetime(2017, 2, 5, 11, 27, 17), event.created_at) self.assertEqual(949404323, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('mentioned', event.status) event = mongo_events[4] self.assertEqual(datetime.datetime(2017, 2, 5, 11, 27, 17), event.created_at) self.assertEqual(949404324, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('subscribed', event.status) event = mongo_events[5] self.assertEqual(datetime.datetime(2017,2,6,23,19,52), event.created_at) self.assertEqual(951210829, event.external_id) self.assertEqual(mongo_issue.id, event.issue_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), event.author_id) self.assertEqual('referenced', event.status)
def test_store_issue_2(self, mock_people): mock_people.return_value = ObjectId('5899f79cfc263613115e5ccb') gh_backend = GithubBackend(self.conf, self.issues_system_id, self.project_id) gh_backend.store_issue(self.issue_6050) mongo_issue = Issue.objects(external_id='6050').get() self.assertEqual(self.issues_system_id, mongo_issue.issue_system_id) self.assertEqual("Local path package does not autoload classes", mongo_issue.title) self.assertEqual("I'm about to write post about local packages, but there is one thing that blocks me.\r\n\r\nI " "use [path local package](https://getcomposer.org/doc/05-repositories.md#path).\r\n\r\nI need " "to autoload-dev and require-dev dependencies so I could run tests on those local packages." "\r\nWithout that, I have to put this into main `composer.json`, which kinda kills the " "decoupling to path package.\r\n\r\nIs there a way to do that?\r\n\r\n---\r\n\r\nOutput of " "`composer diagnose`:\r\n\r\n```json\r\nChecking composer.json: OK\r\nChecking platform " "settings: OK\r\nChecking git settings: OK\r\nChecking http connectivity to packagist: " "OK\r\nChecking https connectivity to packagist: OK\r\nChecking github.com oauth access: " "OK\r\nChecking disk free space: OK\r\nChecking pubkeys: \r\nTags Public Key Fingerprint: " "57815BA2 7E54DC31 7ECC7CC5 573090D0 87719BA6 8F3BB723 4E5D42D0 84A14642\r\nDev Public " "Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B 0C708369 153E328C AD90147D " "AFE50952\r\nOK\r\nChecking composer version: OK\r\n```", mongo_issue.desc) self.assertEqual(datetime.datetime(2017, 1, 7, 12, 55, 43), mongo_issue.created_at) self.assertEqual(datetime.datetime(2017, 1, 11, 8, 17, 12), mongo_issue.updated_at) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), mongo_issue.reporter_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), mongo_issue.creator_id) self.assertEqual('open', mongo_issue.status) self.assertListEqual(['Support'], mongo_issue.labels)
def test_store_issue(self, mock_people): mock_people.return_value = ObjectId('5899f79cfc263613115e5ccb') gh_backend = GithubBackend(self.conf, self.issues_system_id, self.project_id) gh_backend.store_issue(self.issue_6131) mongo_issue = Issue.objects(external_id='6131').get() self.assertEqual(self.issues_system_id, mongo_issue.issue_system_id) self.assertEqual('Inexplainable dependency conflict', mongo_issue.title) self.assertEqual('Steps to reproduce:\r\n\r\nhttps://github.com/Berdir/strict-dependency-bug\r\n\r\nOutput:' '\r\n\r\n```\r\nYour requirements could not be resolved to an installable set of packages.' '\r\n\r\n Problem 1\r\n - berdir/strict-dependency-bug 1.0.0 requires ' 'webflo/drupal-core-strict 8.2.6 -> satisfiable by webflo/drupal-core-strict[8.2.6].\r\n -' ' berdir/strict-dependency-bug 1.0.1 requires webflo/drupal-core-strict 8.2.6 -> satisfiable' ' by webflo/drupal-core-strict[8.2.6].\r\n - Conclusion: don\'t install ' 'webflo/drupal-core-strict 8.2.6\r\n - Installation request for ' 'berdir/strict-dependency-bug ^1.0 -> satisfiable by berdir/strict-dependency-bug[1.0.0, 1.0.1]' '.\r\n\r\n\r\nInstallation failed, reverting ./composer.json to its original content.' '\r\n```\r\n\r\nThe problem is related to having more than one valid version in ' 'strict-dependency-bug, if you do \"composer require berdir/strict-dependency-bug:1.0.1\" ' 'instead, it installs fine.\r\n\r\nThe error doesn\'t really make sense, how can there be a ' 'conflict because of two identical versions?\r\n\r\ndrupal-core-strict is a package that aims ' 'to enforce the same dependencies as defined in Drupal\'s composer.lock. We\'ve noticed that ' 'sometimes there are unexpected changes in untested dependencies versions, this is an idea to' ' prevent that.\r\n\r\n(That might or might not really be a good idea. I mostly sharing this ' 'in case there\'s a deeper depencency resolving problem here)\r\n\r\nAny idea what\'s going on? ', mongo_issue.desc) self.assertEqual(datetime.datetime(2017,2,4,14,33,47), mongo_issue.created_at) self.assertEqual(datetime.datetime(2017,2,5,13,24,9), mongo_issue.updated_at) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), mongo_issue.reporter_id) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), mongo_issue.creator_id) self.assertEqual('open', mongo_issue.status) self.assertListEqual(['Solver', 'Support'], mongo_issue.labels)
def test_store_issue_two_times(self, mock_people): mock_people.return_value = ObjectId('5899f79cfc263613115e5ccb') gh_backend = GithubBackend(self.conf, self.issues_system_id, self.project_id) gh_backend.store_issue(self.issue_6131) gh_backend.store_issue(self.issue_6131) mongo_issue = Issue.objects(external_id='6131').all() self.assertEqual(1, len(mongo_issue))
def test_store_events_two_times(self, mock_people, mock_request): mock_people.return_value = ObjectId('5899f79cfc263613115e5ccb') mock_request.return_value = self.events_issue_6131 gh_backend = GithubBackend(self.conf, self.issues_system_id, self.project_id) gh_backend.store_issue(self.issue_6131) gh_backend._process_events('6131', Issue.objects(external_id='6131').get()) gh_backend._process_events('6131', Issue.objects(external_id='6131').get()) mongo_events = Event.objects.order_by('+created_at', '+external_id') self.assertEqual(6, len(mongo_events))
def test_store_comments(self, mock_people, mock_request): mock_people.return_value = ObjectId('5899f79cfc263613115e5ccb') mock_request.return_value = self.comments_issue_6131 gh_backend = GithubBackend(self.conf, self.issues_system_id, self.project_id) gh_backend.store_issue(self.issue_6131) mongo_issue = Issue.objects(external_id='6131').get() gh_backend._process_comments('6131', mongo_issue) mongo_comments = IssueComment.objects.order_by('+created_at', '+external_id') self.assertEqual(3, len(mongo_comments)) comment = mongo_comments[0] self.assertEqual(277513605, comment.external_id) self.assertEqual(mongo_issue.id, comment.issue_id) self.assertEqual(datetime.datetime(2017, 2, 5, 11, 27, 17), comment.created_at) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), comment.author_id) self.assertEqual("Might be interesting for @naderman to look at as it seems to happen with a minimal " "subset of packages, but can you please share the smallest possible composer.json you " "use to reproduce this?", comment.comment) comment = mongo_comments[1] self.assertEqual(277519109, comment.external_id) self.assertEqual(mongo_issue.id, comment.issue_id) self.assertEqual(datetime.datetime(2017, 2, 5, 13, 15, 54), comment.created_at) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), comment.author_id) self.assertEqual("Thanks for checking.\r\n\r\nI can try, but I suspect it only happens in combination with " "starting off with a drupal-project. I just tried the last two commands (adding the repo and" " requiring it) after initializing a new and empty composer.json and then it works " "fine.\r\n\r\nI guess it is the combination of depending on drupal/core which has the same " "dependencies as drupal-core-strict, just not as strict. But testing that alone also doesn't " "really give the same. Whe I just run composer require drupal/core and then try to add mine " "then I do get conflicts, but they go away after a rm -rf composer.lock vendor/.\r\n\r\nSo as" " far as I see, it only happens when you actually start of with drupal-project.\r\n\r\n", comment.comment) comment = mongo_comments[2] self.assertEqual(277519551, comment.external_id) self.assertEqual(mongo_issue.id, comment.issue_id) self.assertEqual(datetime.datetime(2017, 2, 5, 13, 23, 43), comment.created_at) self.assertEqual(ObjectId('5899f79cfc263613115e5ccb'), comment.author_id) self.assertEqual("Thanks for helping. I did some testing a while ago over in" " https://gist.github.com/webflo/5d8a2310734a9089eb67ab5ec85ce1cd\r\n\r\nIt looks like that " "is works if i add it to the composer.json and run ``composer update`` on the whole set. " "``composer update --with-dependencies`` or ``composer require --update-with-dependencies``" " does not work.", comment.comment)