code: def test_alias_rule(t):
      """Basic alias rule test."""
  
      t.write(
          "jamroot.jam",
          """\
  exe a : a.cpp ;
  exe b : b.cpp ;
  exe c : c.cpp ;
  
  alias bin1 : a ;
  alias bin2 : a b ;
  
  alias src : s.cpp ;
  exe hello : hello.cpp src ;
  """,
      )
  
      t.write("a.cpp", "int main() {}\n")
      t.copy("a.cpp", "b.cpp")
      t.copy("a.cpp", "c.cpp")
      t.copy("a.cpp", "hello.cpp")
      t.write("s.cpp", "")
  
      # Check that targets to which "bin1" refers are updated, and only those.
      t.run_build_system(["bin1"])
      t.expect_addition(
          BoostBuild.List("bin/$toolset/debug*/") * "a.exe a.obj"
      )
      t.expect_nothing_more()
  
      # Try again with "bin2"
      t.run_build_system(["bin2"])
      t.expect_addition(
          BoostBuild.List("bin/$toolset/debug*/") * "b.exe b.obj"
      )
      t.expect_nothing_more()
  
      # Try building everything, making sure 'hello' target is created.
      t.run_build_system()
      t.expect_addition(
          BoostBuild.List("bin/$toolset/debug*/")
          * "hello.exe hello.obj"
      )
      t.expect_addition("bin/$toolset/debug*/s.obj")
      t.expect_addition(
          BoostBuild.List("bin/$toolset/debug*/") * "c.exe c.obj"
      )
      t.expect_nothing_more()
  
label_desc: Use image node_id 1 for calling a global function with example usage: test_alias_rule(t) without return types