|
1 | 1 | import datetime
|
2 |
| -from unittest import mock |
3 | 2 |
|
4 | 3 | from django.contrib.auth.models import User
|
5 | 4 | from django.test import TestCase
|
|
14 | 13 | GITLAB_EXTERNAL_VERSION_NAME,
|
15 | 14 | )
|
16 | 15 | from readthedocs.builds.models import Build, Version
|
17 |
| -from readthedocs.core.utils import trigger_build |
18 |
| -from readthedocs.doc_builder.exceptions import DuplicatedBuildError |
19 |
| -from readthedocs.projects.models import Feature, Project |
| 16 | +from readthedocs.projects.models import Project |
20 | 17 |
|
21 | 18 |
|
22 | 19 | class BuildModelTests(TestCase):
|
@@ -482,112 +479,3 @@ def test_can_rebuild_with_old_build(self):
|
482 | 479 |
|
483 | 480 | self.assertFalse(old_external_build.can_rebuild)
|
484 | 481 | self.assertTrue(latest_external_build.can_rebuild)
|
485 |
| - |
486 |
| - |
487 |
| -@mock.patch('readthedocs.projects.tasks.builds.update_docs_task') |
488 |
| -class DeDuplicateBuildTests(TestCase): |
489 |
| - |
490 |
| - def setUp(self): |
491 |
| - self.project = get(Project) |
492 |
| - self.version = get( |
493 |
| - Version, |
494 |
| - project=self.project, |
495 |
| - type=BRANCH, |
496 |
| - ) |
497 |
| - |
498 |
| - get( |
499 |
| - Feature, |
500 |
| - feature_id=Feature.DEDUPLICATE_BUILDS, |
501 |
| - projects=[self.project], |
502 |
| - ) |
503 |
| - |
504 |
| - def test_trigger_duplicated_build_by_commit(self, update_docs_task): |
505 |
| - """ |
506 |
| - Trigger a build for the same commit twice. |
507 |
| -
|
508 |
| - The second build should be marked as NOOP. |
509 |
| - """ |
510 |
| - self.assertEqual(Build.objects.count(), 0) |
511 |
| - trigger_build(self.project, self.version, commit='a1b2c3') |
512 |
| - self.assertEqual(Build.objects.count(), 1) |
513 |
| - build = Build.objects.first() |
514 |
| - self.assertEqual(build.state, 'triggered') |
515 |
| - |
516 |
| - trigger_build(self.project, self.version, commit='a1b2c3') |
517 |
| - self.assertEqual(Build.objects.count(), 2) |
518 |
| - build = Build.objects.first() |
519 |
| - self.assertEqual(build.error, DuplicatedBuildError.message) |
520 |
| - self.assertEqual(build.success, False) |
521 |
| - self.assertEqual(build.exit_code, DuplicatedBuildError.exit_code) |
522 |
| - self.assertEqual(build.status, DuplicatedBuildError.status) |
523 |
| - self.assertEqual(build.state, "cancelled") |
524 |
| - |
525 |
| - def test_trigger_duplicated_finshed_build_by_commit(self, update_docs_task): |
526 |
| - """ |
527 |
| - Trigger a build for the same commit twice. |
528 |
| -
|
529 |
| - The second build should not be marked as NOOP if the previous |
530 |
| - duplicated builds are in 'finished' state. |
531 |
| - """ |
532 |
| - self.assertEqual(Build.objects.count(), 0) |
533 |
| - trigger_build(self.project, self.version, commit='a1b2c3') |
534 |
| - self.assertEqual(Build.objects.count(), 1) |
535 |
| - |
536 |
| - # Mark the build as finished |
537 |
| - build = Build.objects.first() |
538 |
| - build.state = 'finished' |
539 |
| - build.save() |
540 |
| - build.refresh_from_db() |
541 |
| - |
542 |
| - trigger_build(self.project, self.version, commit='a1b2c3') |
543 |
| - self.assertEqual(Build.objects.count(), 2) |
544 |
| - build = Build.objects.first() |
545 |
| - self.assertEqual(build.state, 'triggered') |
546 |
| - self.assertIsNone(build.status) |
547 |
| - |
548 |
| - def test_trigger_duplicated_build_by_version(self, update_docs_task): |
549 |
| - """ |
550 |
| - Trigger a build for the same version. |
551 |
| -
|
552 |
| - The second build should be marked as NOOP if there is already a build |
553 |
| - for the same project and version on 'triggered' state. |
554 |
| - """ |
555 |
| - self.assertEqual(Build.objects.count(), 0) |
556 |
| - trigger_build(self.project, self.version, commit=None) |
557 |
| - self.assertEqual(Build.objects.count(), 1) |
558 |
| - build = Build.objects.first() |
559 |
| - self.assertEqual(build.state, 'triggered') |
560 |
| - |
561 |
| - trigger_build(self.project, self.version, commit=None) |
562 |
| - self.assertEqual(Build.objects.count(), 2) |
563 |
| - build = Build.objects.first() |
564 |
| - self.assertEqual(build.error, DuplicatedBuildError.message) |
565 |
| - self.assertEqual(build.success, False) |
566 |
| - self.assertEqual(build.exit_code, DuplicatedBuildError.exit_code) |
567 |
| - self.assertEqual(build.status, DuplicatedBuildError.status) |
568 |
| - self.assertEqual(build.state, "cancelled") |
569 |
| - |
570 |
| - def test_trigger_duplicated_non_triggered_build_by_version(self, update_docs_task): |
571 |
| - """ |
572 |
| - Trigger a build for the same version. |
573 |
| -
|
574 |
| - The second build should not be marked as NOOP because the previous build |
575 |
| - for the same project and version is on 'building' state (any non 'triggered') |
576 |
| - """ |
577 |
| - self.assertEqual(Build.objects.count(), 0) |
578 |
| - trigger_build(self.project, self.version, commit=None) |
579 |
| - self.assertEqual(Build.objects.count(), 1) |
580 |
| - build = Build.objects.first() |
581 |
| - self.assertEqual(build.state, 'triggered') |
582 |
| - |
583 |
| - # Mark the build as building |
584 |
| - build = Build.objects.first() |
585 |
| - build.state = 'building' |
586 |
| - build.save() |
587 |
| - build.refresh_from_db() |
588 |
| - |
589 |
| - trigger_build(self.project, self.version, commit=None) |
590 |
| - self.assertEqual(Build.objects.count(), 2) |
591 |
| - build = Build.objects.first() |
592 |
| - self.assertEqual(build.state, 'triggered') |
593 |
| - self.assertIsNone(build.status) |
0 commit comments