summaryrefslogtreecommitdiffstats
path: root/hugolib/resource_chain_babel_test.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-04-28 14:02:41 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-04-29 10:51:33 +0200
commit6add6d77b48cf0aab8b39d7a2bddedb1aa2a52b8 (patch)
treec096c3421db8932e6d06eca533646c58b5ddaa93 /hugolib/resource_chain_babel_test.go
parent2a171ff1c5d9b1603fe78c67d2d894bb2efccc8b (diff)
Rename transpileJS to babel
And add a test. Updates #5764
Diffstat (limited to 'hugolib/resource_chain_babel_test.go')
-rw-r--r--hugolib/resource_chain_babel_test.go127
1 files changed, 127 insertions, 0 deletions
diff --git a/hugolib/resource_chain_babel_test.go b/hugolib/resource_chain_babel_test.go
new file mode 100644
index 000000000..c9ddb2140
--- /dev/null
+++ b/hugolib/resource_chain_babel_test.go
@@ -0,0 +1,127 @@
+// Copyright 2020 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package hugolib
+
+import (
+ "os"
+ "os/exec"
+ "path/filepath"
+ "runtime"
+ "testing"
+
+ "github.com/gohugoio/hugo/htesting"
+
+ "github.com/spf13/viper"
+
+ qt "github.com/frankban/quicktest"
+
+ "github.com/gohugoio/hugo/hugofs"
+
+ "github.com/gohugoio/hugo/common/loggers"
+)
+
+func TestResourceChainBabel(t *testing.T) {
+ if !isCI() {
+ t.Skip("skip (relative) long running modules test when running locally")
+ }
+
+ if runtime.GOOS == "windows" {
+ t.Skip("skip npm test on Windows")
+ }
+
+ wd, _ := os.Getwd()
+ defer func() {
+ os.Chdir(wd)
+ }()
+
+ c := qt.New(t)
+
+ packageJSON := `{
+ "scripts": {},
+
+ "devDependencies": {
+ "@babel/cli": "7.8.4",
+ "@babel/core": "7.9.0",
+ "@babel/preset-env": "7.9.5"
+ }
+}
+`
+
+ babelConfig := `
+console.error("Hugo Environment:", process.env.HUGO_ENVIRONMENT );
+
+module.exports = {
+ presets: ["@babel/preset-env"],
+};
+
+`
+
+ js := `
+/* A Car */
+class Car {
+ constructor(brand) {
+ this.carname = brand;
+ }
+}
+`
+
+ workDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-test-babel")
+ c.Assert(err, qt.IsNil)
+ defer clean()
+
+ v := viper.New()
+ v.Set("workingDir", workDir)
+ v.Set("disableKinds", []string{"taxonomyTerm", "taxonomy", "page"})
+ b := newTestSitesBuilder(t).WithLogger(loggers.NewWarningLogger())
+
+ // Need to use OS fs for this.
+ b.Fs = hugofs.NewDefault(v)
+ b.WithWorkingDir(workDir)
+ b.WithViper(v)
+ b.WithContent("p1.md", "")
+
+ b.WithTemplates("index.html", `
+{{ $options := dict "noComments" true }}
+{{ $transpiled := resources.Get "js/main.js" | babel -}}
+Transpiled: {{ $transpiled.Content | safeJS }}
+
+`)
+
+ jsDir := filepath.Join(workDir, "assets", "js")
+ b.Assert(os.MkdirAll(jsDir, 0777), qt.IsNil)
+ b.WithSourceFile("assets/js/main.js", js)
+ b.WithSourceFile("package.json", packageJSON)
+ b.WithSourceFile("babel.config.js", babelConfig)
+
+ b.Assert(os.Chdir(workDir), qt.IsNil)
+ _, err = exec.Command("npm", "install").CombinedOutput()
+ b.Assert(err, qt.IsNil)
+
+ out, err := captureStderr(func() error {
+ return b.BuildE(BuildCfg{})
+
+ })
+ // Make sure Node sees this.
+ b.Assert(out, qt.Contains, "Hugo Environment: production")
+ b.Assert(err, qt.IsNil)
+
+ b.AssertFileContent("public/index.html", `
+var Car = function Car(brand) {
+ _classCallCheck(this, Car);
+
+ this.carname = brand;
+};
+`)
+
+}