def test_should_run()

in aws/hhvm1/lambdas/test.py [0:0]


  def test_should_run(self):
    past = (date.today() - timedelta(days=2)).strftime('%Y.%m.%d')
    future = (date.today() + timedelta(days=2)).strftime('%Y.%m.%d')

    self.assertEqual(
      activities.MakeSourceTarball({'version': '4.20.12345'}).should_run(),
      True
    )
    self.assertEqual(
      activities.MakeSourceTarball({'version': past}).should_run(),
      False
    )
    self.assertEqual(
      activities.MakeSourceTarball({'version': future}).should_run(),
      True
    )

    self.assertEqual(
      activities.MakeBinaryPackage(
        {'version': '4.27.0', 'platform': 'ubuntu-18.04-bionic'}
      ).should_run(),
      False
    )
    self.assertEqual(
      activities.MakeBinaryPackage(
        {'version': future, 'platform': 'ubuntu-18.04-bionic'}
      ).should_run(),
      True
    )

    self.assertEqual(
      activities.PublishBinaryPackages({'version': '4.27.0'}).should_run(),
      False
    )
    self.assertEqual(
      activities.PublishSourceTarball({'version': '4.27.0'}).should_run(),
      False
    )

    # we don't publish if nothing is "built_not_published"
    with patch('common.build_statuses', return_value={
      'ubuntu-18.04-bionic': 'not_built',
      'source_gpg': 'not_built',
    }):
      self.assertEqual(
        activities.PublishBinaryPackages({'version': '4.27.0'}).should_run(),
        False
      )
      self.assertEqual(
        activities.PublishSourceTarball({'version': '4.27.0'}).should_run(),
        False
      )

    # we publish even if not everything is built
    with patch('common.build_statuses', return_value={
      'debian-8-jessie': 'not_built',
      'ubuntu-18.04-bionic': 'built_not_published',
      'source': 'not_built',
      'source_gpg': 'built_not_published',
    }):
      self.assertEqual(
        activities.PublishBinaryPackages({'version': '4.27.0'}).should_run(),
        True
      )
      self.assertEqual(
        activities.PublishSourceTarball({'version': '4.27.0'}).should_run(),
        True
      )

    with patch('common.build_statuses', return_value={
      'ubuntu-18.04-bionic': 'built_not_published',
      'debian-42-zaphod': 'succeeded',
      'source': 'succeeded',
      'source_gpg': 'succeeded',
    }):
      self.assertEqual(
        activities.PublishBinaryPackages({'version': '4.27.0'}).should_run(),
        True
      )
      self.assertEqual(
        activities.PublishSourceTarball({'version': '4.27.0'}).should_run(),
        False
      )

    with patch('common.build_statuses', return_value={
      'ubuntu-18.04-bionic': 'succeeded',
      'source': 'built_not_published',
      'debian-42-zaphod': 'succeeded',
      'source_gpg': 'built_not_published',
    }):
      self.assertEqual(
        activities.PublishBinaryPackages({'version': '4.27.0'}).should_run(),
        False
      )
      self.assertEqual(
        activities.PublishSourceTarball({'version': '4.27.0'}).should_run(),
        True
      )

    # we shouldn't do a useless build_statuses() API call for nightlies
    with patch('common.build_statuses') as mock_function:
      self.assertEqual(
        activities.PublishSourceTarball({'version': future}).should_run(),
        False
      )
      self.assertEqual(mock_function.called, False)

    self.assertEqual(
      activities.PublishDockerImages({'version': '4.27.0'}).should_run(),
      False
    )
    self.assertEqual(
      activities.PublishDockerImages({'version': past}).should_run(),
      False
    )
    self.assertEqual(
      activities.PublishDockerImages({'version': future}).should_run(),
      True
    )