diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 28557a955..60884992d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -299,8 +299,8 @@ jobs: run: | mkdir /tmp/old-cln cd /tmp/old-cln - wget https://github.com/ElementsProject/lightning/releases/download/v25.09/clightning-v25.09-ubuntu-24.04-amd64.tar.xz - tar -xaf clightning-v25.09-ubuntu-24.04-amd64.tar.xz + wget https://github.com/ElementsProject/lightning/releases/download/v25.12/clightning-v25.12-ubuntu-24.04-amd64.tar.xz + tar -xaf clightning-v25.12-ubuntu-24.04-amd64.tar.xz - name: Switch network if: ${{ matrix.TEST_NETWORK == 'liquid-regtest' }} diff --git a/Makefile b/Makefile index 5b5f33b74..a5ab6dc8e 100644 --- a/Makefile +++ b/Makefile @@ -7,10 +7,10 @@ VERSION ?= $(shell git describe --tags --always --dirty=-modded --abbrev=7 2>/de $(info Building version $(VERSION)) # Next release. -CLN_NEXT_VERSION := v25.12 +CLN_NEXT_VERSION := v26.04 # Previous release (for downgrade testing) -CLN_PREV_VERSION := v25.09 +CLN_PREV_VERSION := v25.12 # --quiet / -s means quiet, dammit! ifeq ($(findstring s,$(word 1, $(MAKEFLAGS))),s) diff --git a/tests/test_downgrade.py b/tests/test_downgrade.py index e460f3db2..939aa9938 100644 --- a/tests/test_downgrade.py +++ b/tests/test_downgrade.py @@ -84,7 +84,8 @@ def test_downgrade(node_factory, executor): # Should be able to upgrade without any trouble l1.daemon.opts['database-upgrade'] = True l1.start() - assert l1.daemon.is_in_log("Updating database from version") + # Note: currently a noop, this will break on first database upgrade. + assert not l1.daemon.is_in_log("Updating database from version 280") l1.connect(l2) inv2 = l2.rpc.invoice(1000, 'test_downgrade2', 'test_downgrade2') @@ -96,8 +97,8 @@ def test_downgrade(node_factory, executor): assert bias['bias'] == 1 -def test_downgrade_fail(node_factory, executor): - """If we have created as node bias, we cannot downgrade""" +def test_downgrade_bias(node_factory, executor): + """If we have created as node bias, we *can* downgrade this version.""" l1, l2 = node_factory.line_graph(2, opts={'may_reconnect': True}, wait_for_announce=True) l1.rpc.askrene_bias_node('xpay', l2.info['id'], 'in', 1) @@ -108,5 +109,4 @@ def test_downgrade_fail(node_factory, executor): p = subprocess.Popen(cmd_line, stdout=subprocess.DEVNULL, stderr=subprocess.PIPE) _, err = p.communicate(timeout=TIMEOUT) - assert p.returncode == ERROR_DBFAIL - assert 'Askrene has a node bias, which is not supported in v25.09' in err.decode('utf-8') + assert p.returncode == 0 diff --git a/tests/test_pay.py b/tests/test_pay.py index 06b828125..18bd3e1eb 100644 --- a/tests/test_pay.py +++ b/tests/test_pay.py @@ -6082,8 +6082,8 @@ def test_fetch_no_description_with_amount(node_factory): def test_decodepay(node_factory, chainparams): """Test we don't break (deprecated) decodepay command""" - l1 = node_factory.get_node(options={'allow-deprecated-apis': True}, - broken_log="DEPRECATED API USED decodepay") + l1 = node_factory.get_node(options={'allow-deprecated-apis': True, + 'i-promise-to-fix-broken-api-user': 'decodepay'}) addr1 = l1.rpc.newaddr('bech32')['bech32'] addr2 = '2MxqzNANJNAdMjHQq8ZLkwzooxAFiRzXvEz' if not chainparams['elements'] else 'XGx1E2JSTLZLmqYMAo3CGpsco85aS7so33' diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 6e2a94ff1..b50a3479a 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -4177,9 +4177,9 @@ def test_sql(node_factory, bitcoind): def test_sql_deprecated(node_factory, bitcoind): l1, l2 = node_factory.line_graph(2, opts=[{'allow-deprecated-apis': True}, {}]) - # l1 allows it, l2 doesn't - ret = l1.rpc.sql("SELECT max_total_htlc_in_msat FROM peerchannels;") - assert ret == {'rows': [[-1]]} + # Even with deprecated APIs, this isn't there. + with pytest.raises(RpcError, match="Deprecated column table peerchannels.max_total_htlc_in_msat"): + l1.rpc.sql("SELECT max_total_htlc_in_msat FROM peerchannels;") # It's deprecated in l2, so that will fail! with pytest.raises(RpcError, match="Deprecated column table peerchannels.max_total_htlc_in_msat"): diff --git a/tests/test_xpay.py b/tests/test_xpay.py index 08219dedc..e576d1541 100644 --- a/tests/test_xpay.py +++ b/tests/test_xpay.py @@ -674,12 +674,12 @@ def test_xpay_no_mpp(node_factory, chainparams): @pytest.mark.parametrize("deprecations", [False, True]) def test_xpay_bolt12_no_mpp(node_factory, chainparams, deprecations): - """In deprecated mode, we use MPP even if BOLT12 invoice doesn't say we should""" + """If we force it, we use MPP even if BOLT12 invoice doesn't say we should""" # l4 needs dev-allow-localhost so it considers itself to have an advertized address, and doesn't create a blinded path from l2/l4. opts = [{}, {}, {'dev-force-features': -17, 'dev-allow-localhost': None}, {}] if deprecations is True: for o in opts: - o['allow-deprecated-apis'] = True + o['i-promise-to-fix-broken-api-user'] = 'xpay.ignore_bolt12_mpp' o['broken_log'] = 'DEPRECATED API USED: xpay.ignore_bolt12_mpp' l1, l2, l3, l4 = node_factory.get_nodes(4, opts=opts) diff --git a/tools/lightning-downgrade.c b/tools/lightning-downgrade.c index 6b52dffb8..3bf41c6cb 100644 --- a/tools/lightning-downgrade.c +++ b/tools/lightning-downgrade.c @@ -168,7 +168,7 @@ static const char *downgrade_askrene_layers(const tal_t *ctx, struct db *db) static const struct db_version db_versions[] = { { "v25.09", 276, downgrade_askrene_layers, false }, - /* When we implement v25.12 downgrade: { "v25.12", 280, ???}, */ + { "v25.12", 280, NULL, true }, }; static const struct db_version *version_db(const char *version)