// Copyright (C) 2021 xaizek <xaizek@posteo.net>
//
// This file is part of zograscope.
//
// zograscope is free software: you can redistribute it and/or modify
// it under the terms of version 3 of the GNU Affero General Public License as
// published by the Free Software Foundation.
//
// zograscope is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with zograscope. If not, see <http://www.gnu.org/licenses/>.
// These are tests of comparison and all of its phases.
#include "Catch/catch.hpp"
#include "tests.hpp"
TEST_CASE("Lua functions are matched", "[ts-lua][comparison]")
{
diffTsLua(R"(
function f(a)
a.call()
b.call() --- Deletions
end
function g(a)
end
)", R"(
function f(a)
a.call()
end
function g(a)
b.call() --- Additions
end
)");
}
TEST_CASE("Variable is moved to table value", "[ts-lua][comparison]")
{
diffTsLua(R"(
function f()
something()
return
text --- Moves
end
)", R"(
function f()
something()
return
{ --- Additions
text --- Additions
= --- Additions
text --- Moves
} --- Additions
end
)");
}
TEST_CASE("Complex update picks correct statement", "[ts-lua][comparison]")
{
diffTsLua(R"(
local name = prefix --- Deletions
if name == nil then --- Mixed
name = vifm.fnamemodify(current, ':t:r:r') --- Mixed
end
)", R"(
local outname = vifm.fnamemodify(current, ':t:r') --- Additions
if ext == 'tar' then --- Mixed
outname = vifm.fnamemodify(outname, ':r') --- Mixed
end
)");
}
TEST_CASE("Lua tables are nested", "[ts-lua][comparison]")
{
diffTsLua(R"(
function f()
something()
return {} --- Deletions
end
)", R"(
function f()
something()
return { lines = {} } --- Additions
end
)");
}
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/zograscope
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/zograscope
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master