LINUX.ORG.RU

Контрольная сумма/версионирование javascript файла

 , ,


1

1

Не придумал хорошего названия для темы, но суть такая
Есть набор QUnit тестов и есть js файл с тестами
По итогам прогона тестов результирующая HTML страница сохраняется в качестве протокола.
Для повторяемости и отладки, мне нужно как-то знать на какой версии набора тестов был сделан прогон.
Думаю, мне бы хватило вывода чексуммы этого JS файла в заголовке страницы.
Никакой системы сборки нет, это простейшей решение из двух файлов, поэтому мне подойдёт любой костыль или наколенное решение.
В идеале, всё должно работать на клиентской стороне

★★★★★

Не проще ли привернуть continious integration и хранить историю?

Можно например через travis-ci дергать https://saucelabs.com/

Vit ★★★★★ ()
Ответ на: комментарий от Vit

Не-не-не, это реально оверхед для моего случая с единственным файлом. Проще тогда руками писать в него версию и мне возможно так и придётся сделать, если не будет других вариантов.
Вообще основной usecase это когда я пошлю этот набор тестов другому человеку и чтобы при анализе найденных проблем быть уверенным что мы используем идентичные наборы.
Централизованного хранилища нет, не те масштабы и сложность, чтобы его заводить

zolden ★★★★★ ()
Ответ на: комментарий от zolden

Вообще основной usecase это когда я пошлю этот набор тестов другому человеку и чтобы при анализе найденных проблем быть уверенным что мы используем идентичные наборы.

Используйте системы контроля версий.

theNamelessOne ★★★★★ ()

Думаю, мне бы хватило вывода чексуммы этого JS файла в заголовке страницы.

А вообще, sha1sum можно и на JS посчитать.

theNamelessOne ★★★★★ ()
Ответ на: комментарий от zolden

Централизованного хранилища нет, не те масштабы и сложность, чтобы его заводить

Можно попробовать запускать через gulp/grunt, который в конце контрольную сумму допишет.

Но вообще, зря ты так. У тебя уже всплыла проблема с синхронизацией, а ты пытаешься еще больше костылей добавить. Посмотри например «zuul», привернуть CI намного проще чем ты думаешь.

Vit ★★★★★ ()
Ответ на: комментарий от theNamelessOne

Так вопрос как это сделать. Как сделать некий finger для скрипта из тега script src.
Может можно его просто как строку получить, а потом хеш этой строки взять?

zolden ★★★★★ ()
Ответ на: комментарий от zolden

Может можно его просто как строку получить, а потом хеш этой строки взять?

Ну так сделай XHR-запрос, а потом считай sha1 от результата (правда, нужно, чтобы скрипт раздавался веб-сервером, а не брался из файловой системы).

index.html:

<html>
  <head>
    <meta charset="utf-8">
    <title>Tests</title>
    <script id="script" src="script.js"></script>
    <script src="sha1.js"></script>
  </head>
  <body>
    <h1 id="headline">Tests</h1>
    <script>
      const headline = document.getElementById('headline')

      fetch(document.getElementById('script').src)
        .then((res) => res.text())
        .then((res) => headline.textContent += ` (${Sha1.hash(res)})`)
    </script>
  </body>
</html>

script.js:

console.log('Script loaded')

sha1.js взят из первого результата гугловского запроса “javascript sha1”.

В результате после загрузки “#headline” поменяется на “Tests (b2e6a34c35dd2fd86cdea9dcf51e013fefb8b050)”.

PS. Надо будет ещё убедиться, чтобы запрос закешировался (зависит от настроек веб-сервера).

theNamelessOne ★★★★★ ()
Последнее исправление: theNamelessOne (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.