code: def test_build_artifact_notebook_job_no_program(
      runner, tmp_path, capfd
  ):
      metadata = {
          "program": "blah/test.ipynb",
          "args": ["--test", "test"],
          "python": "3.7",
      }
      artifact_name = str_of_length(129)
  
      with runner.isolated_filesystem():
          with open("requirements.txt", "w") as f:
              f.write("numpy==1.19.0")
              f.write("wandb")
          with open("wandb-metadata.json", "w") as f:
              f.write(json.dumps(metadata))
          settings = SettingsStatic(
              make_proto_settings(
                  **{
                      "files_dir": "./",
                      "disable_job_creation": False,
                      "_jupyter": True,
                      "_jupyter_root": str(tmp_path),
                  }
              )
          )
          job_builder = JobBuilder(settings)
          job_builder._logged_code_artifact = {
              "id": "testtest",
              "name": artifact_name,
          }
          artifact = job_builder.build()
  
          assert not artifact
          out = capfd.readouterr().err
          assert (
              "No program path found when generating artifact job source for a non-colab notebook run. See https://docs.wandb.ai/guides/launch/create-job"
              in out
          )
  
imports: import json
  import os
  import random
  import string
  from google.protobuf.wrappers_pb2 import BoolValue, StringValue
  from wandb.proto import wandb_settings_pb2
  from wandb.sdk.internal.job_builder import JobBuilder
  from wandb.sdk.internal.settings_static import SettingsStatic
  from wandb.util import make_artifact_name_safe
label_desc: Use image node_id 7 for calling a global function with example usage: test_build_artifact_notebook_job_no_program(runner, tmp_path, capfd) without return types