#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

LOCALE_SRCDIR = $(srcdir)/l10n

EXTERNALLY_MANAGED_MAKE_FILE := 1
STANDALONE_MAKEFILE := 1
JAR_MANIFEST := $(srcdir)/jar.mn

include $(topsrcdir)/config/config.mk

XPI_NAME = test_jar_mn

ACDEFINES += \
	-DAB_CD=ab-X-stuff \
	$(NULL)

MY_MANIFEST = $(if $(USE_EXTENSION_MANIFEST), $(FINAL_TARGET)/chrome.manifest, $(FINAL_TARGET)/chrome/test.manifest)
REF_MANIFEST = $(if $(USE_EXTENSION_MANIFEST),chrome.manifest,test.manifest)

check-%::
	if test -d $(FINAL_TARGET); then rm -rf $(FINAL_TARGET); fi;
	$(MAKE) realchrome MOZ_CHROME_FILE_FORMAT=$*
	@echo 'Comparing manifests...'
	@if ! sort $(MY_MANIFEST) | diff --text -U 0 $(srcdir)/../$(REF_MANIFEST).$* - ; then \
	  echo 'TEST-UNEXPECTED-FAIL | config/tests/$(REF_MANIFEST).$* | differing content in manifest!' ; \
	  false; \
	fi
	@if [ $* = 'jar' ]; then \
	  $(UNZIP) -d $(FINAL_TARGET)/chrome/test $(FINAL_TARGET)/chrome/test.jar; \
	fi
	@echo 'Comparing packages...'
	@if ! diff -ur $(srcdir)/../ref-simple $(FINAL_TARGET)/chrome/test ; then\
	  echo 'TEST-UNEXPECTED-FAIL | config/tests/ref-simple | different content in jar' ; \
	  false; \
	fi
