gerrit/polygerrit-ui/app/BUILD
Han-Wen Nienhuys 5cd765a382 Make zip generation (more) reproducible
The 'touch' command uses the system default timezone if none is
supplied. This makes zip files dependent on the timezone of the
generating machine.

Zip by default stores extended attributes (eg. ctime, atime) on Unix
systems. These can be further sources of non-determinism, so switch it
off with --no-extra

Change-Id: I7e102be7368ef339cbaf47524b90688c32a09238
2018-04-24 18:34:22 +02:00

204 lines
3.9 KiB
Python

package(
default_visibility = ["//visibility:public"],
)
load(":rules.bzl", "polygerrit_bundle")
load("//tools/bzl:genrule2.bzl", "genrule2")
load("//tools/bzl:js.bzl", "bower_component_bundle")
polygerrit_bundle(
name = "polygerrit_ui",
srcs = glob(
[
"**/*.html",
"**/*.js",
],
exclude = [
"bower_components/**",
"test/**",
"**/*_test.html",
],
),
outs = ["polygerrit_ui.zip"],
app = "elements/gr-app.html",
)
bower_component_bundle(
name = "test_components",
testonly = 1,
deps = [
"//lib/js:iron-test-helpers",
"//lib/js:test-fixture",
"//lib/js:web-component-tester",
"//polygerrit-ui:polygerrit_components.bower_components",
],
)
filegroup(
name = "pg_code",
srcs = glob(
[
"**/*.html",
"**/*.js",
],
exclude = [
"bower_components/**",
],
),
)
filegroup(
name = "bower_components",
srcs = glob(
[
"bower_components/**/*.html",
"bower_components/**/*.js",
],
),
)
genrule2(
name = "pg_code_zip",
srcs = [":pg_code"],
outs = ["pg_code.zip"],
cmd = " && ".join([
("tar -hcf- $(locations :pg_code) |" +
" tar --strip-components=2 -C $$TMP/ -xf-"),
"cd $$TMP",
"TZ=UTC",
"export TZ",
"find . -exec touch -t 198001010000 '{}' ';'",
"zip -rq $$ROOT/$@ *",
]),
)
sh_test(
name = "wct_test",
size = "enormous",
srcs = ["wct_test.sh"],
data = [
"test/common-test-setup.html",
"test/index.html",
":pg_code.zip",
":test_components.zip",
],
# Should not run sandboxed.
tags = [
"local",
"manual",
],
)
sh_test(
name = "lint_test",
size = "large",
srcs = ["lint_test.sh"],
data = [
".eslintrc.json",
":pg_code",
],
# Should not run sandboxed.
tags = [
"local",
"manual",
],
)
sh_test(
name = "polylint_test",
size = "large",
srcs = ["polylint_test.sh"],
data = [
":pg_code",
"//polygerrit-ui:polygerrit_components.bower_components.zip",
],
# Should not run sandboxed.
tags = [
"local",
"manual",
],
)
DIRECTORIES = [
"admin",
"change",
"change-list",
"core",
"diff",
"edit",
"plugins",
"settings",
"shared",
"gr-app",
]
[sh_test(
name = "template_test_" + directory,
size = "enormous",
srcs = ["template_test.sh"],
args = [directory],
data = [
":pg_code",
":template_test_srcs",
"//polygerrit-ui:polygerrit_components.bower_components.zip",
],
tags = [
# Should not run sandboxed.
"local",
"template",
],
) for directory in DIRECTORIES]
# Embed bundle
polygerrit_bundle(
name = "polygerrit_embed_ui",
srcs = glob(
[
"**/*.html",
"**/*.js",
],
exclude = [
"bower_components/**",
"test/**",
"**/*_test.html",
],
),
outs = ["polygerrit_embed_ui.zip"],
app = "embed/embed.html",
)
filegroup(
name = "embed_test_files",
srcs = glob(
[
"embed/**/*_test.html",
],
),
)
filegroup(
name = "template_test_srcs",
srcs = [
"template_test_srcs/convert_for_template_tests.py",
"template_test_srcs/template_test.js",
],
)
sh_test(
name = "embed_test",
size = "small",
srcs = ["embed_test.sh"],
data = [
"embed/test.html",
"test/common-test-setup.html",
":embed_test_files",
":polygerrit_embed_ui.zip",
":test_components.zip",
],
# Should not run sandboxed.
tags = [
"local",
"manual",
],
)