code: def test_params_without_targets(tmp_dir, dvc):
      dvc.stage.add(
          name="test",
          cmd="echo params.yaml",
          params=[{"params.yaml": None}],
      )
      assert dvc.status() == {
          "test": [{"changed deps": {"params.yaml": "deleted"}}]
      }
  
      (tmp_dir / "params.yaml").touch()
      assert dvc.status() == {
          "test": [{"changed deps": {"params.yaml": "new"}}]
      }
  
      dvc.commit("test", force=True)
      # make sure that we are able to keep track of "empty" contents
      # and be able to distinguish between no-lock-entry and empty-lock-entry.
      assert (tmp_dir / "dvc.lock").parse() == {
          "schema": "2.0",
          "stages": {
              "test": {
                  "cmd": "echo params.yaml",
                  "params": {"params.yaml": {}},
              }
          },
      }
      assert dvc.status() == {}
  
      (tmp_dir / "params.yaml").dump({"foo": "foo", "bar": "bar"})
      assert dvc.status() == {
          "test": [
              {
                  "changed deps": {
                      "params.yaml": {"bar": "new", "foo": "new"}
                  }
              }
          ]
      }
      dvc.commit("test", force=True)
  
      (tmp_dir / "params.yaml").dump(
          {"foo": "foobar", "lorem": "ipsum"}
      )
      assert dvc.status() == {
          "test": [
              {
                  "changed deps": {
                      "params.yaml": {
                          "bar": "deleted",
                          "foo": "modified",
                          "lorem": "new",
                      }
                  }
              }
          ]
      }
  
file_path: dvc/tests/func/test_status.py
imports: import os
  from dvc.cli import main
  from dvc.fs import localfs
label_desc: Use image node_id 8 for calling a global function with example usage: test_params_without_targets(tmp_dir, dvc) without return types