==================
Only image
==================

FROM testimage

---

(source_file
	(from_instruction
		(image_spec
			name: (image_name))))

==================
Image with tag
==================

FROM testimage:tag

---

(source_file
	(from_instruction
		(image_spec
			name: (image_name)
		    tag: (image_tag))))

==================
Image with digest
==================

FROM testimage@sha256:skgshlshg

---

(source_file
	(from_instruction
		(image_spec
			name: (image_name)
		    digest: (image_digest))))

==================
Image with tag and digest
==================

FROM testimage:tag@sha256:452525

---

(source_file
	(from_instruction
		(image_spec
			name: (image_name)
		    tag: (image_tag)
		    digest: (image_digest))))


==================
Tag and digest with as
==================

FROM sourcegraph/alpine:3.12@sha256:ce099fbcd3cf70b338fc4cb2a4e1fa9ae847de21afdb0a849a393b87d94fb174 AS monitoring_builder

---

(source_file
	(from_instruction
		(image_spec
			name: (image_name)
		    tag: (image_tag)
		    digest: (image_digest))
		as: (image_alias)))

==================
From with param
==================

FROM --platform=linux/arm64 alpine-${VERSION}-z

---

(source_file
  (from_instruction
    (param)
    (image_spec
      (image_name
        (expansion
          (variable))))))

======================================================
No spaces in image name
======================================================

FROM a b c

---

(source_file
  (ERROR
    (from_instruction
      (image_spec
	(image_name)))))

======================================================
No spaces in image name before expansion
======================================================

FROM a $b

---

(source_file
  (from_instruction
    (ERROR)
    (image_spec
      (image_name
	(expansion
	  (variable))))))

======================================================
No spaces in image name expansion
======================================================

FROM $ X

---

(source_file
  (ERROR))

======================================================
No spaces in image tag expansion
======================================================

FROM a: $B

---

(source_file
  (from_instruction
    (ERROR
      (image_name))
    (image_spec
      (image_name
	(expansion
	  (variable))))))

======================================================
No spaces in image digest
======================================================

FROM a:b@ $c

---

(source_file
  (from_instruction
    (ERROR
      (image_name)
      (image_tag))
    (image_spec
      (image_name
	(expansion
	  (variable))))))

======================================================
No spaces in image alias
======================================================

FROM a AS b c

---

(source_file
  (ERROR
    (from_instruction
      (image_spec
	(image_name))
      (image_alias))))

======================================================
No spaces in image alias expansion
======================================================

FROM a AS b $C

---

(source_file
  (from_instruction
    (image_spec
      (image_name))
    (ERROR)
    (image_alias
      (expansion
	(variable)))))
