code: def test_group_select_blocklist(request):
      conf = Config.load_yaml(
          pathlib.Path(request.node.fspath).parent
          / "fixtures"
          / "tasks.yaml"
      )
      conf.validate()
  
      # we respect the nightly blocklist
      nightly_out = conf.select(groups=["nightly"])
      assert nightly_out.keys() >= {"test-a-test", "nightly-fine"}
  
      # but if a task is not blocked in both groups, it shows up at least once
      test_nightly_out = conf.select(groups=["nightly", "test"])
      assert test_nightly_out.keys() >= {
          "test-a-test-two",
          "test-a-test",
          "nightly-fine",
      }
  
      # but can then over-ride by requesting the task
      test_nightly_out = conf.select(
          tasks=["nightly-not-fine", "nightly-fine"],
          groups=["nightly", "test"],
      )
      assert test_nightly_out.keys() >= {
          "test-a-test-two",
          "test-a-test",
          "nightly-fine",
          "nightly-not-fine",
      }
  
      # and we can glob with the blocklist too!
      test_nightly_no_test_out = conf.select(groups=["nightly-no-test"])
      assert test_nightly_no_test_out.keys() >= {
          "nightly-fine",
          "nightly-not-fine",
      }
  
file_path: arrow/dev/archery/archery/crossbow/tests/test_core.py
imports: from archery.utils.source import ArrowSources
  from archery.crossbow import Config, Queue
  import pathlib
  from unittest import mock
label_desc: Use image node_id 4 for calling a global function with example usage: test_group_select_blocklist(request) without return types